# HG changeset patch # User Miguel Garcia # Date 1400512895 -7200 # Node ID 402a74c6bc14118b6ae2e78527e47d726cad9950 # Parent 56689688067a4b5bbcc579de96a1eac4ae1aee68# Parent 10830a8ab30d8f1077369ebe561fff86978af7db Merge diff -r 56689688067a -r 402a74c6bc14 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java Mon May 19 16:52:10 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java Mon May 19 17:21:35 2014 +0200 @@ -82,7 +82,7 @@ IntegerStamp equalsXStamp = (IntegerStamp) equals.x().stamp(); if (equalsXStamp.upMask() == 1) { if (x().asConstant().equals(Constant.INT_0) && y().asConstant().equals(Constant.INT_1)) { - return equals.x(); + return IntegerConvertNode.convertUnsigned(equals.x(), stamp()); } } } diff -r 56689688067a -r 402a74c6bc14 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java Mon May 19 16:52:10 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java Mon May 19 17:21:35 2014 +0200 @@ -75,6 +75,14 @@ } public static ValueNode convert(ValueNode input, Stamp stamp) { + return convert(input, stamp, false); + } + + public static ValueNode convertUnsigned(ValueNode input, Stamp stamp) { + return convert(input, stamp, true); + } + + public static ValueNode convert(ValueNode input, Stamp stamp, boolean zeroExtend) { StructuredGraph graph = input.graph(); IntegerStamp fromStamp = (IntegerStamp) input.stamp(); IntegerStamp toStamp = (IntegerStamp) stamp; @@ -84,6 +92,9 @@ result = input; } else if (toStamp.getBits() < fromStamp.getBits()) { result = graph.unique(new NarrowNode(input, toStamp.getBits())); + } else if (zeroExtend) { + // toStamp.getBits() > fromStamp.getBits() + result = graph.unique(new ZeroExtendNode(input, toStamp.getBits())); } else { // toStamp.getBits() > fromStamp.getBits() result = graph.unique(new SignExtendNode(input, toStamp.getBits()));