aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2011-09-27 16:12:35 +0000
committerTom de Vries <vries@gcc.gnu.org>2011-09-27 16:12:35 +0000
commitbaaa40aeca4a95a6e250e14e8f1e8b2e1239c864 (patch)
tree2b71d95dbe1af018b18208abbc8931a37536072c
parentc9e93168073f45d0d2ca8cce8008116ef6b1a86a (diff)
downloadgcc-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/ChangeLog10
-rw-r--r--gcc/testsuite/gcc.dg/fold-compare-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr43864-2.c22
-rw-r--r--gcc/testsuite/gcc.dg/pr43864-3.c23
-rw-r--r--gcc/testsuite/gcc.dg/pr43864-4.c28
-rw-r--r--gcc/testsuite/gcc.dg/pr43864.c35
-rw-r--r--gcc/testsuite/gcc.dg/uninit-pred-2_c.c2
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);