re PR ipa/65076 (16% tramp3d-v4.cpp compile time regression)
authorJan Hubicka <hubicka@ucw.cz>
Wed, 22 Apr 2015 01:32:14 +0000 (03:32 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 22 Apr 2015 01:32:14 +0000 (01:32 +0000)
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

gcc/ChangeLog
gcc/passes.def
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-ssa/pr61034.C
gcc/testsuite/g++.dg/warn/Warray-bounds.C
gcc/testsuite/gcc.dg/Warray-bounds-11.c
gcc/testsuite/gcc.dg/Warray-bounds.c

index 64a7b4b6b45906c7a87622e68b22077b79143d4c..6959c061a06a230bc401315ad1621c6f466ef2db 100644 (file)
@@ -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.
index ffa63b5904d7a1380bfdecfcd987900d20590c26..4c20cdf0dfce1153f2855baf1498a5a084df1678 100644 (file)
@@ -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);
index c8f4aebce25e023b92547629e2a7bbfd311c9f4d..8b2b177e8848d5cf99d7d2ad8b5c3ecc89008a15 100644 (file)
@@ -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
index 9ec3995afde3b7e7103db3f84708591789c344e9..91e694eae141a32178127a181c0cde294f87355e 100644 (file)
@@ -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" } }
index 61c7c5d8e32ea91c4dc97555d53cbbbc31dadf07..574e9de0fea9754742e087585b4655d0820bc651 100644 (file)
@@ -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;
 }
 
index 2e684987e8eceee9855c144d8912b5de8221705e..92e92c070ea6a114f54b91869788682b00b4f3bc 100644 (file)
@@ -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);
 }
 
index aa154a7e79d0edf8a1b8d1976046d02728a02246..925f562bcd0933076523b58c166fd87d926c8086 100644 (file)
@@ -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;
 }