# HG changeset patch # User Thomas Wuerthinger # Date 1379464901 -7200 # Node ID 7f8c80e317505e2a2ad67356eb2c46c206f406df # Parent e9cf2b37c71318e314ef16dad336492411b298fa Fix GuardingPiNode to preserve checkcast semantics also if value of checkcast is unused. diff -r e9cf2b37c713 -r 7f8c80e31750 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Wed Sep 18 00:38:19 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Wed Sep 18 02:41:41 2013 +0200 @@ -81,8 +81,10 @@ throw new GraalInternalError("Cannot create guards in after-guard lowering"); } GuardingNode guard = tool.createGuard(condition, reason, action, negated); + ValueAnchorNode anchor = graph().add(new ValueAnchorNode((ValueNode) guard)); PiNode pi = graph().unique(new PiNode(object, stamp(), guard)); - graph().replaceFixedWithFloating(this, pi); + replaceAtUsages(pi); + graph().replaceFixedWithFixed(this, anchor); } @Override