changeset 11412:7a775592258f

Fix Lowering when the lowered node modifies its successor's predecessor to be somethign that is not a FixedWithNextNode
author Gilles Duboscq <duboscq@ssw.jku.at>
date Sun, 25 Aug 2013 15:15:23 +0200
parents 95cbf029018c
children 2c3ca4b71965
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java	Fri Aug 23 18:22:27 2013 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java	Sun Aug 25 15:15:23 2013 +0200
@@ -252,7 +252,16 @@
                     ((Lowerable) node).lower(loweringTool, loweringType);
                 }
 
-                loweringTool.setLastFixedNode((FixedWithNextNode) nextNode.predecessor());
+                if (!nextNode.isAlive()) {
+                    break;
+                } else {
+                    Node nextLastFixed = nextNode.predecessor();
+                    if (nextLastFixed instanceof FixedWithNextNode) {
+                        loweringTool.setLastFixedNode((FixedWithNextNode) nextLastFixed);
+                    } else {
+                        loweringTool.setLastFixedNode((FixedWithNextNode) nextNode);
+                    }
+                }
             }
         }