@@ -4295,44 +4295,6 @@ GenTree* Compiler::optAssertionPropGlobal_RelOp(ASSERT_VALARG_TP assertions, Gen
42954295 GenTree* op1 = tree->AsOp ()->gtOp1 ;
42964296 GenTree* op2 = tree->AsOp ()->gtOp2 ;
42974297
4298- // Can we fold "X relop 0" based on assertions?
4299- if (op2->IsIntegralConst (0 ) && tree->OperIsCmpCompare ())
4300- {
4301- bool isNonZero, isNeverNegative;
4302- optAssertionProp_RangeProperties (assertions, op1, &isNonZero, &isNeverNegative);
4303-
4304- if (tree->OperIs (GT_GE, GT_LT) && isNeverNegative)
4305- {
4306- // Assertions: X >= 0
4307- //
4308- // X >= 0 --> true
4309- // X < 0 --> false
4310- newTree = tree->OperIs (GT_GE) ? gtNewTrue () : gtNewFalse ();
4311- }
4312- else if (tree->OperIs (GT_GT, GT_LE) && isNeverNegative && isNonZero)
4313- {
4314- // Assertions: X > 0
4315- //
4316- // X > 0 --> true
4317- // X <= 0 --> false
4318- newTree = tree->OperIs (GT_GT) ? gtNewTrue () : gtNewFalse ();
4319- }
4320- else if (tree->OperIs (GT_EQ, GT_NE) && isNonZero)
4321- {
4322- // Assertions: X != 0
4323- //
4324- // X != 0 --> true
4325- // X == 0 --> false
4326- newTree = tree->OperIs (GT_NE) ? gtNewTrue () : gtNewFalse ();
4327- }
4328-
4329- if (newTree != tree)
4330- {
4331- newTree = gtWrapWithSideEffects (newTree, tree, GTF_ALL_EFFECT);
4332- return optAssertionProp_Update (newTree, tree, stmt);
4333- }
4334- }
4335-
43364298 // Look for assertions of the form (tree EQ/NE 0)
43374299 AssertionIndex index = optGlobalAssertionIsEqualOrNotEqualZero (assertions, tree);
43384300
@@ -4353,6 +4315,7 @@ GenTree* Compiler::optAssertionPropGlobal_RelOp(ASSERT_VALARG_TP assertions, Gen
43534315
43544316 newTree = curAssertion->assertionKind == OAK_EQUAL ? gtNewIconNode (0 ) : gtNewIconNode (1 );
43554317 newTree = gtWrapWithSideEffects (newTree, tree, GTF_ALL_EFFECT);
4318+ newTree = fgMorphTree (newTree);
43564319 DISPTREE (newTree);
43574320 return optAssertionProp_Update (newTree, tree, stmt);
43584321 }
0 commit comments