diff options
author | Richard Guenther <rguenther@suse.de> | 2010-02-10 16:52:07 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-02-10 16:52:07 +0000 |
commit | 5418fe84c2377f7bff650c946fe8d667947b5984 (patch) | |
tree | c306e590d9ae4d96f7840c95f63704607326082f /gcc/tree-vrp.c | |
parent | 7fcd5ad54c243aa68714f9d9dad96c428b50f266 (diff) | |
download | gcc-5418fe84c2377f7bff650c946fe8d667947b5984.zip gcc-5418fe84c2377f7bff650c946fe8d667947b5984.tar.gz gcc-5418fe84c2377f7bff650c946fe8d667947b5984.tar.bz2 |
re PR tree-optimization/43017 (VRP miscompiles python with -fwrapv, II)
2010-02-10 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43017
* tree-vrp.c (vrp_int_const_binop): Trust int_const_binop
for wrapping signed arithmetic.
* gcc.dg/torture/pr43017.c: New testcase.
From-SVN: r156666
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r-- | gcc/tree-vrp.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 73dcf23..8164548 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -1937,6 +1937,10 @@ vrp_int_const_binop (enum tree_code code, tree val1, tree val2) } } + else if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (val1))) + /* If the singed operation wraps then int_const_binop has done + everything we want. */ + ; else if ((TREE_OVERFLOW (res) && !TREE_OVERFLOW (val1) && !TREE_OVERFLOW (val2)) |