diff options
author | Michael Matz <matz@suse.de> | 2005-09-15 05:03:01 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2005-09-15 05:03:01 +0000 |
commit | fca59ed2c97e622bd51cdd67911bae5c347eb399 (patch) | |
tree | 71cce1f99ee510dfc33760561e6423fac9b8fa98 /gcc | |
parent | fd312e903f8427204fd73fe574bfb18b28005825 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 6 |
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 |