@@ -16866,50 +16866,28 @@ bool Compiler::gtTreeHasSideEffects(GenTree* tree, GenTreeFlags flags /* = GTF_S
16866
16866
return false;
16867
16867
}
16868
16868
16869
- if (sideEffectFlags == GTF_CALL)
16869
+ if (( sideEffectFlags == GTF_CALL) && tree->IsHelperCall() )
16870
16870
{
16871
- if (tree->IsHelperCall())
16871
+ // Generally all trees that contain GT_CALL nodes are considered to have side-effects.
16872
+ // However, for some pure helper calls we lie about this.
16873
+ if (gtNodeHasSideEffects(tree, flags, ignoreCctors))
16872
16874
{
16873
- // Generally all trees that contain GT_CALL nodes are considered to have side-effects.
16874
- // However, for some pure helper calls we lie about this.
16875
- if (gtNodeHasSideEffects(tree, flags, ignoreCctors))
16876
- {
16877
- return true;
16878
- }
16879
-
16880
- // The GTF_CALL may be contributed by an operand, so check for
16881
- // that.
16882
- bool hasCallInOperand = false;
16883
- tree->VisitOperands([=, &hasCallInOperand](GenTree* op) {
16884
- if (gtTreeHasSideEffects(op, GTF_CALL, ignoreCctors))
16885
- {
16886
- hasCallInOperand = true;
16887
- return GenTree::VisitResult::Abort;
16888
- }
16889
- return GenTree::VisitResult::Continue;
16890
- });
16891
-
16892
- return hasCallInOperand;
16875
+ return true;
16893
16876
}
16894
- else if (tree->OperIs(GT_INTRINSIC))
16895
- {
16896
- if (gtNodeHasSideEffects(tree, flags, ignoreCctors))
16897
- {
16898
- return true;
16899
- }
16900
-
16901
- if (gtNodeHasSideEffects(tree->AsOp()->gtOp1, flags, ignoreCctors))
16902
- {
16903
- return true;
16904
- }
16905
16877
16906
- if ((tree->AsOp()->gtOp2 != nullptr) && gtNodeHasSideEffects(tree->AsOp()->gtOp2, flags, ignoreCctors))
16878
+ // The GTF_CALL may be contributed by an operand, so check for
16879
+ // that.
16880
+ bool hasCallInOperand = false;
16881
+ tree->VisitOperands([=, &hasCallInOperand](GenTree* op) {
16882
+ if (gtTreeHasSideEffects(op, GTF_CALL, ignoreCctors))
16907
16883
{
16908
- return true;
16884
+ hasCallInOperand = true;
16885
+ return GenTree::VisitResult::Abort;
16909
16886
}
16887
+ return GenTree::VisitResult::Continue;
16888
+ });
16910
16889
16911
- return false;
16912
- }
16890
+ return hasCallInOperand;
16913
16891
}
16914
16892
16915
16893
return true;
0 commit comments