@@ -1033,34 +1033,30 @@ class LocalAddressVisitor final : public GenTreeVisitor<LocalAddressVisitor>
1033
1033
assert (TopValue (1 ).Node () == node->AsOp ()->gtOp1 );
1034
1034
assert (TopValue (0 ).Node () == node->AsOp ()->gtOp2 );
1035
1035
1036
- GenTree* op1 = node->AsOp ()->gtOp1 ;
1037
- GenTree* op2 = node->AsOp ()->gtOp2 ;
1038
- bool rewrite = false ;
1036
+ Value& lhs = TopValue (1 );
1037
+ Value& rhs = TopValue (0 );
1039
1038
1040
- if (op1->OperIs (GT_LCL_ADDR) && op2->IsIntegralConst (0 ))
1039
+ if ((lhs.IsAddress () && rhs.Node ()->IsIntegralConst (0 )) ||
1040
+ (rhs.IsAddress () && lhs.Node ()->IsIntegralConst (0 )))
1041
1041
{
1042
- op1 = m_compiler->gtNewIconNode (1 );
1043
- op2->ChangeType (TYP_INT);
1044
- rewrite = true ;
1045
- }
1046
- else if (op2->OperIs (GT_LCL_ADDR) && op1->IsIntegralConst (0 ))
1047
- {
1048
- op2 = m_compiler->gtNewIconNode (1 );
1049
- op1->ChangeType (TYP_INT);
1050
- rewrite = true ;
1051
- }
1042
+ JITDUMP (" Rewriting known address-of comparison [%06u]\n " , m_compiler->dspTreeID (node));
1043
+ *lhs.Use () = m_compiler->gtNewIconNode (0 );
1044
+ *rhs.Use () = m_compiler->gtNewIconNode (1 );
1045
+ m_stmtModified = true ;
1052
1046
1053
- if (rewrite)
1047
+ INDEBUG (TopValue (0 ).Consume ());
1048
+ INDEBUG (TopValue (1 ).Consume ());
1049
+ PopValue ();
1050
+ PopValue ();
1051
+ }
1052
+ else
1054
1053
{
1055
- JITDUMP (" Rewriting known address-of comparison [%06u]\n " , m_compiler->dspTreeID (node));
1056
- node->AsOp ()->gtOp1 = op1;
1057
- node->AsOp ()->gtOp2 = op2;
1054
+ EscapeValue (TopValue (0 ), node);
1055
+ PopValue ();
1056
+ EscapeValue (TopValue (0 ), node);
1057
+ PopValue ();
1058
1058
}
1059
1059
1060
- INDEBUG (TopValue (0 ).Consume ());
1061
- INDEBUG (TopValue (1 ).Consume ());
1062
- PopValue ();
1063
- PopValue ();
1064
1060
break ;
1065
1061
}
1066
1062
0 commit comments