diff options
author | Tom de Vries <tom@codesourcery.com> | 2011-09-27 16:12:35 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2011-09-27 16:12:35 +0000 |
commit | baaa40aeca4a95a6e250e14e8f1e8b2e1239c864 (patch) | |
tree | 2b71d95dbe1af018b18208abbc8931a37536072c | |
parent | c9e93168073f45d0d2ca8cce8008116ef6b1a86a (diff) | |
download | gcc-baaa40aeca4a95a6e250e14e8f1e8b2e1239c864.zip gcc-baaa40aeca4a95a6e250e14e8f1e8b2e1239c864.tar.gz gcc-baaa40aeca4a95a6e250e14e8f1e8b2e1239c864.tar.bz2 |
re PR middle-end/43864 (Same basic blocks should be merged)
2011-09-27 Tom de Vries <tom@codesourcery.com>
PR middle-end/43864
* gcc.dg/fold-compare-2.c (dg-options): Add -fno-tree-tail-merge.
* gcc/testsuite/gcc.dg/uninit-pred-2_c.c: Same.
* gcc.dg/pr43864.c: New test.
* gcc.dg/pr43864-2.c: Same.
* gcc.dg/pr43864-3.c: Same.
* gcc.dg/pr43864-4.c: Same.
From-SVN: r179276
-rw-r--r-- | gcc/testsuite/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/fold-compare-2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr43864-2.c | 22 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr43864-3.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr43864-4.c | 28 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr43864.c | 35 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/uninit-pred-2_c.c | 2 |
7 files changed, 120 insertions, 2 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3195338..c237ebb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2011-09-27 Tom de Vries <tom@codesourcery.com> + + PR middle-end/43864 + * gcc.dg/fold-compare-2.c (dg-options): Add -fno-tree-tail-merge. + * gcc/testsuite/gcc.dg/uninit-pred-2_c.c: Same. + * gcc.dg/pr43864.c: New test. + * gcc.dg/pr43864-2.c: Same. + * gcc.dg/pr43864-3.c: Same. + * gcc.dg/pr43864-4.c: Same. + 2011-09-27 Jan Hubicka <jh@suse.cz> * gcc.dg/ipa/inline-5.c: New testcase. diff --git a/gcc/testsuite/gcc.dg/fold-compare-2.c b/gcc/testsuite/gcc.dg/fold-compare-2.c index 9746b85..15ea462 100644 --- a/gcc/testsuite/gcc.dg/fold-compare-2.c +++ b/gcc/testsuite/gcc.dg/fold-compare-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fdump-tree-vrp1" } */ +/* { dg-options "-O2 -fno-tree-tail-merge -fdump-tree-vrp1" } */ extern void abort (void); diff --git a/gcc/testsuite/gcc.dg/pr43864-2.c b/gcc/testsuite/gcc.dg/pr43864-2.c new file mode 100644 index 0000000..1a0d949 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr43864-2.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +int +f (int c, int b, int d) +{ + int r, e; + + if (c) + r = b + d; + else + { + e = b + d; + r = e; + } + + return r; +} + +/* { dg-final { scan-tree-dump-times "if " 0 "pre"} } */ +/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr43864-3.c b/gcc/testsuite/gcc.dg/pr43864-3.c new file mode 100644 index 0000000..622a564 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr43864-3.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +/* Commutative case. */ + +int f(int c, int b, int d) +{ + int r, e; + + if (c) + r = b + d; + else + { + e = d + b; + r = e; + } + + return r; +} + +/* { dg-final { scan-tree-dump-times "if " 0 "pre"} } */ +/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr43864-4.c b/gcc/testsuite/gcc.dg/pr43864-4.c new file mode 100644 index 0000000..3e3d643 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr43864-4.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +/* Different stmt order. */ + +int f(int c, int b, int d) +{ + int r, r2, e; + + if (c) + { + r = b + d; + r2 = d - b; + } + else + { + r2 = d - b; + e = d + b; + r = e; + } + + return r - r2; +} + +/* { dg-final { scan-tree-dump-times "if " 0 "pre"} } */ +/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre"} } */ +/* { dg-final { scan-tree-dump-times " - " 2 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/pr43864.c b/gcc/testsuite/gcc.dg/pr43864.c new file mode 100644 index 0000000..03c2d49 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr43864.c @@ -0,0 +1,35 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre" } */ + +extern void foo (char*, int); +extern void mysprintf (char *, char *); +extern void myfree (void *); +extern int access (char *, int); +extern int fopen (char *, int); + +char * +hprofStartupp (char *outputFileName, char *ctx) +{ + char fileName[1000]; + int fp; + mysprintf (fileName, outputFileName); + if (access (fileName, 1) == 0) + { + myfree (ctx); + return 0; + } + + fp = fopen (fileName, 0); + if (fp == 0) + { + myfree (ctx); + return 0; + } + + foo (outputFileName, fp); + + return ctx; +} + +/* { dg-final { scan-tree-dump-times "myfree \\(" 1 "pre"} } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.dg/uninit-pred-2_c.c b/gcc/testsuite/gcc.dg/uninit-pred-2_c.c index 941f632..bf094d1 100644 --- a/gcc/testsuite/gcc.dg/uninit-pred-2_c.c +++ b/gcc/testsuite/gcc.dg/uninit-pred-2_c.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-Wuninitialized -O2" } */ +/* { dg-options "-Wuninitialized -O2 -fno-tree-tail-merge" } */ int g; void bar (void); |