changeset 19516:108fbab4e0e8

Use orderedLoopEnds in ControlFlowGraph#connectBlocks.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Fri, 20 Feb 2015 01:15:31 +0100
parents 387d7192e18f
children a015953a69f2 9c4168877444
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java
diffstat 1 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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<Block> 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) {