Skip to content

Commit

Permalink
Ensure side effects are preserved for Arm64 (dotnet#105963)
Browse files Browse the repository at this point in the history
  • Loading branch information
tannergooding authored Aug 5, 2024
1 parent 684998f commit 73bffaf
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/coreclr/jit/gentree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31735,6 +31735,7 @@ GenTree* Compiler::gtFoldExprHWIntrinsic(GenTreeHWIntrinsic* tree)
// op3 has side effects, this would require us to append a new statement
// to ensure that it isn't lost, which isn't safe to do from the general
// purpose handler here. We'll recognize this and mark it in VN instead
break;
}

// op3 has no side effects, so we can return op2 directly
Expand Down
44 changes: 44 additions & 0 deletions src/tests/JIT/Regression/JitBlue/Runtime_105818/Runtime_105818.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;
using System.Runtime.CompilerServices;
using System.Numerics;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.Arm;
using Xunit;

// Generated by Fuzzlyn v2.2 on 2024-08-01 14:42:46
// Run on Arm64 MacOS
// Seed: 17520120436908093806-vectort,vector64,vector128,armadvsimd,armadvsimdarm64,armaes,armarmbase,armarmbasearm64,armcrc32,armcrc32arm64,armdp,armrdm,armrdmarm64,armsha1,armsha256
// Reduced from 35.4 KiB to 0.6 KiB in 00:00:19
// Debug: Throws 'System.NullReferenceException'
// Release: Runs successfully

public class Runtime_105818
{
private static Vector64<long> s_1;

[Fact]
public static void TestEntryPoint()
{
if (AdvSimd.IsSupported)
{
Assert.Throws<NullReferenceException>(() => M1());
}
}

private static void M1()
{
var vr2 = Vector64.Create<uint>(4294967295U);
var vr3 = Vector64.Create<uint>(0);
AdvSimd.BitwiseSelect(vr2, vr3, Vector64.CreateScalar(M2()));
System.Console.WriteLine(s_1);
}

private static uint M2()
{
sbyte[] var0 = default(sbyte[]);
return (uint)var0[0];
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Optimize>True</Optimize>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildProjectName).cs" />
</ItemGroup>
</Project>

0 comments on commit 73bffaf

Please sign in to comment.