changeset 5354:a704936a25b7

Fix : in peeling, while merging early exits, transfer all anchored nodes from the exit to the merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 04 May 2012 12:08:00 +0200
parents 85103daaf504
children eafa1f3ad48f
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/SuperBlock.java
diffstat 1 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/SuperBlock.java	Thu May 03 15:43:03 2012 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/SuperBlock.java	Fri May 04 12:08:00 2012 +0200
@@ -174,6 +174,11 @@
             FrameState exitState = earlyExit.stateAfter();
             FrameState state = exitState.duplicate();
             merge.setStateAfter(state);
+
+            for (Node anchored : earlyExit.anchored().snapshot()) {
+                anchored.replaceFirstInput(earlyExit, merge);
+            }
+
             for (ValueProxyNode vpn : earlyExit.proxies().snapshot()) {
                 ValueNode replaceWith;
                 ValueProxyNode newVpn = (ValueProxyNode) duplicates.get(vpn);