diff --git a/runtime/vm/compiler/backend/constant_propagator.cc b/runtime/vm/compiler/backend/constant_propagator.cc index 65a8fb0941a..b82b65d197a 100644 --- a/runtime/vm/compiler/backend/constant_propagator.cc +++ b/runtime/vm/compiler/backend/constant_propagator.cc @@ -395,6 +395,8 @@ void ConstantPropagator::VisitPhi(PhiInstr* instr) { if (reachable_->Contains( block->PredecessorAt(pred_idx)->preorder_number())) { Join(&value, instr->InputAt(pred_idx)->definition()->constant_value()); + // Once top is reached, further Joins cannot change the value. + if (IsNonConstant(value)) break; } } SetValue(instr, value);