Index: sdk/lib/_internal/compiler/implementation/ssa/builder.dart |
=================================================================== |
--- sdk/lib/_internal/compiler/implementation/ssa/builder.dart (revision 15011) |
+++ sdk/lib/_internal/compiler/implementation/ssa/builder.dart (working copy) |
@@ -2049,7 +2049,12 @@ |
conditionEndBlock = close( |
new HLoopBranch(conditionInstruction, HLoopBranch.DO_WHILE_LOOP)); |
- conditionEndBlock.addSuccessor(loopEntryBlock); // The back-edge. |
+ HBasicBlock avoidCriticalEdge = addNewBlock(); |
+ conditionEndBlock.addSuccessor(avoidCriticalEdge); |
+ open(avoidCriticalEdge); |
+ close(new HGoto()); |
+ avoidCriticalEdge.addSuccessor(loopEntryBlock); // The back-edge. |
+ |
conditionExpression = |
new SubExpression(conditionBlock, conditionEndBlock); |
} |