# HG changeset patch # User Christian Wimmer # Date 1352509108 28800 # Node ID 2ec25815d84e41e3f14cd54b87b3e840dc804653 # Parent dc7cd6885f07050e8aedca42b4f05c30dedd1cfc When InstanceOfNode is lowered to always true or always false condition, then the no longer used branch needs to be removed from graph. diff -r dc7cd6885f07 -r 2ec25815d84e graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/InstanceOfSnippetsTemplates.java --- a/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/InstanceOfSnippetsTemplates.java Fri Nov 09 16:57:29 2012 -0800 +++ b/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/InstanceOfSnippetsTemplates.java Fri Nov 09 16:58:28 2012 -0800 @@ -272,7 +272,10 @@ } private static void connectEnds(MergeNode merge, List ends, BeginNode successor) { - if (ends.size() == 1) { + if (ends.size() == 0) { + // InstanceOf has been lowered to always true or always false - this successor is therefore unreachable. + GraphUtil.killCFG(successor); + } else if (ends.size() == 1) { EndNode end = ends.get(0); ((FixedWithNextNode) end.predecessor()).setNext(successor); merge.removeEnd(end);