@@ -15906,10 +15906,9 @@ CORINFO_METHOD_HANDLE Compiler::gtGetHelperArgMethodHandle(GenTree* tree)
1590615906// Tree (possibly modified at root or below), or a new tree
1590715907// Any new tree is fully morphed, if necessary.
1590815908//
15909- GenTree* Compiler::gtFoldExprSpecial(GenTree * tree)
15909+ GenTree* Compiler::gtFoldExprSpecial(GenTreeOp * tree)
1591015910{
1591115911 assert(tree->OperIsBinary());
15912- assert(!optValnumCSE_phase);
1591315912 assert(opts.Tier0OptimizationEnabled());
1591415913
1591515914 if (tree->OperIsCommutative() || tree->OperIsCompare())
@@ -15922,18 +15921,12 @@ GenTree* Compiler::gtFoldExprSpecial(GenTree* tree)
1592215921 return tree;
1592315922 }
1592415923
15925- var_types type = tree->TypeGet();
15926- GenTree* op1 = tree->AsOp()->gtOp1;
15927- GenTree* op2 = tree->AsOp()->gtOp2;
15928- genTreeOps oper = tree->OperGet();
15929-
15930- GenTree* op;
15931- GenTree* cons;
15932- ssize_t val;
15933-
1593415924 /* We only consider TYP_INT for folding
1593515925 * Do not fold pointer arithmetic (e.g. addressing modes!) */
1593615926
15927+ var_types type = tree->TypeGet();
15928+ genTreeOps oper = tree->OperGet();
15929+
1593715930 if (oper != GT_QMARK && !varTypeIsIntOrI(type))
1593815931 {
1593915932 if (varTypeIsFloating(type))
@@ -15943,6 +15936,13 @@ GenTree* Compiler::gtFoldExprSpecial(GenTree* tree)
1594315936 return tree;
1594415937 }
1594515938
15939+ GenTree* op1 = tree->AsOp()->gtOp1;
15940+ GenTree* op2 = tree->AsOp()->gtOp2;
15941+
15942+ GenTree* op;
15943+ GenTree* cons;
15944+ ssize_t val;
15945+
1594615946 /* Find out which is the constant node */
1594715947
1594815948 if (op1->IsCnsIntOrI())
@@ -16269,13 +16269,14 @@ GenTree* Compiler::gtFoldExprSpecial(GenTree* tree)
1626916269// Tree (possibly modified at root or below), or a new tree
1627016270// Any new tree is fully morphed, if necessary.
1627116271//
16272- GenTree* Compiler::gtFoldExprSpecialFloating(GenTree * tree)
16272+ GenTree* Compiler::gtFoldExprSpecialFloating(GenTreeOp * tree)
1627316273{
16274+ assert(tree->OperIsBinary());
16275+ assert(opts.OptimizationEnabled());
1627416276 assert(varTypeIsFloating(tree->TypeGet()));
16275- assert(tree->OperKind() & GTK_BINOP);
1627616277
16277- GenTree* op1 = tree->AsOp()->gtOp1 ;
16278- GenTree* op2 = tree->AsOp()->gtOp2 ;
16278+ GenTree* op1 = tree->gtGetOp1() ;
16279+ GenTree* op2 = tree->gtGetOp2() ;
1627916280 genTreeOps oper = tree->OperGet();
1628016281
1628116282 GenTree* op;
0 commit comments