From 4851d084650eeb50ee8d7ce72164840aa79d2a9c Mon Sep 17 00:00:00 2001 From: Andy Ayers Date: Fri, 17 Nov 2023 11:15:34 -0800 Subject: [PATCH] JIT: avoid local jtrue assertions involving floating types Float relop equality does not imply bitwise equality. So skip making local jtrue assertions about floating types. Contributes to #93246. --- src/coreclr/jit/assertionprop.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/coreclr/jit/assertionprop.cpp b/src/coreclr/jit/assertionprop.cpp index 92ee287ea1f058..fc3908b1d43f43 100644 --- a/src/coreclr/jit/assertionprop.cpp +++ b/src/coreclr/jit/assertionprop.cpp @@ -2205,6 +2205,13 @@ AssertionInfo Compiler::optAssertionGenJtrue(GenTree* tree) GenTree* op1 = relop->AsOp()->gtOp1->gtCommaStoreVal(); GenTree* op2 = relop->AsOp()->gtOp2->gtCommaStoreVal(); + // Avoid creating local assertions for float types. + // + if (optLocalAssertionProp && varTypeIsFloating(op1)) + { + return NO_ASSERTION_INDEX; + } + // Check for op1 or op2 to be lcl var and if so, keep it in op1. if ((op1->gtOper != GT_LCL_VAR) && (op2->gtOper == GT_LCL_VAR)) {