Skip to content

Commit 6fa132a

Browse files
committed
Try another fix
1 parent 0cbf3a2 commit 6fa132a

File tree

3 files changed

+9
-33
lines changed

3 files changed

+9
-33
lines changed

src/coreclr/jit/compiler.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3747,7 +3747,7 @@ class Compiler
37473747

37483748
//-------------------------------------------------------------------------
37493749

3750-
GenTree* gtFoldExpr(GenTree* tree, bool* folded = nullptr);
3750+
GenTree* gtFoldExpr(GenTree* tree);
37513751
GenTree* gtFoldExprConst(GenTree* tree);
37523752
GenTree* gtFoldIndirConst(GenTreeIndir* indir);
37533753
GenTree* gtFoldExprSpecial(GenTree* tree);

src/coreclr/jit/gentree.cpp

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13572,13 +13572,10 @@ void Compiler::gtDispLIRNode(GenTree* node, const char* prefixMsg /* = nullptr *
1357213572
* and call the methods to perform the folding
1357313573
*/
1357413574

13575-
GenTree* Compiler::gtFoldExpr(GenTree* tree, bool* folded)
13575+
GenTree* Compiler::gtFoldExpr(GenTree* tree)
1357613576
{
1357713577
unsigned kind = tree->OperKind();
1357813578

13579-
if (folded != nullptr)
13580-
*folded = false;
13581-
1358213579
/* We must have a simple operation to fold */
1358313580

1358413581
// If we're in CSE, it's not safe to perform tree
@@ -13598,19 +13595,13 @@ GenTree* Compiler::gtFoldExpr(GenTree* tree, bool* folded)
1359813595
{
1359913596
if (tree->OperIsConditional())
1360013597
{
13601-
GenTree* newTree = gtFoldExprConditional(tree);
13602-
if (folded != nullptr)
13603-
*folded = newTree != tree;
13604-
return newTree;
13598+
return gtFoldExprConditional(tree);
1360513599
}
1360613600

1360713601
#if defined(FEATURE_HW_INTRINSICS)
1360813602
if (tree->OperIsHWIntrinsic())
1360913603
{
13610-
GenTree* newTree = gtFoldExprHWIntrinsic(tree->AsHWIntrinsic());
13611-
if (folded != nullptr)
13612-
*folded = newTree != tree;
13613-
return newTree;
13604+
return gtFoldExprHWIntrinsic(tree->AsHWIntrinsic());
1361413605
}
1361513606
#endif // FEATURE_HW_INTRINSICS
1361613607

@@ -13638,7 +13629,6 @@ GenTree* Compiler::gtFoldExpr(GenTree* tree, bool* folded)
1363813629
{
1363913630
if (op1->OperIsConst())
1364013631
{
13641-
// constants folding results in a new tree that may be folded again, don't mark it as folded
1364213632
return gtFoldExprConst(tree);
1364313633
}
1364413634
}
@@ -13650,8 +13640,7 @@ GenTree* Compiler::gtFoldExpr(GenTree* tree, bool* folded)
1365013640
// one of their arguments is an address.
1365113641
if (op1->OperIsConst() && op2->OperIsConst() && !tree->OperIsAtomicOp())
1365213642
{
13653-
// both nodes are constants - fold the expression
13654-
// constants folding results in a new tree that may be folded again, don't mark it as folded
13643+
/* both nodes are constants - fold the expression */
1365513644
return gtFoldExprConst(tree);
1365613645
}
1365713646
else if (op1->OperIsConst() || op2->OperIsConst())
@@ -13666,19 +13655,13 @@ GenTree* Compiler::gtFoldExpr(GenTree* tree, bool* folded)
1366613655
return tree;
1366713656
}
1366813657

13669-
GenTree* newTree = gtFoldExprSpecial(tree);
13670-
if (folded != nullptr)
13671-
*folded = newTree != tree;
13672-
return newTree;
13658+
return gtFoldExprSpecial(tree);
1367313659
}
1367413660
else if (tree->OperIsCompare())
1367513661
{
1367613662
/* comparisons of two local variables can sometimes be folded */
1367713663

13678-
GenTree* newTree = gtFoldExprCompare(tree);
13679-
if (folded != nullptr)
13680-
*folded = newTree != tree;
13681-
return newTree;
13664+
return gtFoldExprCompare(tree);
1368213665
}
1368313666
}
1368413667

src/coreclr/jit/morph.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8305,25 +8305,18 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac, bool* optA
83058305
}
83068306

83078307
// Try to fold it, maybe we get lucky,
8308-
bool folded;
8309-
tree = gtFoldExpr(tree, &folded);
8308+
tree = gtFoldExpr(tree);
83108309

83118310
if (oldTree != tree)
83128311
{
8313-
if (folded)
8314-
{
8315-
INDEBUG(tree->gtDebugFlags |= GTF_DEBUG_NODE_MORPHED);
8316-
return tree;
8317-
}
8318-
83198312
/* if gtFoldExpr returned op1 or op2 then we are done */
83208313
if ((tree == op1) || (tree == op2) || (tree == qmarkOp1) || (tree == qmarkOp2))
83218314
{
83228315
return tree;
83238316
}
83248317

83258318
/* If we created a comma-throw tree then we need to morph op1 */
8326-
if (fgIsCommaThrow(tree))
8319+
if (!fgGlobalMorph && fgIsCommaThrow(tree))
83278320
{
83288321
tree->AsOp()->gtOp1 = fgMorphTree(tree->AsOp()->gtOp1);
83298322
fgMorphTreeDone(tree);

0 commit comments

Comments
 (0)