2014-11-23 Tom de Vries <tom@codesourcery.com>
* passes.def: Add pass_split_crit_edges and pass_pre to pass group
pass_oacc_kernels.
* tree-ssa-pre.c (pass_pre::clone): New function.
* tree-ssa-sccvn.c (visit_use): Handle .omp_data_i init conservatively.
* tree-ssa-tail-merge.c (tail_merge_optimize): Don't run if omp not
expanded yet.
* g++.dg/init/new19.C: Replace pre with pre2.
* g++.dg/tree-ssa/pr33615-2.C: Same.
* gcc.dg/pr31847.c: Same.
* gcc.dg/pr41783.c: Same.
* gcc.dg/pr43864-2.c: Same.
* gcc.dg/pr43864-3.c: Same.
* gcc.dg/pr43864-4.c: Same.
* gcc.dg/pr43864.c: Same.
* gcc.dg/pr50763.c: Same.
* gcc.dg/pr51879-12.c: Same.
* gcc.dg/pr51879-16.c: Same.
* gcc.dg/pr51879-17.c: Same.
* gcc.dg/pr51879-18.c: Same.
* gcc.dg/pr51879-2.c: Same.
* gcc.dg/pr51879-3.c: Same.
* gcc.dg/pr51879-4.c: Same.
* gcc.dg/pr51879-6.c: Same.
* gcc.dg/pr51879-7.c: Same.
* gcc.dg/pr51879.c: Same.
* gcc.dg/pr58805.c: Same.
* gcc.dg/tail-merge-store.c: Same.
* gcc.dg/tree-ssa/loadpre1.c: Same.
* gcc.dg/tree-ssa/loadpre10.c: Same.
* gcc.dg/tree-ssa/loadpre11.c: Same.
* gcc.dg/tree-ssa/loadpre12.c: Same.
* gcc.dg/tree-ssa/loadpre13.c: Same.
* gcc.dg/tree-ssa/loadpre14.c: Same.
* gcc.dg/tree-ssa/loadpre15.c: Same.
* gcc.dg/tree-ssa/loadpre16.c: Same.
* gcc.dg/tree-ssa/loadpre17.c: Same.
* gcc.dg/tree-ssa/loadpre18.c: Same.
* gcc.dg/tree-ssa/loadpre19.c: Same.
* gcc.dg/tree-ssa/loadpre2.c: Same.
* gcc.dg/tree-ssa/loadpre20.c: Same.
* gcc.dg/tree-ssa/loadpre21.c: Same.
* gcc.dg/tree-ssa/loadpre22.c: Same.
* gcc.dg/tree-ssa/loadpre23.c: Same.
* gcc.dg/tree-ssa/loadpre24.c: Same.
* gcc.dg/tree-ssa/loadpre25.c: Same.
* gcc.dg/tree-ssa/loadpre3.c: Same.
* gcc.dg/tree-ssa/loadpre4.c: Same.
* gcc.dg/tree-ssa/loadpre5.c: Same.
* gcc.dg/tree-ssa/loadpre6.c: Same.
* gcc.dg/tree-ssa/loadpre7.c: Same.
* gcc.dg/tree-ssa/loadpre8.c: Same.
* gcc.dg/tree-ssa/pr23455.c: Same.
* gcc.dg/tree-ssa/pr35286.c: Same.
* gcc.dg/tree-ssa/pr35287.c: Same.
* gcc.dg/tree-ssa/pr43491.c: Same.
* gcc.dg/tree-ssa/pr47392.c: Same.
* gcc.dg/tree-ssa/ssa-fre-10.c: Same.
* gcc.dg/tree-ssa/ssa-pre-1.c: Same.
* gcc.dg/tree-ssa/ssa-pre-11.c: Same.
* gcc.dg/tree-ssa/ssa-pre-12.c: Same.
* gcc.dg/tree-ssa/ssa-pre-13.c: Same.
* gcc.dg/tree-ssa/ssa-pre-16.c: Same.
* gcc.dg/tree-ssa/ssa-pre-17.c: Same.
* gcc.dg/tree-ssa/ssa-pre-18.c: Same.
* gcc.dg/tree-ssa/ssa-pre-19.c: Same.
* gcc.dg/tree-ssa/ssa-pre-2.c: Same.
* gcc.dg/tree-ssa/ssa-pre-20.c: Same.
* gcc.dg/tree-ssa/ssa-pre-21.c: Same.
* gcc.dg/tree-ssa/ssa-pre-22.c: Same.
* gcc.dg/tree-ssa/ssa-pre-23.c: Same.
* gcc.dg/tree-ssa/ssa-pre-24.c: Same.
* gcc.dg/tree-ssa/ssa-pre-25.c: Same.
* gcc.dg/tree-ssa/ssa-pre-27.c: Same.
* gcc.dg/tree-ssa/ssa-pre-28.c: Same.
* gcc.dg/tree-ssa/ssa-pre-29.c: Same.
* gcc.dg/tree-ssa/ssa-pre-3.c: Same.
* gcc.dg/tree-ssa/ssa-pre-30.c: Same.
* gcc.dg/tree-ssa/ssa-pre-31.c: Same.
* gcc.dg/tree-ssa/ssa-pre-4.c: Same.
* gcc.dg/tree-ssa/ssa-pre-5.c: Same.
* gcc.dg/tree-ssa/ssa-pre-6.c: Same.
* gfortran.dg/pr43984.f90: Same.
---
gcc/passes.def | 2 ++
gcc/testsuite/g++.dg/init/new19.C | 6 +++---
gcc/testsuite/g++.dg/tree-ssa/pr33615-2.C | 6 +++---
gcc/testsuite/gcc.dg/pr31847.c | 6 +++---
gcc/testsuite/gcc.dg/pr41783.c | 8 ++++----
gcc/testsuite/gcc.dg/pr43864-2.c | 10 +++++-----
gcc/testsuite/gcc.dg/pr43864-3.c | 10 +++++-----
gcc/testsuite/gcc.dg/pr43864-4.c | 12 ++++++------
gcc/testsuite/gcc.dg/pr43864.c | 8 ++++----
gcc/testsuite/gcc.dg/pr50763.c | 6 +++---
gcc/testsuite/gcc.dg/pr51879-12.c | 8 ++++----
gcc/testsuite/gcc.dg/pr51879-16.c | 8 ++++----
gcc/testsuite/gcc.dg/pr51879-17.c | 8 ++++----
gcc/testsuite/gcc.dg/pr51879-18.c | 6 +++---
gcc/testsuite/gcc.dg/pr51879-2.c | 8 ++++----
gcc/testsuite/gcc.dg/pr51879-3.c | 6 +++---
gcc/testsuite/gcc.dg/pr51879-4.c | 6 +++---
gcc/testsuite/gcc.dg/pr51879-6.c | 6 +++---
gcc/testsuite/gcc.dg/pr51879-7.c | 6 +++---
gcc/testsuite/gcc.dg/pr51879.c | 6 +++---
gcc/testsuite/gcc.dg/pr58805.c | 6 +++---
gcc/testsuite/gcc.dg/tail-merge-store.c | 8 ++++----
gcc/testsuite/gcc.dg/tree-ssa/loadpre1.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre11.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre2.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre23.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre24.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre25.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre3.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre5.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c | 8 ++++----
gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/pr23455.c | 8 ++++----
gcc/testsuite/gcc.dg/tree-ssa/pr35286.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/pr35287.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/pr43491.c | 8 ++++----
gcc/testsuite/gcc.dg/tree-ssa/pr47392.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-10.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-1.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-11.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-12.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-13.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-17.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-18.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-19.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c | 8 ++++----
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-20.c | 8 ++++----
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-21.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-22.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-23.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-24.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-25.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-27.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-28.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-29.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-30.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-31.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c | 6 +++---
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c | 8 ++++----
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-6.c | 6 +++---
gcc/testsuite/gfortran.dg/pr43984.f90 | 6 +++---
gcc/tree-ssa-pre.c | 1 +
gcc/tree-ssa-sccvn.c | 4 +++-
gcc/tree-ssa-tail-merge.c | 3 ++-
80 files changed, 256 insertions(+), 250 deletions(-)
@@ -90,6 +90,8 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_oacc_kernels);
PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels)
NEXT_PASS (pass_ch_oacc_kernels);
+ NEXT_PASS (pass_split_crit_edges);
+ NEXT_PASS (pass_pre);
POP_INSERT_PASSES ()
NEXT_PASS (pass_expand_omp_ssa);
NEXT_PASS (pass_fre);
@@ -1,5 +1,5 @@
// { dg-do compile }
-// { dg-options "-O2 -fstrict-aliasing -fdump-tree-pre-details" }
+// { dg-options "-O2 -fstrict-aliasing -fdump-tree-pre2-details" }
// Make sure we hoist invariants out of the loop even in the presence
// of placement new. This is similar to code in tramp3d.
@@ -69,5 +69,5 @@ int c::foo(int f1, int f2, int f3)
return sum;
}
-// { dg-final { scan-tree-dump "Replaced.*->ai\\\[0\\\]" "pre" } }
-// { dg-final { cleanup-tree-dump "pre" } }
+// { dg-final { scan-tree-dump "Replaced.*->ai\\\[0\\\]" "pre2" } }
+// { dg-final { cleanup-tree-dump "pre2" } }
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fnon-call-exceptions -fdump-tree-pre-details -w" } */
+/* { dg-options "-O2 -fnon-call-exceptions -fdump-tree-pre2-details -w" } */
extern volatile int y;
@@ -16,5 +16,5 @@ foo (double a, int x)
// The expression 1.0 / 0.0 should not be treated as a loop invariant
// if it may throw an exception.
-// { dg-final { scan-tree-dump-times "Replaced 1\\\.0e\\\+0 / 0\\\.0" 0 "pre" } }
-// { dg-final { cleanup-tree-dump "pre" } }
+// { dg-final { scan-tree-dump-times "Replaced 1\\\.0e\\\+0 / 0\\\.0" 0 "pre2" } }
+// { dg-final { cleanup-tree-dump "pre2" } }
@@ -1,7 +1,7 @@
/* PR 31847 */
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-all" } */
+/* { dg-options "-O2 -fdump-tree-pre2-all" } */
extern int bar(int);
@@ -11,5 +11,5 @@ int foo()
return bar(a);
}
-/* { dg-final { scan-tree-dump-not "Created value for " "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-not "Created value for " "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -fdump-tree-pre" } */
+/* { dg-options "-O3 -fdump-tree-pre2" } */
int db[100];
int a_global_var, fact;
int main()
@@ -15,6 +15,6 @@ int main()
}
/* We want to have exactly one load (not two) from a_global_var,
and we want that load to be into a PRE temporary. */
-/* { dg-final { scan-tree-dump-times "= a_global_var;" 1 "pre" } } */
-/* { dg-final { scan-tree-dump "pretmp\[^\\n\]* = a_global_var;" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "= a_global_var;" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump "pretmp\[^\\n\]* = a_global_var;" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
int
f (int c, int b, int d)
@@ -17,7 +17,7 @@ f (int c, int b, int d)
return r;
}
-/* { dg-final { scan-tree-dump-times "if " 0 "pre"} } */
-/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre"} } */
-/* { dg-final { scan-tree-dump-not "Invalid sum" "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "if " 0 "pre2" } } */
+/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump-not "Invalid sum" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
/* Commutative case. */
@@ -18,7 +18,7 @@ int f(int c, int b, int d)
return r;
}
-/* { dg-final { scan-tree-dump-times "if " 0 "pre"} } */
-/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre"} } */
-/* { dg-final { scan-tree-dump-not "Invalid sum" "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "if " 0 "pre2" } } */
+/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump-not "Invalid sum" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
/* Different stmt order. */
@@ -22,8 +22,8 @@ int f(int c, int b, int d)
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 { scan-tree-dump-not "Invalid sum" "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "if " 0 "pre2" } } */
+/* { dg-final { scan-tree-dump-times "_.*\\\+.*_" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump-times " - " 2 "pre2" } } */
+/* { dg-final { scan-tree-dump-not "Invalid sum" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
extern void foo (char*, int);
extern void mysprintf (char *, char *);
@@ -31,6 +31,6 @@ hprofStartupp (char *outputFileName, char *ctx)
return ctx;
}
-/* { dg-final { scan-tree-dump-times "myfree \\(" 1 "pre"} } */
-/* { dg-final { scan-tree-dump-not "Invalid sum" "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "myfree \\(" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump-not "Invalid sum" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-pre" } */
+/* { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-pre2" } */
int bar (int i);
@@ -12,5 +12,5 @@ foo (int c, int d)
while (c == d);
}
-/* { dg-final { scan-tree-dump-times "== 33" 2 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "== 33" 2 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
__attribute__((pure)) int bar (int);
__attribute__((pure)) int bar2 (int);
@@ -24,6 +24,6 @@ foo (int y)
baz (a);
}
-/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */
-/* { dg-final { scan-tree-dump-times "bar2 \\(" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump-times "bar2 \\(" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
struct S {
int i;
@@ -27,6 +27,6 @@ int bar (int c) {
return r;
}
-/* { dg-final { scan-tree-dump-times "foo \\(" 1 "pre"} } */
-/* { dg-final { scan-tree-dump-times "foo2 \\(" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "foo \\(" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump-times "foo2 \\(" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
struct S {
int i;
@@ -27,6 +27,6 @@ int bar (int c) {
return r;
}
-/* { dg-final { scan-tree-dump-times "foo \\(" 2 "pre"} } */
-/* { dg-final { scan-tree-dump-times "foo2 \\(" 2 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "foo \\(" 2 "pre2" } } */
+/* { dg-final { scan-tree-dump-times "foo2 \\(" 2 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre -fno-tree-copy-prop -fno-tree-dominator-opts -fno-tree-copyrename" } */
+/* { dg-options "-O2 -fdump-tree-pre2 -fno-tree-copy-prop -fno-tree-dominator-opts -fno-tree-copyrename" } */
extern int foo (void);
@@ -13,5 +13,5 @@ void bar (int c, int *p)
*q = foo ();
}
-/* { dg-final { scan-tree-dump-times "foo \\(" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "foo \\(" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
int bar (int);
void baz (int);
@@ -14,6 +14,6 @@ foo (int y)
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" } } */
+/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump-times "baz \\(" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
int bar (int);
void baz (int);
@@ -15,5 +15,5 @@ foo (int y)
baz (a);
}
-/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
int bar (int);
void baz (int);
@@ -12,5 +12,5 @@ int foo (int y)
return a + b;
}
-/* { dg-final { scan-tree-dump-times "bar \\(" 2 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "bar \\(" 2 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
int bar (int);
@@ -23,5 +23,5 @@ foo (int y)
baz (a);
}
-/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
int z;
@@ -12,5 +12,5 @@ foo (int y)
z = 5;
}
-/* { dg-final { scan-tree-dump-times "z = 5" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "z = 5" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
int bar (int);
void baz (int);
@@ -15,5 +15,5 @@ foo (int y)
baz (a);
}
-/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-tail-merge -fdump-tree-pre" } */
+/* { dg-options "-O2 -ftree-tail-merge -fdump-tree-pre2" } */
/* Type that matches the 'p' constraint. */
#define TYPE void *
@@ -20,5 +20,5 @@ foo (int n, TYPE *x, TYPE *y)
bar (y);
}
-/* { dg-final { scan-tree-dump-times "__asm__" 2 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "__asm__" 2 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-tail-merge -fdump-tree-pre" } */
+/* { dg-options "-O2 -ftree-tail-merge -fdump-tree-pre2" } */
int z;
int x;
@@ -17,6 +17,6 @@ f (int c, int d)
}
}
-/* { dg-final { scan-tree-dump-times "duplicate of" 1 "pre"} } */
-/* { dg-final { scan-tree-dump-times "z = 5" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "duplicate of" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump-times "z = 5" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int foo(int *a, int argc)
{
int c;
@@ -14,5 +14,5 @@ int foo(int *a, int argc)
e = *a;
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
struct tree_common
{
int code;
@@ -44,6 +44,6 @@ L19:
L23:
return expr;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats -fno-tree-cselim" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats -fno-tree-cselim" } */
int *t;
int g(int);
int f(int tt)
@@ -9,6 +9,6 @@ int f(int tt)
*t1 = 2;
return g(*t1);
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef int type[2];
type *t;
int g(int);
@@ -11,5 +11,5 @@ int f(int tt)
return g((*t1)[0]);
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int t[2];
int g(int);
int f(int tt)
@@ -9,5 +9,5 @@ int f(int tt)
return g(t[0]);
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef int type[2];
int foo(type *a, int argc)
{
@@ -15,5 +15,5 @@ int foo(type *a, int argc)
e = (*a)[0];
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef int type[2];
int foo(type *a, int argc, int t)
{
@@ -15,5 +15,5 @@ int foo(type *a, int argc, int t)
e = (*a)[t];
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef int type[2];
int foo(type *a, int argc)
{
@@ -12,5 +12,5 @@ int foo(type *a, int argc)
e = (*a)[0];
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef int type[2];
int foo(type *a, int argc)
{
@@ -12,5 +12,5 @@ int foo(type *a, int argc)
e = (*a)[argc];
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef int type[2];
int main(type *a, int argc)
{
@@ -12,5 +12,5 @@ int main(type *a, int argc)
e = (*a)[argc];
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" { xfail *-*-* } } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" { xfail *-*-* } } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef int type[2];
int foo(type *a, int argc)
{
@@ -12,5 +12,5 @@ int foo(type *a, int argc)
e = (*a)[argc];
return e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int main(int *a, int argc)
{
int b;
@@ -14,5 +14,5 @@ int main(int *a, int argc)
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef int type[2];
int foo(type *a, int argc)
{
@@ -12,5 +12,5 @@ int foo(type *a, int argc)
e = (*a)[argc];
return e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef int type[2];
int main(type *a, int argc)
{
@@ -15,5 +15,5 @@ int main(type *a, int argc)
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef int type[2];
int main(type *a, int argc)
{
@@ -15,5 +15,5 @@ int main(type *a, int argc)
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
struct {
int a;
@@ -21,5 +21,5 @@ int foo(int argc)
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int a;
@@ -20,5 +20,5 @@ int foo(int argc)
/* We will move the load of a out of the loop. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
struct X { int i; };
int foo(struct X *a, int argc)
{
@@ -16,5 +16,5 @@ int foo(struct X *a, int argc)
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int foo(int **a,int argc)
{
int b;
@@ -20,5 +20,5 @@ int foo(int **a,int argc)
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int main(int *a, int argc)
{
int b;
@@ -15,5 +15,5 @@ int main(int *a, int argc)
return d + e;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int p;
int r;
@@ -20,5 +20,5 @@ int foo(int argc)
r = 9;
return q + a();
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile { target nonpic } } */
-/* { dg-options "-O2 -fdump-tree-pre-stats -fdump-tree-fre1" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats -fdump-tree-fre1" } */
#include <stddef.h>
union tree_node;
@@ -74,7 +74,7 @@ main (void)
}
/* { dg-final { scan-tree-dump-not "= unexpanded_var_list;" "fre1" } } */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { scan-tree-dump-times "Insertions: 2" 1 "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump-times "Insertions: 2" 1 "pre2" } } */
/* { dg-final { cleanup-tree-dump "fre1" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
/* We can't eliminate the *p load here in any sane way, as eshup8 may
change it. */
@@ -16,5 +16,5 @@ enormlz (x)
eshup8 (x);
}
}
-/* { dg-final { scan-tree-dump-not "Eliminated:" "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-not "Eliminated:" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats -std=gnu89" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats -std=gnu89" } */
typedef union tree_node *tree;
struct tree_common
{
@@ -93,5 +93,5 @@ rewrite_add_phi_arguments (basic_block bb)
get_reaching_def ((get_def_from_ptr (get_phi_result_ptr (phi)))->ssa_name.var);
}
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
#ifdef _WIN64
#define LONG long long
#else
@@ -25,6 +25,6 @@ bi_windup(unsigned int *outbuf, unsigned int bi_buf)
/* We should eliminate one load of outcnt, which will in turn let us eliminate
one multiply of outcnt which will in turn let us eliminate
one add involving outcnt and outbuf. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "pre" {target { ! avr-*-* } } } } */
-/* { dg-final { scan-tree-dump-times "Eliminated: 4" 1 "pre" {target { avr-*-* } } } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "pre2" {target { ! avr-*-* } } } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 4" 1 "pre2" {target { avr-*-* } } } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int g2;
struct A {
int a; int b;
@@ -19,5 +19,5 @@ int foo(int a, int b)
}
/* We will eliminate the g1.a from the return statement as fully redundant,
and remove one calculation of a + b. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int *gp;
int foo(int p)
{
@@ -11,5 +11,5 @@ int foo(int p)
}
/* We will eliminate one load of gp and one indirect load of *gp. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
#define REGISTER register
@@ -37,6 +37,6 @@ long foo(long data, long v)
}
/* We should not eliminate global register variable when it is the RHS of
a single assignment. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre" { target { arm*-*-* i?86-*-* mips*-*-* x86_64-*-* } } } } */
-/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "pre" { target { ! { arm*-*-* i?86-*-* mips*-*-* x86_64-*-* } } } } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre2" { target { arm*-*-* i?86-*-* mips*-*-* x86_64-*-* } } } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "pre2" { target { ! { arm*-*-* i?86-*-* mips*-*-* x86_64-*-* } } } } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
struct A
{
@@ -38,5 +38,5 @@ main ()
return 0;
}
-/* { dg-final { scan-tree-dump "Eliminated: 1" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "Eliminated: 1" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
union loc { unsigned reg; signed offset; };
void __frame_state_for (volatile char *state_in, int x)
@@ -22,5 +22,5 @@ void __frame_state_for (volatile char *state_in, int x)
invariants and the volatileness of state_in prevents DSE of the
first store. Thus, this is XFAILed. */
-/* { dg-final { scan-tree-dump "Insertions: 2" "pre" { xfail *-*-* } } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "Insertions: 2" "pre2" { xfail *-*-* } } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
extern int printf (const char *, ...);
int foo(int argc, char **argv)
{
@@ -17,5 +17,5 @@ int foo(int argc, char **argv)
}
/* We should eliminate one evaluation of b + c along the main path,
causing one reload. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
double cos (double);
double f(double a)
{
@@ -17,5 +17,5 @@ double f(double a)
return d + c;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
double cos (double) __attribute__ ((const));
double sin (double) __attribute__ ((const));
double f(double a)
@@ -23,5 +23,5 @@ double f(double a)
return d + c;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
double cos (double) __attribute__ ((const));
double sin (double) __attribute__ ((const));
double f(double a)
@@ -22,5 +22,5 @@ double f(double a)
return d + c;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats -std=c99" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats -std=c99" } */
int foo(int k, int *x)
{
int j=0;
@@ -11,5 +11,5 @@ int foo(int k, int *x)
} while (++j<k);
return res;
}
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
typedef union {
int i;
@@ -14,5 +14,5 @@ int foo(U *u, int b, int i)
return u->i;
}
-/* { dg-final { scan-tree-dump "Eliminated: 1" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "Eliminated: 1" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-details" } */
+/* { dg-options "-O2 -fdump-tree-pre2-details" } */
struct Bar { int a; int b; };
struct Foo { int x; struct Bar y; };
@@ -17,5 +17,5 @@ int bar (int b)
return c;
}
-/* { dg-final { scan-tree-dump "Replaced foo \\(f.y\\)" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "Replaced foo \\(f.y\\)" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
struct Loc {
int x[3];
@@ -35,5 +35,5 @@ int foo (int i, int j, int k, int b)
}
/* All three loads should be eliminated. */
-/* { dg-final { scan-tree-dump "Eliminated: 3" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "Eliminated: 3" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int motion_test1(int data, int data_0, int data_3, int v)
{
int i;
@@ -19,6 +19,6 @@ int motion_test1(int data, int data_0, int data_3, int v)
main path. We cannot re-associate v * t * u due to undefined
signed overflow so we do not eliminate one computation of v * i along
the main path. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre" { xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre2" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
double pcheck;
@@ -30,6 +30,6 @@ bb18:
/* We should have inserted two PHI nodes and the one in the i-loop
should have 0.0 in the argument coming from the bb18 block. */
-/* { dg-final { scan-tree-dump "New PHIs: 2" "pre" } } */
-/* { dg-final { scan-tree-dump "PHI <.*0\\\.0" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "New PHIs: 2" "pre2" } } */
+/* { dg-final { scan-tree-dump "PHI <.*0\\\.0" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
long
NumSift (long *array, unsigned long k)
@@ -11,5 +11,5 @@ NumSift (long *array, unsigned long k)
/* There should be only two loads left. */
-/* { dg-final { scan-tree-dump-times "= \\\*\[^\n;\]*;" 2 "pre" { xfail { ! size32plus } } } } */ /* xfail: PR tree-optimization/58169 */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "= \\\*\[^\n;\]*;" 2 "pre2" { xfail { ! size32plus } } } } */ /* xfail: PR tree-optimization/58169 */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int foo (int i, int b)
{
@@ -9,5 +9,5 @@ int foo (int i, int b)
return j - i;
}
-/* { dg-final { scan-tree-dump "Eliminated: 1" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "Eliminated: 1" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
struct { int x; int y; } global;
void foo(int n)
@@ -9,5 +9,5 @@ void foo(int n)
global.y += global.x*global.x;
}
-/* { dg-final { scan-tree-dump "Eliminated: 3" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "Eliminated: 3" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
void foo(int *p, double *x, int n)
{
@@ -11,5 +11,5 @@ void foo(int *p, double *x, int n)
/* We should remove the unnecessary insertion of a phi-node and
_not_ end up using the phi result for replacement *p. */
-/* { dg-final { scan-tree-dump-not "= prephitmp" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-not "= prephitmp" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
struct X { int i; };
@@ -19,5 +19,5 @@ int foo (int x)
/* We should eliminate the load from p for a PHI node with values 1 and 2. */
-/* { dg-final { scan-tree-dump "Eliminated: 1" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "Eliminated: 1" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
int foo (int i, int j, int b)
{
@@ -24,5 +24,5 @@ int foo2 (int i, int j, int b)
return res;
}
-/* { dg-final { scan-tree-dump-times "# prephitmp" 2 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "# prephitmp" 2 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,6 +1,6 @@
/* PR37997 */
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-details" } */
+/* { dg-options "-O2 -fdump-tree-pre2-details" } */
int foo (int i, int b, int result)
{
@@ -17,5 +17,5 @@ int foo (int i, int b, int result)
/* We should insert i + 1 into the if (b) path as well as the simplified
i + 1 & -2 expression. And do replacement with two PHI temps. */
-/* { dg-final { scan-tree-dump-times "with prephitmp" 2 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "with prephitmp" 2 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-details" } */
+/* { dg-options "-O2 -fdump-tree-pre2-details" } */
void bark (void);
int flag, hoist, y, z;
@@ -18,5 +18,5 @@ foo (void)
/* We should see the partial redundancy of hoist + 4, not being confused
about bark () possibly clobbering hoist. */
-/* { dg-final { scan-tree-dump "Replaced hoist" "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump "Replaced hoist" "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
unsigned foo1 (unsigned a, unsigned b)
{
unsigned i, j, k;
@@ -11,5 +11,5 @@ unsigned foo1 (unsigned a, unsigned b)
return j + k;
}
/* We should eliminate both 4*b and 4*a from the main body of the loop */
-/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-require-effective-target int32 } */
-/* { dg-options "-O2 -fdump-tree-pre-details" } */
+/* { dg-options "-O2 -fdump-tree-pre2-details" } */
int f;
int g;
@@ -24,5 +24,5 @@ bar (int b, int x)
/* We should see the partial redundant loads of f even though they
are using different types (of the same size). */
-/* { dg-final { scan-tree-dump-times "Replaced MEM" 2 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Replaced MEM" 2 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre" } */
+/* { dg-options "-O2 -fdump-tree-pre2" } */
typedef struct {
unsigned int key;
@@ -43,5 +43,5 @@ int foo (S1 *root, int N)
return 0;
}
-/* { dg-final { scan-tree-dump-times "key" 4 "pre" } } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "key" 4 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int foo(void)
{
int x, c, y;
@@ -11,5 +11,5 @@ int foo(void)
}
/* We should eliminate the x+1 computation from this routine, replacing
it with a phi of 3, 4 */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int
foo (int i)
{
@@ -12,6 +12,6 @@ foo (int i)
}
/* We should detect that a+b is the same along both edges, and replace it with
5 */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { scan-tree-dump-times "Insertions" 0 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { scan-tree-dump-times "Insertions" 0 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-pre-stats" } */
+/* { dg-options "-O2 -fdump-tree-pre2-stats" } */
int foo(int x)
{
int c, y;
@@ -10,5 +10,5 @@ int foo(int x)
}
/* We should eliminate one evaluation of x + 1 along the x = 2 path,
causing one elimination. */
-/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
-/* { dg-final { cleanup-tree-dump "pre" } } */
+/* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre2" } } */
+/* { dg-final { cleanup-tree-dump "pre2" } } */
@@ -1,5 +1,5 @@
! { dg-do compile }
-! { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-pre" }
+! { dg-options "-O2 -fno-tree-dominator-opts -fdump-tree-pre2" }
module test
type shell1quartet_type
@@ -52,5 +52,5 @@ end
! There should be three loads from iyz.data, not four.
-! { dg-final { scan-tree-dump-times "= iyz.data" 3 "pre" } }
-! { dg-final { cleanup-tree-dump "pre" } }
+! { dg-final { scan-tree-dump-times "= iyz.data" 3 "pre2" } }
+! { dg-final { cleanup-tree-dump "pre2" } }
@@ -4767,6 +4767,7 @@ public:
/* opt_pass methods: */
virtual bool gate (function *) { return flag_tree_pre != 0; }
virtual unsigned int execute (function *);
+ opt_pass * clone () { return new pass_pre (m_ctxt); }
}; // class pass_pre
@@ -65,6 +65,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-ssa-sccvn.h"
#include "tree-cfg.h"
#include "domwalk.h"
+#include "omp-low.h"
/* This algorithm is based on the SCC algorithm presented by Keith
Cooper and L. Taylor Simpson in "SCC-Based Value numbering"
@@ -3446,7 +3447,8 @@ visit_use (tree use)
{
if (gimple_code (stmt) == GIMPLE_PHI)
changed = visit_phi (stmt);
- else if (gimple_has_volatile_ops (stmt))
+ else if (gimple_has_volatile_ops (stmt)
+ || gimple_stmt_omp_data_i_init_p (stmt))
changed = defs_to_varying (stmt);
else if (is_gimple_assign (stmt))
{
@@ -1668,7 +1668,8 @@ tail_merge_optimize (unsigned int todo)
int max_iterations = PARAM_VALUE (PARAM_MAX_TAIL_MERGE_ITERATIONS);
if (!flag_tree_tail_merge
- || max_iterations == 0)
+ || max_iterations == 0
+ || (cfun->curr_properties & PROP_gimple_eomp) == 0)
return 0;
timevar_push (TV_TREE_TAIL_MERGE);
--
1.9.1