Skip to content

Commit

Permalink
Fix incorrect VN when folding GT_NEG(GT_MUL(A, C))
Browse files Browse the repository at this point in the history
Fixes #57640
  • Loading branch information
jakobbotsch authored and github-actions committed Aug 18, 2021
1 parent 9e56917 commit c4df9c7
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/coreclr/jit/morph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13177,6 +13177,7 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac)
GenTree* newOp2 = gtNewIconNode(-constVal, op1op2->TypeGet()); // -C
mulOrDiv->gtOp1 = newOp1;
mulOrDiv->gtOp2 = newOp2;
mulOrDiv->SetVNsFromNode(tree);

DEBUG_DESTROY_NODE(tree);
DEBUG_DESTROY_NODE(op1op2);
Expand Down
25 changes: 25 additions & 0 deletions src/tests/JIT/Regression/JitBlue/Runtime_57640/Runtime_57640.cs
Original file line number Diff line number Diff line change
@@ -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 Program
{
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;
}
}
Original file line number Diff line number Diff line change
@@ -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>

0 comments on commit c4df9c7

Please sign in to comment.