diff --git a/src/coreclr/jit/valuenum.cpp b/src/coreclr/jit/valuenum.cpp index 8e302db1abaf36..8b07434c3e87c6 100644 --- a/src/coreclr/jit/valuenum.cpp +++ b/src/coreclr/jit/valuenum.cpp @@ -9825,25 +9825,25 @@ VNFunc Compiler::fgValueNumberJitHelperMethodVNFunc(CorInfoHelpFunc helpFunc) vnf = VNF_Dbl2Int; break; case CORINFO_HELP_DBL2INT_OVF: - vnf = VNF_Dbl2Int; + vnf = VNF_Dbl2IntOvf; break; case CORINFO_HELP_DBL2LNG: vnf = VNF_Dbl2Lng; break; case CORINFO_HELP_DBL2LNG_OVF: - vnf = VNF_Dbl2Lng; + vnf = VNF_Dbl2LngOvf; break; case CORINFO_HELP_DBL2UINT: vnf = VNF_Dbl2UInt; break; case CORINFO_HELP_DBL2UINT_OVF: - vnf = VNF_Dbl2UInt; + vnf = VNF_Dbl2UIntOvf; break; case CORINFO_HELP_DBL2ULNG: vnf = VNF_Dbl2ULng; break; case CORINFO_HELP_DBL2ULNG_OVF: - vnf = VNF_Dbl2ULng; + vnf = VNF_Dbl2ULngOvf; break; case CORINFO_HELP_FLTREM: vnf = VNFunc(GT_MOD); diff --git a/src/coreclr/jit/valuenumfuncs.h b/src/coreclr/jit/valuenumfuncs.h index 6b5c89bbbbf485..6b2fa5236f3a17 100644 --- a/src/coreclr/jit/valuenumfuncs.h +++ b/src/coreclr/jit/valuenumfuncs.h @@ -75,6 +75,10 @@ ValueNumFuncDef(Dbl2Int, 1, false, false, false) ValueNumFuncDef(Dbl2UInt, 1, false, false, false) ValueNumFuncDef(Dbl2Lng, 1, false, false, false) ValueNumFuncDef(Dbl2ULng, 1, false, false, false) +ValueNumFuncDef(Dbl2IntOvf, 1, false, false, false) +ValueNumFuncDef(Dbl2UIntOvf, 1, false, false, false) +ValueNumFuncDef(Dbl2LngOvf, 1, false, false, false) +ValueNumFuncDef(Dbl2ULngOvf, 1, false, false, false) ValueNumFuncDef(FltRound, 1, false, false, false) ValueNumFuncDef(DblRound, 1, false, false, false) diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_58832/Runtime_58832.cs b/src/tests/JIT/Regression/JitBlue/Runtime_58832/Runtime_58832.cs new file mode 100644 index 00000000000000..9acd698ca4c13c --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_58832/Runtime_58832.cs @@ -0,0 +1,30 @@ +// 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; + +public class Runtime_58832 +{ + public static int Main() + { + try + { + Test(double.MaxValue); + } + catch (OverflowException) + { + return 100; + } + return 101; + } + + [MethodImpl(MethodImplOptions.NoInlining)] + private static void Test(double x) + { + try { Console.WriteLine(checked((ulong)x)); } catch { } + + if ((ulong)x == checked((ulong)x)) + Console.WriteLine("Should not be invoked"); + } +} diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_58832/Runtime_58832.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_58832/Runtime_58832.csproj new file mode 100644 index 00000000000000..1100f420532dc8 --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_58832/Runtime_58832.csproj @@ -0,0 +1,10 @@ + + + Exe + None + True + + + + +