diff options
author | Tom de Vries <tom@codesourcery.com> | 2012-04-27 06:28:49 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2012-04-27 06:28:49 +0000 |
commit | b5f5f2fd3737238c418bb8982470f7961b8be277 (patch) | |
tree | 5f18065ce9aba7616ff78ab66a3dc09ca2922bf9 /gcc | |
parent | 0011592137c4994dab5219e04b619e4d7f907851 (diff) | |
download | gcc-b5f5f2fd3737238c418bb8982470f7961b8be277.zip gcc-b5f5f2fd3737238c418bb8982470f7961b8be277.tar.gz gcc-b5f5f2fd3737238c418bb8982470f7961b8be277.tar.bz2 |
re PR tree-optimization/51879 (Missed tail merging with non-const/pure calls)
2012-04-27 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/51879
* gcc.dg/pr51879.c: New test.
* gcc.dg/pr51879-2.c: Same.
* gcc.dg/pr51879-3.c: Same.
* gcc.dg/pr51879-4.c: Same.
* gcc.dg/pr51879-6.c: Same.
From-SVN: r186895
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr51879-2.c | 19 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr51879-3.c | 19 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr51879-4.c | 16 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr51879-6.c | 27 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr51879.c | 19 |
6 files changed, 109 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 576c4aa..7643b5a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2012-04-27 Tom de Vries <tom@codesourcery.com> + + PR tree-optimization/51879 + * gcc.dg/pr51879.c: New test. + * gcc.dg/pr51879-2.c: Same. + * gcc.dg/pr51879-3.c: Same. + * gcc.dg/pr51879-4.c: Same. + * gcc.dg/pr51879-6.c: Same. + 2012-04-26 Paolo Carlini <paolo.carlini@oracle.com> PR c++/53096 diff --git a/gcc/testsuite/gcc.dg/pr51879-2.c b/gcc/testsuite/gcc.dg/pr51879-2.c new file mode 100644 index 0000000..db385cb --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr51879-2.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +int bar (int); +void baz (int); + +void +foo (int y) +{ + int a; + if (y) + baz (bar (7) + 6); + else + baz (bar (7) + 6); +} + +/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */ +/* { dg-final { scan-tree-dump-times "baz \\(" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr51879-3.c b/gcc/testsuite/gcc.dg/pr51879-3.c new file mode 100644 index 0000000..be4b374 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr51879-3.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +int bar (int); +void baz (int); + +void +foo (int y) +{ + int a; + if (y == 6) + a = bar (7) + 6; + else + a = bar (7) + 6; + baz (a); +} + +/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr51879-4.c b/gcc/testsuite/gcc.dg/pr51879-4.c new file mode 100644 index 0000000..5cb47af --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr51879-4.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +int bar (int); +void baz (int); + +int foo (int y) +{ + int a, b; + a = bar (7) + 6; + b = bar (7) + 6; + return a + b; +} + +/* { dg-final { scan-tree-dump-times "bar \\(" 2 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr51879-6.c b/gcc/testsuite/gcc.dg/pr51879-6.c new file mode 100644 index 0000000..8362a17 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr51879-6.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + + +int bar (int); +void baz (int); +void bla (int); + +void +foo (int y) +{ + int a; + if (y == 6) + { + bla (5); + a = bar (7); + } + else + { + bla (5); + a = bar (7); + } + baz (a); +} + +/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr51879.c b/gcc/testsuite/gcc.dg/pr51879.c new file mode 100644 index 0000000..060624f --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr51879.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +int bar (int); +void baz (int); + +void +foo (int y) +{ + int a; + if (y == 6) + a = bar (7); + else + a = bar (7); + baz (a); +} + +/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ |