changeset 8299:22cab6e509a3

Remove orphaned condition in implicit null check detection
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 15 Mar 2013 17:26:22 +0100
parents 7d6cee014fb8
children 6a9a467e2e8b
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java
diffstat 1 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java	Fri Mar 15 13:36:24 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java	Fri Mar 15 17:26:22 2013 +0100
@@ -31,6 +31,7 @@
 import com.oracle.graal.nodes.calc.*;
 import com.oracle.graal.nodes.cfg.*;
 import com.oracle.graal.nodes.extended.*;
+import com.oracle.graal.nodes.util.*;
 import com.oracle.graal.phases.*;
 import com.oracle.graal.phases.schedule.*;
 
@@ -137,7 +138,11 @@
                     }
                     assert access instanceof AccessNode;
                     access.setNullCheck(true);
+                    LogicNode condition = guard.condition();
                     guard.replaceAndDelete(access.node());
+                    if (condition.usages().isEmpty()) {
+                        GraphUtil.killWithUnusedFloatingInputs(condition);
+                    }
                     nullGuarded.remove(access.object());
                 }
             }