From fca59ed2c97e622bd51cdd67911bae5c347eb399 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Thu, 15 Sep 2005 05:03:01 +0000 Subject: [PATCH] * tree-vrp.c (vrp_int_const_binop ): Handle 0 - -INF. From-SVN: r104298 --- gcc/ChangeLog | 4 ++++ 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 + + * tree-vrp.c (vrp_int_const_binop ): Handle 0 - -INF. + 2005-09-14 Daniel Berlin 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 -- 2.7.4