# HG changeset patch # User Roland Schatz # Date 1378716508 -7200 # Node ID e231671f39d080a0c151e41d3fca908c49f9dc53 # Parent 4cf51b63004951449305c7158db01c3c2379c970 Try constant folding in canonicalizer even if tryInferStamp didn't change anything. diff -r 4cf51b630049 -r e231671f39d0 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Tue Sep 10 16:44:58 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Mon Sep 09 10:48:28 2013 +0200 @@ -160,14 +160,13 @@ if (!tryCanonicalize(node)) { if (node instanceof ValueNode) { ValueNode valueNode = (ValueNode) node; - if (tryInferStamp(valueNode)) { - Constant constant = valueNode.stamp().asConstant(); - if (constant != null) { - performReplacement(valueNode, ConstantNode.forConstant(constant, runtime, valueNode.graph())); - } else { - // the improved stamp may enable additional canonicalization - tryCanonicalize(valueNode); - } + boolean improvedStamp = tryInferStamp(valueNode); + Constant constant = valueNode.stamp().asConstant(); + if (constant != null && !(node instanceof ConstantNode)) { + performReplacement(valueNode, ConstantNode.forConstant(constant, runtime, valueNode.graph())); + } else if (improvedStamp) { + // the improved stamp may enable additional canonicalization + tryCanonicalize(valueNode); } } }