diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2015-04-22 03:32:14 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2015-04-22 01:32:14 +0000 |
commit | 5a33401eabe208e602a94bbb1921ec1b19b1f185 (patch) | |
tree | 0cf6448d2193e3d8eab8d2eca4091ff512fb348d | |
parent | 6e37129a8d084acccf4f1ae345def97fe9a6f0d5 (diff) | |
download | gcc-5a33401eabe208e602a94bbb1921ec1b19b1f185.zip gcc-5a33401eabe208e602a94bbb1921ec1b19b1f185.tar.gz gcc-5a33401eabe208e602a94bbb1921ec1b19b1f185.tar.bz2 |
re PR ipa/65076 (16% tramp3d-v4.cpp compile time regression)
PR ipa/65076
* passes.def (early_optimizations): Add pass_dse.
* g++.dg/tree-ssa/pr61034.C: Update template.
* g++.dg/warn/Warray-bounds.C: Harden for DSE.
* gcc.dg/Warray-bounds-11.c: Likewise.
* gcc.dg/Warray-bounds.c: Likewise.
From-SVN: r222305
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/passes.def | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tree-ssa/pr61034.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Warray-bounds.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/Warray-bounds-11.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/Warray-bounds.c | 8 |
7 files changed, 35 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 64a7b4b..6959c06 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-04-21 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/65076 + * passes.def (early_optimizations): Add pass_dse. + 2015-04-21 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * defaults.h (INSN_REFERENCES_ARE_DELAYED): New definition. diff --git a/gcc/passes.def b/gcc/passes.def index ffa63b5..4c20cdf 100644 --- a/gcc/passes.def +++ b/gcc/passes.def @@ -89,6 +89,7 @@ along with GCC; see the file COPYING3. If not see NEXT_PASS (pass_build_ealias); NEXT_PASS (pass_fre); NEXT_PASS (pass_merge_phi); + NEXT_PASS (pass_dse); NEXT_PASS (pass_cd_dce); NEXT_PASS (pass_early_ipa_sra); NEXT_PASS (pass_tail_recursion); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c8f4aeb..8b2b177 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2015-04-21 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/65076 + * g++.dg/tree-ssa/pr61034.C: Update template. + * g++.dg/warn/Warray-bounds.C: Harden for DSE. + * gcc.dg/Warray-bounds-11.c: Likewise. + * gcc.dg/Warray-bounds.c: Likewise. + 2015-04-21 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/65234 diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr61034.C b/gcc/testsuite/g++.dg/tree-ssa/pr61034.C index 9ec3995..91e694e 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr61034.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr61034.C @@ -42,6 +42,6 @@ bool f(I a, I b, I c, I d) { // This works only if everything is inlined into 'f'. // { dg-final { scan-tree-dump-times ";; Function" 1 "fre2" } } -// { dg-final { scan-tree-dump-times "free" 19 "fre2" } } +// { dg-final { scan-tree-dump-times "free" 18 "fre2" } } // { dg-final { scan-tree-dump-times "unreachable" 11 "fre2" } } // { dg-final { cleanup-tree-dump "fre2" } } diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds.C b/gcc/testsuite/g++.dg/warn/Warray-bounds.C index 61c7c5d..574e9de 100644 --- a/gcc/testsuite/g++.dg/warn/Warray-bounds.C +++ b/gcc/testsuite/g++.dg/warn/Warray-bounds.C @@ -11,6 +11,7 @@ static inline int n(void) { void g(int *p); void h(int p); +void bar (void *); int* f(void) { int b[10]; @@ -27,6 +28,7 @@ int* f(void) { a[ 9] = 0; a[10] = 0; /* { dg-warning "array subscript" } */ a[11] = 0; /* { dg-warning "array subscript" } */ + bar (a); a[2 * n() - 11] = 1; /* { dg-warning "array subscript" } */ a[2 * n() - 10] = 1; a[2 * n() - 1] = 1; @@ -38,6 +40,7 @@ int* f(void) { b[ 9] = 0; b[10] = 0; /* { dg-warning "array subscript" } */ b[11] = 0; /* { dg-warning "array subscript" } */ + bar (b); b[2 * n() - 11] = 1; /* { dg-warning "array subscript" } */ b[2 * n() - 10] = 1; b[2 * n() - 1] = 1; @@ -49,6 +52,7 @@ int* f(void) { c.c[ 9] = 0; c.c[10] = 0; /* { dg-warning "array subscript" } */ c.c[11] = 0; /* { dg-warning "array subscript" } */ + bar (&c); c.c[2 * n() - 11] = 1; /* { dg-warning "array subscript" } */ c.c[2 * n() - 10] = 1; c.c[2 * n() - 1] = 1; @@ -87,6 +91,8 @@ int* f(void) { if (-1 >= 0) c.c[-1] = 0; + bar (b); + bar (&c); return a; } diff --git a/gcc/testsuite/gcc.dg/Warray-bounds-11.c b/gcc/testsuite/gcc.dg/Warray-bounds-11.c index 2e68498..92e92c0 100644 --- a/gcc/testsuite/gcc.dg/Warray-bounds-11.c +++ b/gcc/testsuite/gcc.dg/Warray-bounds-11.c @@ -92,5 +92,11 @@ void foo(int (*a)[3]) bar(c); bar(e); bar(f.f); + bar(h1->j); + bar(h3->j); + bar(h3b->j); + bar(h1b->j); + bar(h->j); + bar(h0->j); } diff --git a/gcc/testsuite/gcc.dg/Warray-bounds.c b/gcc/testsuite/gcc.dg/Warray-bounds.c index aa154a7..925f562 100644 --- a/gcc/testsuite/gcc.dg/Warray-bounds.c +++ b/gcc/testsuite/gcc.dg/Warray-bounds.c @@ -11,6 +11,8 @@ static inline int n(void) { void g(int *p); void h(int p); +void bar (void *); + int* f(void) { int b[10]; int i; @@ -26,10 +28,12 @@ int* f(void) { a[ 9] = 0; a[10] = 0; /* { dg-warning "6:array subscript" } */ a[11] = 0; /* { dg-warning "6:array subscript" } */ + bar (a); a[2 * n() - 11] = 1; /* { dg-warning "6:array subscript" } */ a[2 * n() - 10] = 1; a[2 * n() - 1] = 1; a[2 * n() - 0] = 1; /* { dg-warning "6:array subscript" } */ + bar (a); b[-1] = 0; /* { dg-warning "6:array subscript" } */ b[ 0] = 0; @@ -37,6 +41,7 @@ int* f(void) { b[ 9] = 0; b[10] = 0; /* { dg-warning "6:array subscript" } */ b[11] = 0; /* { dg-warning "6:array subscript" } */ + bar (b); b[2 * n() - 11] = 1; /* { dg-warning "6:array subscript" } */ b[2 * n() - 10] = 1; b[2 * n() - 1] = 1; @@ -48,6 +53,7 @@ int* f(void) { c.c[ 9] = 0; c.c[10] = 0; /* { dg-warning "8:array subscript" } */ c.c[11] = 0; /* { dg-warning "8:array subscript" } */ + bar (&c); c.c[2 * n() - 11] = 1; /* { dg-warning "8:array subscript" } */ c.c[2 * n() - 10] = 1; c.c[2 * n() - 1] = 1; @@ -88,6 +94,8 @@ int* f(void) { for (i = 20; i < 30; ++i) a[i] = 1; /* { dg-warning "15:array subscript" } */ + bar (b); + bar (&c); return a; } |