diff options
author | Richard Guenther <rguenther@suse.de> | 2010-08-12 10:38:05 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-08-12 10:38:05 +0000 |
commit | 2d698d3bb7f1b7761b35b31326a0326ce375ef8e (patch) | |
tree | 0b5ac0be840f1c9c145ded9acd7debd5de9e9e84 /gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c | |
parent | 1be38ccb1b4a2208403ffe980073d6ed2bb61490 (diff) | |
download | gcc-2d698d3bb7f1b7761b35b31326a0326ce375ef8e.zip gcc-2d698d3bb7f1b7761b35b31326a0326ce375ef8e.tar.gz gcc-2d698d3bb7f1b7761b35b31326a0326ce375ef8e.tar.bz2 |
re PR tree-optimization/45232 (tree reassociation introduces undefined overflow)
2010-08-12 Richard Guenther <rguenther@suse.de>
PR tree-optimization/45232
* tree-ssa-reassoc.c (can_reassociate_p): Disable re-association
for types with undefined overflow.
(reassociate_bb): Allow re-associating of bit and min/max
operations for types with undefined overflow.
* tree-ssa-forwprop.c (associate_plusminus): New function.
(tree_ssa_forward_propagate_single_use_vars): Call it.
* gcc.dg/tree-ssa/pr44133.c: Adjust warning location.
* gcc.dg/tree-ssa/loop-7.c: Adjust.
* gcc.dg/tree-ssa/reassoc-1.c: XFAIL.
* gcc.dg/tree-ssa/reassoc-20.c: Add reassoc-1.c variant with
unsigned arithmetic.
* gcc.dg/tree-ssa/reassoc-14.c: Use unsigned arithmetic.
* gcc.dg/tree-ssa/reassoc-15.c: Likewise.
* gcc.dg/tree-ssa/reassoc-18.c: Likewise.
* gcc.dg/tree-ssa/reassoc-2.c: XFAIL.
* gcc.dg/tree-ssa/reassoc-21.c: Add reassoc-2.c variant with
unsigned arithmetic.
* gcc.dg/tree-ssa/reassoc-6.c: XFAIL.
* gcc.dg/tree-ssa/reassoc-22.c: Add reassoc-6.c variant with
unsigned arithmetic.
* gcc.dg/tree-ssa/reassoc-7.c: Use unsigned arithmetic.
* gcc.dg/tree-ssa/reassoc-9.c: XFAIL.
* gcc.dg/tree-ssa/reassoc-23.c: Add reassoc-9.c variant with
unsigned arithmetic.
* gcc.dg/tree-ssa/ssa-pre-2.c: Adjust.
* gcc.dg/tree-ssa/negate.c: Adjust.
* gcc.dg/vect/vect-1.c: Adjust.
* gfortran.dg/reassoc_6.f: XFAIL.
From-SVN: r163190
Diffstat (limited to 'gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c new file mode 100644 index 0000000..1cfb980 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized" } */ + +unsigned int a, b, c, d; +extern int printf (const char *, ...); +int main(void) +{ + unsigned int e; + unsigned int f; + /* We should be able to transform these into the same expression, and only have two additions. */ + e = a + b; + e = e + c; + f = c + a; + f = f + b; + printf ("%d %d\n", e, f); +} + +/* { dg-final { scan-tree-dump-times "b.._. \\\+ a.._." 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " \\\+ " 2 "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ |