# HG changeset patch # User Thomas Wuerthinger # Date 1424391331 -3600 # Node ID 108fbab4e0e84b394c05cee5b4343a816d61e82f # Parent 387d7192e18fc9218787997d0980a4abd7e0183a Use orderedLoopEnds in ControlFlowGraph#connectBlocks. diff -r 387d7192e18f -r 108fbab4e0e8 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java Thu Feb 19 23:56:04 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java Fri Feb 20 01:15:31 2015 +0100 @@ -200,6 +200,7 @@ } // Connect blocks (including loop backward edges), but ignoring dead code (blocks with id < 0). + // Predecessors need to be in the order expected when iterating phi inputs. private void connectBlocks() { for (Block block : reversePostOrder) { List predecessors = new ArrayList<>(1); @@ -221,7 +222,7 @@ if (block.getBeginNode() instanceof LoopBeginNode) { LoopBeginNode loopBegin = (LoopBeginNode) block.getBeginNode(); probability *= loopBegin.loopFrequency(); - for (LoopEndNode predNode : loopBegin.loopEnds()) { + for (LoopEndNode predNode : loopBegin.orderedLoopEnds()) { Block predBlock = nodeToBlock.get(predNode); assert predBlock != null : predNode; if (predBlock.getId() >= 0) {