diff --git a/src/coreclr/jit/lower.cpp b/src/coreclr/jit/lower.cpp index c525c59cfa062..ea76536df60b3 100644 --- a/src/coreclr/jit/lower.cpp +++ b/src/coreclr/jit/lower.cpp @@ -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); diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_61045/Runtime_61045.cs b/src/tests/JIT/Regression/JitBlue/Runtime_61045/Runtime_61045.cs new file mode 100644 index 0000000000000..b9c83b498d6cd --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_61045/Runtime_61045.cs @@ -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])); + } +} diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_61045/Runtime_61045.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_61045/Runtime_61045.csproj new file mode 100644 index 0000000000000..6946bed81bfd5 --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_61045/Runtime_61045.csproj @@ -0,0 +1,9 @@ + + + Exe + True + + + + +