[release/6.0] Fix incorrect VN when folding GT_NEG(GT_MUL(A, C)) (#57686)
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Thu, 19 Aug 2021 16:09:14 +0000 (09:09 -0700)
committerGitHub <noreply@github.com>
Thu, 19 Aug 2021 16:09:14 +0000 (09:09 -0700)
* Fix incorrect VN when folding GT_NEG(GT_MUL(A, C))

Fixes #57640

* Fix test name

Co-authored-by: Jakob Botsch Nielsen <jakob.botsch.nielsen@gmail.com>
src/coreclr/jit/morph.cpp
src/tests/JIT/Regression/JitBlue/Runtime_57640/Runtime_57640.cs [new file with mode: 0644]
src/tests/JIT/Regression/JitBlue/Runtime_57640/Runtime_57640.csproj [new file with mode: 0644]

index 2ff2902..2b50b72 100644 (file)
@@ -13177,6 +13177,7 @@ DONE_MORPHING_CHILDREN:
                         GenTree* newOp2 = gtNewIconNode(-constVal, op1op2->TypeGet()); // -C
                         mulOrDiv->gtOp1 = newOp1;
                         mulOrDiv->gtOp2 = newOp2;
+                        mulOrDiv->SetVNsFromNode(tree);
 
                         DEBUG_DESTROY_NODE(tree);
                         DEBUG_DESTROY_NODE(op1op2);
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_57640/Runtime_57640.cs b/src/tests/JIT/Regression/JitBlue/Runtime_57640/Runtime_57640.cs
new file mode 100644 (file)
index 0000000..9067804
--- /dev/null
@@ -0,0 +1,25 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+// Generated by Fuzzlyn v1.2 on 2021-08-15 23:15:19
+// Run on .NET 6.0.0-dev on Arm Linux
+// Seed: 18219619158927602726
+// Reduced from 82.6 KiB to 0.3 KiB in 00:02:54
+// Debug: Outputs 14270
+// Release: Outputs 4294953026
+public class Runtime_57640
+{
+    static long[] s_28 = new long[]{1};
+    public static int Main()
+    {
+        bool correct = true;
+        var vr10 = s_28[0];
+        for (int vr13 = 0; vr13 < 2; vr13++)
+        {
+            uint vr12 = (uint)(0 - (-14270 * vr10));
+            correct &= vr12 == 14270;
+        }
+
+        return correct ? 100 : -1;
+    }
+}
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_57640/Runtime_57640.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_57640/Runtime_57640.csproj
new file mode 100644 (file)
index 0000000..f3e1cbd
--- /dev/null
@@ -0,0 +1,12 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+  </PropertyGroup>
+  <PropertyGroup>
+    <DebugType>None</DebugType>
+    <Optimize>True</Optimize>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="$(MSBuildProjectName).cs" />
+  </ItemGroup>
+</Project>