aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2005-09-15 05:03:01 +0000
committerMichael Matz <matz@gcc.gnu.org>2005-09-15 05:03:01 +0000
commitfca59ed2c97e622bd51cdd67911bae5c347eb399 (patch)
tree71cce1f99ee510dfc33760561e6423fac9b8fa98 /gcc
parentfd312e903f8427204fd73fe574bfb18b28005825 (diff)
downloadgcc-fca59ed2c97e622bd51cdd67911bae5c347eb399.zip
gcc-fca59ed2c97e622bd51cdd67911bae5c347eb399.tar.gz
gcc-fca59ed2c97e622bd51cdd67911bae5c347eb399.tar.bz2
* tree-vrp.c (vrp_int_const_binop <MINUS_EXPR>): Handle 0 - -INF.
From-SVN: r104298
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/tree-vrp.c6
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b424f30..e111d5d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2005-09-15 Michael Matz <matz@suse.de>
+
+ * tree-vrp.c (vrp_int_const_binop <MINUS_EXPR>): Handle 0 - -INF.
+
2005-09-14 Daniel Berlin <dberlin@dberlin.org>
PR tree-optimization/23835
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index a7be2d9..e802b2d 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -956,8 +956,10 @@ vrp_int_const_binop (enum tree_code code, tree val1, tree val2)
/* For subtraction, the operands must be of different
signs to yield an overflow. Its sign is therefore
that of the first operand or the opposite of that
- of the second operand. */
- || (code == MINUS_EXPR && sgn1 > 0)
+ of the second operand. A first operand of 0 counts
+ as positive here, for the corner case 0 - (-INF),
+ which overflows, but must yield +INF. */
+ || (code == MINUS_EXPR && sgn1 >= 0)
/* For division, the only case is -INF / -1 = +INF. */
|| code == TRUNC_DIV_EXPR
|| code == FLOOR_DIV_EXPR