Skip to content

Commit

Permalink
JIT: Fold "shift-by-zero" in lower (#61222)
Browse files Browse the repository at this point in the history
  • Loading branch information
EgorBo committed Nov 5, 2021
1 parent e7c1bc8 commit ef85e2f
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/coreclr/jit/lower.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5773,7 +5773,7 @@ void Lowering::LowerShift(GenTreeOp* shift)
assert(!cast->CastOp()->isContained());

// It has to be an upcast and CNS must be in [1..srcBits) range
if ((srcBits < dstBits) && ((UINT32)cns->IconValue() < srcBits))
if ((srcBits < dstBits) && (cns->IconValue() > 0) && (cns->IconValue() < srcBits))
{
JITDUMP("Recognized ubfix/sbfix pattern in LSH(CAST, CNS). Changing op to GT_BFIZ");
shift->ChangeOper(GT_BFIZ);
Expand Down
38 changes: 38 additions & 0 deletions src/tests/JIT/Regression/JitBlue/Runtime_61045/Runtime_61045.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// 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.5 on 2021-11-04 18:29:11
// Run on Arm64 Linux
// Seed: 1922924939431163374
// Reduced from 261.1 KiB to 0.2 KiB in 00:05:39
// Hits JIT assert in Release:
// Assertion failed 'isValidImmShift(lsb, size)' in 'Program:M4():int' during 'Generate code' (IL size 26)
//
// File: /__w/1/s/src/coreclr/jit/emitarm64.cpp Line: 7052
//

using System;
using System.Runtime.CompilerServices;

public class Runtime_61045
{
public static byte[] s_1;
public static int Main()
{
try
{
Test();
}
catch (NullReferenceException)
{
return 100;
}
return 101;
}

[MethodImpl(MethodImplOptions.NoInlining)]
public static uint Test()
{
return (uint)((ushort)~s_1[0] << (0 >> s_1[0]));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<Optimize>True</Optimize>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildProjectName).cs" />
</ItemGroup>
</Project>

0 comments on commit ef85e2f

Please sign in to comment.