diff graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java @ 7245:1e099e2c6197

Fix for KillCFG while killing infinite empty loops
author Gilles Duboscq <duboscq@ssw.jku.at>
date Mon, 17 Dec 2012 16:01:55 +0100
parents 2463eb24b644
children 79a7b761755c
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java	Mon Dec 17 15:24:13 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java	Mon Dec 17 16:01:55 2012 +0100
@@ -76,7 +76,10 @@
                     loopend.safeDelete();
                 }
                 begin.removeExits();
-                killCFG(begin.next());
+                FixedNode loopBody = begin.next();
+                if (loopBody != null) { // for small infinite loops, the body may be killed while killing the loop ends
+                    killCFG(loopBody);
+                }
                 begin.safeDelete();
             } else if (merge instanceof LoopBeginNode && ((LoopBeginNode) merge).loopEnds().isEmpty()) { // not a loop anymore
                 graph.reduceDegenerateLoopBegin((LoopBeginNode) merge);