From: Diego Novillo Date: Wed, 15 Jun 2005 15:19:51 +0000 (+0000) Subject: tree-vrp.c (vrp_int_const_binop): Do not handle MAX_EXPR when the result overflows. X-Git-Tag: misc/cutover-cvs2svn~2396 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=38e19e4c73b8614fb094c5c36abdd7da47a26a50;p=thirdparty%2Fgcc.git tree-vrp.c (vrp_int_const_binop): Do not handle MAX_EXPR when the result overflows. * tree-vrp.c (vrp_int_const_binop): Do not handle MAX_EXPR when the result overflows. From-SVN: r100983 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 03e034fb5783..b029e3ded45f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-06-15 Diego Novillo + + * tree-vrp.c (vrp_int_const_binop): Do not handle MAX_EXPR + when the result overflows. + 2005-06-15 David Ung * config/mips/mips.c (mips_rtx_cost_data): Add cost for 4kc, 4kp, diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 2569267ccf88..c0d0514cf607 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -996,9 +996,15 @@ vrp_int_const_binop (enum tree_code code, tree val1, tree val2) int sgn1 = tree_int_cst_sgn (val1); int sgn2 = tree_int_cst_sgn (val2); - /* Notice that we only need to handle the restricted set of - operations handled by extract_range_from_binary_expr. */ - if (((code == PLUS_EXPR || code == MAX_EXPR) && sgn2 >= 0) + /* Determine whether VAL1 CODE VAL2 yields a growing value. + Notice that we only need to handle the restricted set of + operations handled by extract_range_from_binary_expr: + + VAL1 + VAL2 grows if VAL2 is >= 0. + VAL1 * VAL2 grows if both VAL1 and VAL2 have the same sign. + VAL1 - VAL2 grows if VAL2 is < 0 (because it becomes an addition). + */ + if ((code == PLUS_EXPR && sgn2 >= 0) || (code == MULT_EXPR && sgn1 == sgn2) || (code == MINUS_EXPR && sgn2 < 0)) grows = true;