Commit 5a33401e by Jan Hubicka Committed by Jan Hubicka

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
parent 6e37129a
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> 2015-04-21 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* defaults.h (INSN_REFERENCES_ARE_DELAYED): New definition. * defaults.h (INSN_REFERENCES_ARE_DELAYED): New definition.
......
...@@ -89,6 +89,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -89,6 +89,7 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_build_ealias); NEXT_PASS (pass_build_ealias);
NEXT_PASS (pass_fre); NEXT_PASS (pass_fre);
NEXT_PASS (pass_merge_phi); NEXT_PASS (pass_merge_phi);
NEXT_PASS (pass_dse);
NEXT_PASS (pass_cd_dce); NEXT_PASS (pass_cd_dce);
NEXT_PASS (pass_early_ipa_sra); NEXT_PASS (pass_early_ipa_sra);
NEXT_PASS (pass_tail_recursion); NEXT_PASS (pass_tail_recursion);
......
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> 2015-04-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/65234 PR libgfortran/65234
......
...@@ -42,6 +42,6 @@ bool f(I a, I b, I c, I d) { ...@@ -42,6 +42,6 @@ bool f(I a, I b, I c, I d) {
// This works only if everything is inlined into 'f'. // This works only if everything is inlined into 'f'.
// { dg-final { scan-tree-dump-times ";; Function" 1 "fre2" } } // { 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 { scan-tree-dump-times "unreachable" 11 "fre2" } }
// { dg-final { cleanup-tree-dump "fre2" } } // { dg-final { cleanup-tree-dump "fre2" } }
...@@ -11,6 +11,7 @@ static inline int n(void) { ...@@ -11,6 +11,7 @@ static inline int n(void) {
void g(int *p); void g(int *p);
void h(int p); void h(int p);
void bar (void *);
int* f(void) { int* f(void) {
int b[10]; int b[10];
...@@ -27,6 +28,7 @@ int* f(void) { ...@@ -27,6 +28,7 @@ int* f(void) {
a[ 9] = 0; a[ 9] = 0;
a[10] = 0; /* { dg-warning "array subscript" } */ a[10] = 0; /* { dg-warning "array subscript" } */
a[11] = 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() - 11] = 1; /* { dg-warning "array subscript" } */
a[2 * n() - 10] = 1; a[2 * n() - 10] = 1;
a[2 * n() - 1] = 1; a[2 * n() - 1] = 1;
...@@ -38,6 +40,7 @@ int* f(void) { ...@@ -38,6 +40,7 @@ int* f(void) {
b[ 9] = 0; b[ 9] = 0;
b[10] = 0; /* { dg-warning "array subscript" } */ b[10] = 0; /* { dg-warning "array subscript" } */
b[11] = 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() - 11] = 1; /* { dg-warning "array subscript" } */
b[2 * n() - 10] = 1; b[2 * n() - 10] = 1;
b[2 * n() - 1] = 1; b[2 * n() - 1] = 1;
...@@ -49,6 +52,7 @@ int* f(void) { ...@@ -49,6 +52,7 @@ int* f(void) {
c.c[ 9] = 0; c.c[ 9] = 0;
c.c[10] = 0; /* { dg-warning "array subscript" } */ c.c[10] = 0; /* { dg-warning "array subscript" } */
c.c[11] = 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() - 11] = 1; /* { dg-warning "array subscript" } */
c.c[2 * n() - 10] = 1; c.c[2 * n() - 10] = 1;
c.c[2 * n() - 1] = 1; c.c[2 * n() - 1] = 1;
...@@ -87,6 +91,8 @@ int* f(void) { ...@@ -87,6 +91,8 @@ int* f(void) {
if (-1 >= 0) if (-1 >= 0)
c.c[-1] = 0; c.c[-1] = 0;
bar (b);
bar (&c);
return a; return a;
} }
...@@ -92,5 +92,11 @@ void foo(int (*a)[3]) ...@@ -92,5 +92,11 @@ void foo(int (*a)[3])
bar(c); bar(c);
bar(e); bar(e);
bar(f.f); bar(f.f);
bar(h1->j);
bar(h3->j);
bar(h3b->j);
bar(h1b->j);
bar(h->j);
bar(h0->j);
} }
...@@ -11,6 +11,8 @@ static inline int n(void) { ...@@ -11,6 +11,8 @@ static inline int n(void) {
void g(int *p); void g(int *p);
void h(int p); void h(int p);
void bar (void *);
int* f(void) { int* f(void) {
int b[10]; int b[10];
int i; int i;
...@@ -26,10 +28,12 @@ int* f(void) { ...@@ -26,10 +28,12 @@ int* f(void) {
a[ 9] = 0; a[ 9] = 0;
a[10] = 0; /* { dg-warning "6:array subscript" } */ a[10] = 0; /* { dg-warning "6:array subscript" } */
a[11] = 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() - 11] = 1; /* { dg-warning "6:array subscript" } */
a[2 * n() - 10] = 1; a[2 * n() - 10] = 1;
a[2 * n() - 1] = 1; a[2 * n() - 1] = 1;
a[2 * n() - 0] = 1; /* { dg-warning "6:array subscript" } */ a[2 * n() - 0] = 1; /* { dg-warning "6:array subscript" } */
bar (a);
b[-1] = 0; /* { dg-warning "6:array subscript" } */ b[-1] = 0; /* { dg-warning "6:array subscript" } */
b[ 0] = 0; b[ 0] = 0;
...@@ -37,6 +41,7 @@ int* f(void) { ...@@ -37,6 +41,7 @@ int* f(void) {
b[ 9] = 0; b[ 9] = 0;
b[10] = 0; /* { dg-warning "6:array subscript" } */ b[10] = 0; /* { dg-warning "6:array subscript" } */
b[11] = 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() - 11] = 1; /* { dg-warning "6:array subscript" } */
b[2 * n() - 10] = 1; b[2 * n() - 10] = 1;
b[2 * n() - 1] = 1; b[2 * n() - 1] = 1;
...@@ -48,6 +53,7 @@ int* f(void) { ...@@ -48,6 +53,7 @@ int* f(void) {
c.c[ 9] = 0; c.c[ 9] = 0;
c.c[10] = 0; /* { dg-warning "8:array subscript" } */ c.c[10] = 0; /* { dg-warning "8:array subscript" } */
c.c[11] = 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() - 11] = 1; /* { dg-warning "8:array subscript" } */
c.c[2 * n() - 10] = 1; c.c[2 * n() - 10] = 1;
c.c[2 * n() - 1] = 1; c.c[2 * n() - 1] = 1;
...@@ -88,6 +94,8 @@ int* f(void) { ...@@ -88,6 +94,8 @@ int* f(void) {
for (i = 20; i < 30; ++i) for (i = 20; i < 30; ++i)
a[i] = 1; /* { dg-warning "15:array subscript" } */ a[i] = 1; /* { dg-warning "15:array subscript" } */
bar (b);
bar (&c);
return a; return a;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment