# HG changeset patch # User Tom Rodriguez # Date 1396392553 25200 # Node ID f8340493858816c699fd83d6d00add0464a204ca # Parent 0a7fce0ac01b1ccba85fc32b9b0b94e2c3f4c2e4 eliminate redundant FixedGuards diff -r 0a7fce0ac01b -r f83404938588 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Tue Apr 01 15:42:42 2014 -0700 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Tue Apr 01 15:49:13 2014 -0700 @@ -679,7 +679,13 @@ } } else if (node instanceof FixedGuardNode) { FixedGuardNode guard = (FixedGuardNode) node; - registerCondition(!guard.isNegated(), guard.condition(), guard); + ValueNode existingGuard = guard.isNegated() ? state.falseConditions.get(guard.condition()) : state.trueConditions.get(guard.condition()); + if (existingGuard != null && existingGuard instanceof FixedGuardNode) { + guard.replaceAtUsages(existingGuard); + guard.graph().removeFixed(guard); + } else { + registerCondition(!guard.isNegated(), guard.condition(), guard); + } } else if (node instanceof CheckCastNode) { CheckCastNode checkCast = (CheckCastNode) node; ValueNode object = checkCast.object();