diff options
author | Richard Biener <rguenther@suse.de> | 2017-08-17 07:16:30 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-08-17 07:16:30 +0000 |
commit | 344be1fd47d7d64ea85c159b14745ba107ce71ae (patch) | |
tree | b1f4f85d29d08f6dacb0ffd21c27e044bec07848 /gcc/tree-vrp.c | |
parent | b263d657e1c4bc182f0f72f62402010f8a8ad3fe (diff) | |
download | gcc-344be1fd47d7d64ea85c159b14745ba107ce71ae.zip gcc-344be1fd47d7d64ea85c159b14745ba107ce71ae.tar.gz gcc-344be1fd47d7d64ea85c159b14745ba107ce71ae.tar.bz2 |
tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p to true when overflow is undefined and we saturated the...
2017-08-17 Richard Biener <rguenther@suse.de>
* tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p
to true when overflow is undefined and we saturated the
result.
* gcc.dg/tree-ssa/vrp117.c: New testcase.
From-SVN: r251141
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r-- | gcc/tree-vrp.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 657a8d1..e3735ff 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -1614,6 +1614,8 @@ vrp_int_const_binop (enum tree_code code, tree val1, tree val2, signop sign = TYPE_SIGN (TREE_TYPE (val1)); wide_int res; + *overflow_p = false; + switch (code) { case RSHIFT_EXPR: @@ -1685,8 +1687,6 @@ vrp_int_const_binop (enum tree_code code, tree val1, tree val2, gcc_unreachable (); } - *overflow_p = overflow; - if (overflow && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (val1))) { @@ -1730,6 +1730,8 @@ vrp_int_const_binop (enum tree_code code, tree val1, tree val2, TYPE_SIGN (TREE_TYPE (val1))); } + *overflow_p = overflow; + return res; } |