# HG changeset patch # User Gilles Duboscq # Date 1426690735 -3600 # Node ID c7caa3f463e3d60f5e38ca8ba10cd27abdc385f0 # Parent f599ac162bb790ef3d2c95c31224e003678e3395 FloatStamp.Abs.foldStamp support known-NaN input diff -r f599ac162bb7 -r c7caa3f463e3 graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/FloatStamp.java --- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/FloatStamp.java Wed Mar 18 15:51:15 2015 +0100 +++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/FloatStamp.java Wed Mar 18 15:58:55 2015 +0100 @@ -131,6 +131,10 @@ return nonNaN; } + public boolean isNaN() { + return Double.isNaN(lowerBound); + } + public boolean isUnrestricted() { return lowerBound == Double.NEGATIVE_INFINITY && upperBound == Double.POSITIVE_INFINITY && !nonNaN; } @@ -630,6 +634,9 @@ @Override public Stamp foldStamp(Stamp s) { FloatStamp stamp = (FloatStamp) s; + if (stamp.isNaN()) { + return stamp; + } return new FloatStamp(stamp.getBits(), 0, Math.max(-stamp.lowerBound(), stamp.upperBound()), stamp.isNonNaN()); } },