| Index: sdk/lib/_internal/compiler/implementation/ssa/value_range_analyzer.dart
|
| ===================================================================
|
| --- sdk/lib/_internal/compiler/implementation/ssa/value_range_analyzer.dart (revision 25009)
|
| +++ sdk/lib/_internal/compiler/implementation/ssa/value_range_analyzer.dart (working copy)
|
| @@ -615,6 +615,11 @@
|
|
|
| Range visitPhi(HPhi phi) {
|
| if (!phi.isInteger()) return info.newUnboundRange();
|
| + // Some phases may replace instructions that change the inputs of
|
| + // this phi. Only the [SsaTypesPropagation] phase will update the
|
| + // phi type. Play it safe by assuming the [SsaTypesPropagation]
|
| + // phase is not necessarily run before the [ValueRangeAnalyzer].
|
| + if (phi.inputs.any((i) => !i.isInteger())) return info.newUnboundRange();
|
| if (phi.block.isLoopHeader()) {
|
| Range range = tryInferLoopPhiRange(phi);
|
| if (range == null) return info.newUnboundRange();
|
|
|