Index: sdk/lib/_internal/compiler/implementation/ssa/builder.dart |
=================================================================== |
--- sdk/lib/_internal/compiler/implementation/ssa/builder.dart (revision 14959) |
+++ 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 avoidEdge = addNewBlock(); |
floitsch
2012/11/16 14:05:43
avoidCriticalEdge, or but comment somewhere.
ngeoffray
2012/11/16 14:14:59
Renamed to avoidCriticalEdge.
|
+ conditionEndBlock.addSuccessor(avoidEdge); // The back-edge. |
+ open(avoidEdge); |
+ close(new HGoto()); |
+ avoidEdge.addSuccessor(loopEntryBlock); |
+ |
conditionExpression = |
new SubExpression(conditionBlock, conditionEndBlock); |
} |