# HG changeset patch # User Andreas Woess # Date 1419947558 -3600 # Node ID c16786645355d15f068642f927412c51aeef7930 # Parent 7ff41ad072efd61f7dcedf8882e7c647f235d46d Split negated short-circuit-or guard into two guards diff -r 7ff41ad072ef -r c16786645355 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Tue Dec 30 02:21:15 2014 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Tue Dec 30 14:52:38 2014 +0100 @@ -66,6 +66,12 @@ } this.replaceAtUsages(null); graph().removeFixed(this); + } else if (condition() instanceof ShortCircuitOrNode) { + ShortCircuitOrNode shortCircuitOr = (ShortCircuitOrNode) condition(); + if (isNegated() && usages().isEmpty()) { + graph().addAfterFixed(this, graph().add(FixedGuardNode.create(shortCircuitOr.getY(), getReason(), getAction(), !shortCircuitOr.isYNegated()))); + graph().replaceFixedWithFixed(this, graph().add(FixedGuardNode.create(shortCircuitOr.getX(), getReason(), getAction(), !shortCircuitOr.isXNegated()))); + } } }