Add pass_oacc_kernels pass group in passes.def
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Nov 2015 21:26:37 +0000 (21:26 +0000)
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 25 Nov 2015 21:26:37 +0000 (21:26 +0000)
2015-11-25  Tom de Vries  <tom@codesourcery.com>

* omp-low.c (pass_expand_omp_ssa::clone): New function.
* passes.def: Add pass_oacc_kernels pass group.
* tree-ssa-loop-ch.c (pass_ch::clone): New function.

* g++.dg/tree-ssa/copyprop-1.C: Update after adding new dce1.
* gcc.dg/pr23911.c: Same.
* gcc.dg/tree-ssa/20030709-2.c: Same.
* gcc.dg/tree-ssa/20030731-2.c: Same.
* gcc.dg/tree-ssa/20040729-1.c: Same.
* gcc.dg/tree-ssa/cfgcleanup-1.c: Same.
* gcc.dg/tree-ssa/loop-36.c: Same.
* gcc.dg/tree-ssa/pr21086.c: Same.
* gcc.dg/tree-ssa/ssa-dce-1.c: Same.
* gcc.dg/tree-ssa/ssa-dce-2.c: Same.
* gcc.dg/vect/pr26359.c: Same.
* c-c++-common/restrict-2.c: Update after adding new lim1.
* c-c++-common/restrict-4.c: Same.
* g++.dg/tree-ssa/pr33615.C: Same.
* g++.dg/tree-ssa/restrict1.C: Same.
* gcc.dg/tm/pub-safety-1.c: Same.
* gcc.dg/tm/reg-promotion.c: Same.
* gcc.dg/tree-ssa/20050314-1.c: Same.
* gcc.dg/tree-ssa/loop-32.c: Same.
* gcc.dg/tree-ssa/loop-33.c: Same.
* gcc.dg/tree-ssa/loop-34.c: Same.
* gcc.dg/tree-ssa/loop-35.c: Same.
* gcc.dg/tree-ssa/loop-7.c: Same.
* gcc.dg/tree-ssa/pr23109.c: Same.
* gcc.dg/tree-ssa/restrict-3.c: Same.
* gcc.dg/tree-ssa/restrict-5.c: Same.
* gcc.dg/tree-ssa/ssa-lim-1.c: Same.
* gcc.dg/tree-ssa/ssa-lim-10.c: Same.
* gcc.dg/tree-ssa/ssa-lim-11.c: Same.
* gcc.dg/tree-ssa/ssa-lim-12.c: Same.
* gcc.dg/tree-ssa/ssa-lim-2.c: Same.
* gcc.dg/tree-ssa/ssa-lim-3.c: Same.
* gcc.dg/tree-ssa/ssa-lim-6.c: Same.
* gcc.dg/tree-ssa/ssa-lim-7.c: Same.
* gcc.dg/tree-ssa/ssa-lim-8.c: Same.
* gcc.dg/tree-ssa/ssa-lim-9.c: Same.
* gcc.dg/tree-ssa/structopt-1.c: Same.
* gfortran.dg/pr32921.f: Same.
* g++.dg/tree-ssa/pr19637.C: Update after adding new dom1.
* g++.dg/tree-ssa/pr61009.C: Same.
* g++.dg/tree-ssa/ssa-dom.C: Same.
* gcc.dg/pr20115-1.c: Same.
* gcc.dg/tree-prof/20050826-2.c: Same.
* gcc.dg/tree-prof/cmpsf-1.c: Same.
* gcc.dg/tree-ssa/20030821-1.c: Same.
* gcc.dg/tree-ssa/20030922-2.c: Same.
* gcc.dg/tree-ssa/20031022-1.c: Same.
* gcc.dg/tree-ssa/20040615-1.c: Same.
* gcc.dg/tree-ssa/20040624-1.c: Same.
* gcc.dg/tree-ssa/pr21417.c: Same.
* gcc.dg/tree-ssa/pr61607.c: Same.
* gcc.dg/tree-ssa/slsr-27.c: Same.
* gcc.dg/tree-ssa/slsr-28.c: Same.
* gcc.dg/tree-ssa/slsr-29.c: Same.
* gcc.dg/tree-ssa/ssa-dom-branch-1.c: Same.
* gcc.dg/tree-ssa/ssa-dom-cse-3.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-1.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-2a.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-2b.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-2c.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-2d.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-2e.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-2f.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-4.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-5.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-6.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Same.
* gcc.dg/tree-ssa/ssa-thread-12.c: Same.
* gcc.dg/tree-ssa/vrp47.c: Same.
* gcc.dg/tree-ssa/copy-headers.c: Update after adding ch1.
* gcc.dg/tree-ssa/foldconst-2.c: Same.
* gcc.dg/tree-ssa/loop-40.c: Same.
* gcc.dg/gomp/notify-new-function-3.c: Update after adding ompexpssa1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230907 138bc75d-0d04-0410-961f-82ee72b054a4

78 files changed:
gcc/ChangeLog
gcc/omp-low.c
gcc/passes.def
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/restrict-2.c
gcc/testsuite/c-c++-common/restrict-4.c
gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C
gcc/testsuite/g++.dg/tree-ssa/pr19637.C
gcc/testsuite/g++.dg/tree-ssa/pr33615.C
gcc/testsuite/g++.dg/tree-ssa/pr61009.C
gcc/testsuite/g++.dg/tree-ssa/restrict1.C
gcc/testsuite/g++.dg/tree-ssa/ssa-dom.C
gcc/testsuite/gcc.dg/gomp/notify-new-function-3.c
gcc/testsuite/gcc.dg/pr20115-1.c
gcc/testsuite/gcc.dg/pr23911.c
gcc/testsuite/gcc.dg/tm/pub-safety-1.c
gcc/testsuite/gcc.dg/tm/reg-promotion.c
gcc/testsuite/gcc.dg/tree-prof/20050826-2.c
gcc/testsuite/gcc.dg/tree-prof/cmpsf-1.c
gcc/testsuite/gcc.dg/tree-ssa/20030709-2.c
gcc/testsuite/gcc.dg/tree-ssa/20030731-2.c
gcc/testsuite/gcc.dg/tree-ssa/20030821-1.c
gcc/testsuite/gcc.dg/tree-ssa/20030922-2.c
gcc/testsuite/gcc.dg/tree-ssa/20031022-1.c
gcc/testsuite/gcc.dg/tree-ssa/20040615-1.c
gcc/testsuite/gcc.dg/tree-ssa/20040624-1.c
gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c
gcc/testsuite/gcc.dg/tree-ssa/20050314-1.c
gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c
gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c
gcc/testsuite/gcc.dg/tree-ssa/foldconst-2.c
gcc/testsuite/gcc.dg/tree-ssa/loop-32.c
gcc/testsuite/gcc.dg/tree-ssa/loop-33.c
gcc/testsuite/gcc.dg/tree-ssa/loop-34.c
gcc/testsuite/gcc.dg/tree-ssa/loop-35.c
gcc/testsuite/gcc.dg/tree-ssa/loop-36.c
gcc/testsuite/gcc.dg/tree-ssa/loop-40.c
gcc/testsuite/gcc.dg/tree-ssa/loop-7.c
gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
gcc/testsuite/gcc.dg/tree-ssa/pr21417.c
gcc/testsuite/gcc.dg/tree-ssa/pr23109.c
gcc/testsuite/gcc.dg/tree-ssa/pr61607.c
gcc/testsuite/gcc.dg/tree-ssa/restrict-3.c
gcc/testsuite/gcc.dg/tree-ssa/restrict-5.c
gcc/testsuite/gcc.dg/tree-ssa/slsr-27.c
gcc/testsuite/gcc.dg/tree-ssa/slsr-28.c
gcc/testsuite/gcc.dg/tree-ssa/slsr-29.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-branch-1.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-3.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-1.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2a.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2b.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2c.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2d.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2e.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2f.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-1.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-10.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-11.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-12.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-2.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-6.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-7.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-8.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-9.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c
gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c
gcc/testsuite/gcc.dg/tree-ssa/vrp47.c
gcc/testsuite/gcc.dg/vect/pr26359.c
gcc/testsuite/gfortran.dg/pr32921.f
gcc/tree-ssa-loop-ch.c

index 8ba6d08..2b9ef71 100644 (file)
@@ -1,5 +1,11 @@
 2015-11-25  Tom de Vries  <tom@codesourcery.com>
 
+       * omp-low.c (pass_expand_omp_ssa::clone): New function.
+       * passes.def: Add pass_oacc_kernels pass group.
+       * tree-ssa-loop-ch.c (pass_ch::clone): New function.
+
+2015-11-25  Tom de Vries  <tom@codesourcery.com>
+
        * tree-pass.h (make_pass_oacc_kernels, make_pass_oacc_kernels2):
        Declare.
        * tree-ssa-loop.c (gate_oacc_kernels): New static function.
index 2d782eb..a923e37 100644 (file)
@@ -13363,6 +13363,7 @@ public:
       return !(fun->curr_properties & PROP_gimple_eomp);
     }
   virtual unsigned int execute (function *) { return execute_expand_omp (); }
+  opt_pass * clone () { return new pass_expand_omp_ssa (m_ctxt); }
 
 }; // class pass_expand_omp_ssa
 
index 1702778..28cb4c1 100644 (file)
@@ -88,7 +88,24 @@ along with GCC; see the file COPYING3.  If not see
          /* pass_build_ealias is a dummy pass that ensures that we
             execute TODO_rebuild_alias at this point.  */
          NEXT_PASS (pass_build_ealias);
+         /* Pass group that runs when the function is an offloaded function
+            containing oacc kernels loops.  Part 1.  */
+         NEXT_PASS (pass_oacc_kernels);
+         PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels)
+             NEXT_PASS (pass_ch);
+         POP_INSERT_PASSES ()
          NEXT_PASS (pass_fre);
+         /* Pass group that runs when the function is an offloaded function
+            containing oacc kernels loops.  Part 2.  */
+         NEXT_PASS (pass_oacc_kernels2);
+         PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels2)
+             /* We use pass_lim to rewrite in-memory iteration and reduction
+                variable accesses in loops into local variables accesses.  */
+             NEXT_PASS (pass_lim);
+             NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */);
+             NEXT_PASS (pass_dce);
+             NEXT_PASS (pass_expand_omp_ssa);
+         POP_INSERT_PASSES ()
          NEXT_PASS (pass_merge_phi);
           NEXT_PASS (pass_dse);
          NEXT_PASS (pass_cd_dce);
index c55322a..7e24abb 100644 (file)
@@ -1,3 +1,79 @@
+2015-11-25  Tom de Vries  <tom@codesourcery.com>
+
+       * g++.dg/tree-ssa/copyprop-1.C: Update after adding new dce1.
+       * gcc.dg/pr23911.c: Same.
+       * gcc.dg/tree-ssa/20030709-2.c: Same.
+       * gcc.dg/tree-ssa/20030731-2.c: Same.
+       * gcc.dg/tree-ssa/20040729-1.c: Same.
+       * gcc.dg/tree-ssa/cfgcleanup-1.c: Same.
+       * gcc.dg/tree-ssa/loop-36.c: Same.
+       * gcc.dg/tree-ssa/pr21086.c: Same.
+       * gcc.dg/tree-ssa/ssa-dce-1.c: Same.
+       * gcc.dg/tree-ssa/ssa-dce-2.c: Same.
+       * gcc.dg/vect/pr26359.c: Same.
+       * c-c++-common/restrict-2.c: Update after adding new lim1.
+       * c-c++-common/restrict-4.c: Same.
+       * g++.dg/tree-ssa/pr33615.C: Same.
+       * g++.dg/tree-ssa/restrict1.C: Same.
+       * gcc.dg/tm/pub-safety-1.c: Same.
+       * gcc.dg/tm/reg-promotion.c: Same.
+       * gcc.dg/tree-ssa/20050314-1.c: Same.
+       * gcc.dg/tree-ssa/loop-32.c: Same.
+       * gcc.dg/tree-ssa/loop-33.c: Same.
+       * gcc.dg/tree-ssa/loop-34.c: Same.
+       * gcc.dg/tree-ssa/loop-35.c: Same.
+       * gcc.dg/tree-ssa/loop-7.c: Same.
+       * gcc.dg/tree-ssa/pr23109.c: Same.
+       * gcc.dg/tree-ssa/restrict-3.c: Same.
+       * gcc.dg/tree-ssa/restrict-5.c: Same.
+       * gcc.dg/tree-ssa/ssa-lim-1.c: Same.
+       * gcc.dg/tree-ssa/ssa-lim-10.c: Same.
+       * gcc.dg/tree-ssa/ssa-lim-11.c: Same.
+       * gcc.dg/tree-ssa/ssa-lim-12.c: Same.
+       * gcc.dg/tree-ssa/ssa-lim-2.c: Same.
+       * gcc.dg/tree-ssa/ssa-lim-3.c: Same.
+       * gcc.dg/tree-ssa/ssa-lim-6.c: Same.
+       * gcc.dg/tree-ssa/ssa-lim-7.c: Same.
+       * gcc.dg/tree-ssa/ssa-lim-8.c: Same.
+       * gcc.dg/tree-ssa/ssa-lim-9.c: Same.
+       * gcc.dg/tree-ssa/structopt-1.c: Same.
+       * gfortran.dg/pr32921.f: Same.
+       * g++.dg/tree-ssa/pr19637.C: Update after adding new dom1.
+       * g++.dg/tree-ssa/pr61009.C: Same.
+       * g++.dg/tree-ssa/ssa-dom.C: Same.
+       * gcc.dg/pr20115-1.c: Same.
+       * gcc.dg/tree-prof/20050826-2.c: Same.
+       * gcc.dg/tree-prof/cmpsf-1.c: Same.
+       * gcc.dg/tree-ssa/20030821-1.c: Same.
+       * gcc.dg/tree-ssa/20030922-2.c: Same.
+       * gcc.dg/tree-ssa/20031022-1.c: Same.
+       * gcc.dg/tree-ssa/20040615-1.c: Same.
+       * gcc.dg/tree-ssa/20040624-1.c: Same.
+       * gcc.dg/tree-ssa/pr21417.c: Same.
+       * gcc.dg/tree-ssa/pr61607.c: Same.
+       * gcc.dg/tree-ssa/slsr-27.c: Same.
+       * gcc.dg/tree-ssa/slsr-28.c: Same.
+       * gcc.dg/tree-ssa/slsr-29.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-branch-1.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-cse-3.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-1.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-2a.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-2b.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-2c.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-2d.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-2e.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-2f.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-5.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-6.c: Same.
+       * gcc.dg/tree-ssa/ssa-dom-thread-7.c: Same.
+       * gcc.dg/tree-ssa/ssa-thread-12.c: Same.
+       * gcc.dg/tree-ssa/vrp47.c: Same.
+       * gcc.dg/tree-ssa/copy-headers.c: Update after adding ch1.
+       * gcc.dg/tree-ssa/foldconst-2.c: Same.
+       * gcc.dg/tree-ssa/loop-40.c: Same.
+       * gcc.dg/gomp/notify-new-function-3.c: Update after adding ompexpssa1.
+
 2015-11-25  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * g++.dg/cpp0x/constexpr-array13.C: Fix.
index 5e8bca7..ad19fb3 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fno-strict-aliasing -fdump-tree-lim1-details" } */
+/* { dg-options "-O -fno-strict-aliasing -fdump-tree-lim2-details" } */
 
 void foo (float * __restrict__ a, float * __restrict__ b, int n, int j)
 {
@@ -10,4 +10,4 @@ void foo (float * __restrict__ a, float * __restrict__ b, int n, int j)
 
 /* We should move the RHS of the store out of the loop.  */
 
-/* { dg-final { scan-tree-dump-times "Moving statement" 11 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "Moving statement" 11 "lim2" } } */
index cea6cd8..5806a2a 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile }  */
-/* { dg-options "-O2 -fdump-tree-lim1-details" } */
+/* { dg-options "-O2 -fdump-tree-lim2-details" } */
 
 struct Foo
 {
@@ -15,4 +15,4 @@ void bar(struct Foo f, int * __restrict__ q)
     }
 }
 
-/* { dg-final { scan-tree-dump "Executing store motion" "lim1" } } */
+/* { dg-final { scan-tree-dump "Executing store motion" "lim2" } } */
index 5ff289c..34a9f7b 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-dce2" } */
+/* { dg-options "-O -fdump-tree-dce3" } */
 
 /* Verify that we can eliminate the useless conversions to/from
    const qualified pointer types
@@ -27,4 +27,4 @@ int foo(Object&o)
 
 /* Remaining should be two loads.  */
 
-/* { dg-final { scan-tree-dump-times " = \[^\n\]*;" 2 "dce2" } } */
+/* { dg-final { scan-tree-dump-times " = \[^\n\]*;" 2 "dce3" } } */
index 9a7fc9b..8172ea8 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fno-ipa-icf -fdump-tree-dom1" } */
+/* { dg-options "-O2 -fno-ipa-icf -fdump-tree-dom2" } */
 
 #include <new>
 
@@ -29,4 +29,4 @@ int foo_void_offset(void)
   return reinterpret_cast<Foo *>(&i[0])->i[0];
 }
 
-/* { dg-final { scan-tree-dump-times "return 1;" 3 "dom1" } } */
+/* { dg-final { scan-tree-dump-times "return 1;" 3 "dom2" } } */
index f1b7a64..13e20e0 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fnon-call-exceptions -fdump-tree-lim1-details -w" } */
+/* { dg-options "-O -fnon-call-exceptions -fdump-tree-lim2-details -w" } */
 
 extern volatile int y;
 
@@ -16,4 +16,4 @@ 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 "invariant up to" 0 "lim1" } }
+// { dg-final { scan-tree-dump-times "invariant up to" 0 "lim2" } }
index ddc9178..e07d29c 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-vrp -std=c++11 -fno-strict-aliasing -fdump-tree-dom1" } */
+/* { dg-options "-O2 -fno-tree-vrp -std=c++11 -fno-strict-aliasing -fdump-tree-dom2" } */
 
 #include <stdio.h>
 struct Field {
@@ -49,4 +49,4 @@ bool  Test(void) {
 // The block ending with cmp == 0 should not be threaded.  ie,
 // there should be a single == 0 comparison in the dump file.
 
-// { dg-final { scan-tree-dump-times "== 0" 1 "dom1" } }
+// { dg-final { scan-tree-dump-times "== 0" 1 "dom2" } }
index 5952fca..3228321 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-lim1-details" } */
+/* { dg-options "-O2 -fdump-tree-lim2-details" } */
 
 struct Foo
 {
@@ -16,4 +16,4 @@ void bar(Foo f, int * __restrict__ q)
     }
 }
 
-/* { dg-final { scan-tree-dump "Executing store motion" "lim1" } } */
+/* { dg-final { scan-tree-dump "Executing store motion" "lim2" } } */
index 4c9be46..30c8485 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dom1" } */
+/* { dg-options "-O2 -fdump-tree-dom2" } */
 
 typedef long unsigned int size_t;
 extern void abort (void) __attribute__ ((__noreturn__));
@@ -99,5 +99,5 @@ gimple_return_set_retval (gimple gs, tree retval)
     abort ();
   gimple_set_op (gs, 0, retval);
 }
-/* { dg-final { scan-tree-dump-times "gss_for_code_.10." 1 "dom1"} } */
+/* { dg-final { scan-tree-dump-times "gss_for_code_.10." 1 "dom2"} } */
 
index a8f24b1..033a407 100644 (file)
@@ -11,4 +11,4 @@ foo (int *__restrict a, int *__restrict b, int *__restrict c)
 
 
 /* Check for new function notification in ompexpssa dump.  */
-/* { dg-final { scan-tree-dump-times "Added new ssa gimple function foo\\.\[\\\$_\]loopfn\\.0 to callgraph" 1 "ompexpssa" } } */
+/* { dg-final { scan-tree-dump-times "Added new ssa gimple function foo\\.\[\\\$_\]loopfn\\.0 to callgraph" 1 "ompexpssa2" } } */
index d1c4066..1be99a5 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dom1" } */
+/* { dg-options "-O2 -fdump-tree-dom2" } */
 
 extern int foo (void) __attribute__((pure));
 
@@ -11,4 +11,4 @@ int bar()
 }
 
 /* Check that we only have one call to foo.  */
-/* { dg-final { scan-tree-dump-times "foo" 1 "dom1" } } */
+/* { dg-final { scan-tree-dump-times "foo" 1 "dom2" } } */
index 2c27397..3fa0412 100644 (file)
@@ -1,7 +1,7 @@
 /* This was a missed optimization in tree constant propagation
    that CSE would catch later on.  */
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-dce2" } */
+/* { dg-options "-O -fdump-tree-dce3" } */
 
 double _Complex *a; 
 static const double _Complex b[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 
@@ -16,5 +16,5 @@ test (void)
 
 /* After DCE2 which runs after FRE, the expressions should be fully
    constant folded.  There should be no loads from b left.  */
-/* { dg-final { scan-tree-dump-times "__complex__ \\\(1.0e\\\+0, 0.0\\\)" 2 "dce2" } } */
-/* { dg-final { scan-tree-dump-times "= b" 0 "dce2" } } */
+/* { dg-final { scan-tree-dump-times "__complex__ \\\(1.0e\\\+0, 0.0\\\)" 2 "dce3" } } */
+/* { dg-final { scan-tree-dump-times "= b" 0 "dce3" } } */
index c95111c..59fb43e 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-fgnu-tm -O1 -fdump-tree-lim1" } */
+/* { dg-options "-fgnu-tm -O1 -fdump-tree-lim2" } */
 
 /* Test that thread visible loads do not get hoisted out of loops if
    the load would not have occurred on each path out of the loop.  */
@@ -20,4 +20,4 @@ void reader()
     }
 }
 
-/* { dg-final { scan-tree-dump-times "Cannot hoist.*DATA_DATA because it is in a transaction" 1 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "Cannot hoist.*DATA_DATA because it is in a transaction" 1 "lim2" } } */
index 0200600..47400ef 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-fgnu-tm -O2 -fdump-tree-lim1" } */
+/* { dg-options "-fgnu-tm -O2 -fdump-tree-lim2" } */
 
 /* Test that `count' is not written to unless p->data>0.  */
 
@@ -20,4 +20,4 @@ void func()
   }
 }
 
-/* { dg-final { scan-tree-dump-times "Cannot hoist conditional load of count because it is in a transaction" 1 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "Cannot hoist conditional load of count because it is in a transaction" 1 "lim2" } } */
index 233c7ec..bdaef3d 100644 (file)
@@ -1,6 +1,6 @@
 /* Testcase derived from gcc.c-torture/execute 20050826-2.c
    which showed jump threading profile insanities.  */
-/* { dg-options "-Ofast -fdump-tree-dom1-all" } */
+/* { dg-options "-Ofast -fdump-tree-dom2-all" } */
 
 struct rtattr
 {
@@ -72,4 +72,4 @@ main (void)
   return 0;
 }
 
-/* { dg-final-use { scan-tree-dump-not "Invalid sum" "dom1"} } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "dom2"} } */
index 565dd1c..49102df 100644 (file)
@@ -1,6 +1,6 @@
 /* Testcase derived from gcc.c-torture/execute cmpsf-1.c
    which showed jump threading profile insanities.  */
-/* { dg-options "-Ofast -fdump-tree-dom1-all" } */
+/* { dg-options "-Ofast -fdump-tree-dom2-all" } */
 
 #include <limits.h>
 
@@ -181,4 +181,4 @@ main (void)
   exit (0);
 }
 
-/* { dg-final-use { scan-tree-dump-not "Invalid sum" "dom1"} } */
+/* { dg-final-use { scan-tree-dump-not "Invalid sum" "dom2"} } */
index d4f42f9..5009cd6 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-dce2" } */
+/* { dg-options "-O -fdump-tree-dce3" } */
   
 struct rtx_def;
 typedef struct rtx_def *rtx;
@@ -42,13 +42,13 @@ get_alias_set (t)
 
 /* There should be precisely one load of ->decl.rtl.  If there is
    more than, then the dominator optimizations failed.  */
-/* { dg-final { scan-tree-dump-times "->decl\\.rtl" 1 "dce2"} } */
+/* { dg-final { scan-tree-dump-times "->decl\\.rtl" 1 "dce3"} } */
   
 /* There should be no loads of .rtmem since the complex return statement
    is just "return 0".  */
-/* { dg-final { scan-tree-dump-times ".rtmem" 0 "dce2"} } */
+/* { dg-final { scan-tree-dump-times ".rtmem" 0 "dce3"} } */
   
 /* There should be one IF statement (the complex return statement should
    collapse down to a simple return 0 without any conditionals).  */
-/* { dg-final { scan-tree-dump-times "if " 1 "dce2"} } */
+/* { dg-final { scan-tree-dump-times "if " 1 "dce3"} } */
 
index bdb22ff..069f953 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dce1" } */
+/* { dg-options "-O2 -fdump-tree-dce2" } */
 
 void foo (void);
 
@@ -15,4 +15,4 @@ bar (int i, int partial, int args_addr)
 
 /* There should be only one IF conditional since the first does nothing
    useful.  */
-/* { dg-final { scan-tree-dump-times "if " 1 "dce1"} } */
+/* { dg-final { scan-tree-dump-times "if " 1 "dce2"} } */
index 13ecd49..131472e 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dom1 -fdump-tree-optimized" } */
+/* { dg-options "-O1 -fdump-tree-dom2 -fdump-tree-optimized" } */
 
 void dont_remove (void);
 
index 2434d34..6c133bd 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dom1 -fdisable-tree-ifcombine" } */
+/* { dg-options "-O1 -fdump-tree-dom2 -fdisable-tree-ifcombine" } */
 
 struct rtx_def;
 typedef struct rtx_def *rtx;
@@ -24,4 +24,4 @@ rgn_rank (rtx insn1, rtx insn2)
    SSA name to record as a copy of the other when DOM derives copies
    from temporary equivalences.  The heuristics there no longer do
    the correct thing.  VRP still optimizes this testcase.  */
-/* { dg-final { scan-tree-dump-times "if " 2 "dom1" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "if " 2 "dom2" { xfail *-*-* } } } */
index c780e7e..25f9144 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dom1" } */
+/* { dg-options "-O1 -fdump-tree-dom2" } */
  
 typedef struct edge_def
 {
@@ -26,4 +26,4 @@ blah (int arf)
 }
 
 /* There should be one load from entry_exit_blocks[1].pred.  */
-/* { dg-final { scan-tree-dump-times "entry_exit_blocks.1..pred" 1 "dom1"} } */
+/* { dg-final { scan-tree-dump-times "entry_exit_blocks.1..pred" 1 "dom2"} } */
index 2473038..de7fa11 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dom1" } */
+/* { dg-options "-O1 -fdump-tree-dom2" } */
   
 void bar1 (void);
 void bar2 (void);
@@ -13,4 +13,4 @@ foo (unsigned int a, unsigned int b)
     bar2 ();
 }
 
-/* { dg-final { scan-tree-dump-times "bar2" 0 "dom1" } } */
+/* { dg-final { scan-tree-dump-times "bar2" 0 "dom2" } } */
index adccf9a..d95c782 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dom1" } */
+/* { dg-options "-O1 -fdump-tree-dom2" } */
   
 void bar1 (void);
 void bar2 (void);
@@ -17,4 +17,4 @@ foo (unsigned int a, unsigned int b)
    true (to reach the second condition we know a < b via the first
    conditional.  */
 
-/* { dg-final { scan-tree-dump-times "if " 1 "dom1" } } */
+/* { dg-final { scan-tree-dump-times "if " 1 "dom2" } } */
index 6e7ffbb..812887a 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dce2" } */
+/* { dg-options "-O1 -fdump-tree-dce3" } */
 
 int
 foo ()
@@ -16,4 +16,4 @@ foo ()
    compiler was mistakenly thinking that the statement had volatile
    operands.  But 'p' itself is not volatile and taking the address of
    a volatile does not constitute a volatile operand.  */
-/* { dg-final { scan-tree-dump-times "&x" 0 "dce2"} } */
+/* { dg-final { scan-tree-dump-times "&x" 0 "dce3"} } */
index fe220cd..fd9895b 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-lim1-details --param allow-store-data-races=1" } */
+/* { dg-options "-O1 -fdump-tree-lim2-details --param allow-store-data-races=1" } */
 
 float a[100];
 
@@ -17,4 +17,4 @@ void xxx (void)
 /* Store motion may be applied to the assignment to a[k], since sinf
    cannot read nor write the memory.  */
 
-/* { dg-final { scan-tree-dump-times "Moving statement" 1 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "Moving statement" 1 "lim2" } } */
index 4d22a42..53ce973 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-dce1" } */
+/* { dg-options "-O2 -fdump-tree-dce2" } */
 void
 cleanup (int a, int b)
 {
@@ -15,4 +15,4 @@ cleanup (int a, int b)
   return;
 }
 /* Dce should get rid of the initializers and cfgcleanup should elliminate ifs  */
-/* { dg-final { scan-tree-dump-times "if " 0 "dce1"} } */
+/* { dg-final { scan-tree-dump-times "if " 0 "dce2"} } */
index 4241b40..a5a8212 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-ch-details" } */
+/* { dg-options "-O2 -fdump-tree-ch2-details" } */
 
 extern int foo (int);
 
@@ -12,4 +12,4 @@ void bla (void)
 }
 
 /* There should be a header duplicated.  */
-/* { dg-final { scan-tree-dump-times "Duplicating header" 1 "ch"} } */
+/* { dg-final { scan-tree-dump-times "Duplicating header" 1 "ch2"} } */
index eb1e6de..e9a6f87 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-ch" } */
+/* { dg-options "-O2 -fdump-tree-ch2" } */
 typedef union tree_node *tree;
 enum tree_code
 {
@@ -56,4 +56,4 @@ emit_support_tinfos (void)
 }
 /* We should copy loop header to fundamentals[0] and then fold it way into
    known value.  */
-/* { dg-final { scan-tree-dump-not "fundamentals.0" "ch"} } */
+/* { dg-final { scan-tree-dump-not "fundamentals.0" "ch2"} } */
index 9953bb5..e06a1e4 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-lim1-details" } */
+/* { dg-options "-O2 -fdump-tree-lim2-details" } */
 
 int x;
 int a[100];
@@ -42,4 +42,4 @@ void test3(struct a *A)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "Executing store motion of" 3 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "Executing store motion of" 3 "lim2" } } */
index 2cf4c5a..57fd06d 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-lim1-details" } */
+/* { dg-options "-O2 -fdump-tree-lim2-details" } */
 
 int x;
 int a[100];
@@ -36,4 +36,4 @@ void test5(struct a *A, unsigned b)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "Executing store motion of" 4 "lim1" { xfail { lp64 || llp64 } } } } */
+/* { dg-final { scan-tree-dump-times "Executing store motion of" 4 "lim2" { xfail { lp64 || llp64 } } } } */
index 67493a5..4a7b082 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-lim1-details" } */
+/* { dg-options "-O2 -fdump-tree-lim2-details" } */
 
 int r[6];
 
@@ -17,4 +17,4 @@ void f (int n)
 }
 
 
-/* { dg-final { scan-tree-dump-times "Executing store motion of r" 6 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "Executing store motion of r" 6 "lim2" } } */
index 70557c5..4e9d03a 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-lim1-details" } */
+/* { dg-options "-O2 -fdump-tree-lim2-details" } */
 
 int x;
 int a[100];
@@ -67,5 +67,5 @@ void test4(struct a *A, unsigned LONG b)
     }
 }
 /* long index not hoisted for avr target PR 36561 */
-/* { dg-final { scan-tree-dump-times "Executing store motion of" 8 "lim1" { xfail { "avr-*-*" } } } } */
-/* { dg-final { scan-tree-dump-times "Executing store motion of" 6 "lim1" { target { "avr-*-*" } } } } */
+/* { dg-final { scan-tree-dump-times "Executing store motion of" 8 "lim2" { xfail { "avr-*-*" } } } } */
+/* { dg-final { scan-tree-dump-times "Executing store motion of" 6 "lim2" { target { "avr-*-*" } } } } */
index d922991..516cad9 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dce2" } */
+/* { dg-options "-O2 -fdump-tree-dce3" } */
 
 struct X { float array[2]; };
 
@@ -18,4 +18,4 @@ float foobar () {
 
 /* The temporary structure should have been promoted to registers
    by FRE after the loops have been unrolled by the early unrolling pass.  */
-/* { dg-final { scan-tree-dump-not "c\.array" "dce2" } } */
+/* { dg-final { scan-tree-dump-not "c\.array" "dce3" } } */
index 8397396..36db565 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-ch-details" } */
+/* { dg-options "-O2 -fdump-tree-ch2-details" } */
 
 int mymax2(int *it, int *end)
 {
@@ -10,4 +10,4 @@ int mymax2(int *it, int *end)
   return max;
 }
 
-/* { dg-final { scan-tree-dump "Duplicating header" "ch" } } */
+/* { dg-final { scan-tree-dump "Duplicating header" "ch2" } } */
index 26fb4ec..08a4935 100644 (file)
@@ -1,6 +1,6 @@
 /* PR tree-optimization/19828 */
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-lim1-details" } */
+/* { dg-options "-O1 -fdump-tree-lim2-details" } */
 
 int cst_fun1 (int) __attribute__((__const__));
 int cst_fun2 (int) __attribute__((__const__));
@@ -31,4 +31,4 @@ int xxx (void)
    Calls to cst_fun2 and pure_fun2 should not be, since calling
    with k = 0 may be invalid.  */
 
-/* { dg-final { scan-tree-dump-times "Moving statement" 2 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "Moving statement" 2 "lim2" } } */
index 26ea817..e8b62c2 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-dce1 -fdelete-null-pointer-checks" } */
+/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-dce2 -fdelete-null-pointer-checks" } */
 
 int
 foo (int *p)
@@ -18,5 +18,5 @@ foo (int *p)
 /* Target disabling -fdelete-null-pointer-checks should not fold checks */
 /* { dg-final { scan-tree-dump "Folding predicate " "vrp1" { target { ! keeps_null_pointer_checks } } } } */
 /* { dg-final { scan-tree-dump-times "Folding predicate " 0 "vrp1" { target {   keeps_null_pointer_checks } } } } */
-/* { dg-final { scan-tree-dump-not "b_. =" "dce1" { target { ! avr-*-* } } } } */
-/* { dg-final { scan-tree-dump "b_. =" "dce1" { target { avr-*-* } } } } */
+/* { dg-final { scan-tree-dump-not "b_. =" "dce2" { target { ! avr-*-* } } } } */
+/* { dg-final { scan-tree-dump "b_. =" "dce2" { target { avr-*-* } } } } */
index fed6b31..c865ee3 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dom2-details" } */
+/* { dg-options "-O2 -fdump-tree-dom3-details" } */
 
 struct tree_common 
 { 
@@ -49,5 +49,5 @@ L23:
 /* We should thread the backedge to the top of the loop; ie we only
    execute the if (expr->common.code != 142) test once per loop
    iteration.  */
-/* { dg-final { scan-tree-dump-times "FSM jump thread" 1 "dom2" } } */
+/* { dg-final { scan-tree-dump-times "FSM jump thread" 1 "dom3" } } */
 
index 8281a98..fac991c 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -funsafe-math-optimizations -ftrapping-math -fdump-tree-recip -fdump-tree-lim1" } */
+/* { dg-options "-O2 -funsafe-math-optimizations -ftrapping-math -fdump-tree-recip -fdump-tree-lim2" } */
 /* { dg-warning "-fassociative-math disabled" "" { target *-*-* } 1 } */
 
 double F[2] = { 0., 0. }, e = 0.;
@@ -29,6 +29,6 @@ int main()
 /* LIM only performs the transformation in the no-trapping-math case.  In
    the future we will do it for trapping-math as well in recip, check that
    this is not wrongly optimized.  */
-/* { dg-final { scan-tree-dump-not "reciptmp" "lim1" } } */
+/* { dg-final { scan-tree-dump-not "reciptmp" "lim2" } } */
 /* { dg-final { scan-tree-dump-not "reciptmp" "recip" } } */
 
index bf46198..0868a44 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-Os -fno-tree-fre -fdump-tree-dom1" } */
+/* { dg-options "-Os -fno-tree-fre -fdump-tree-dom2" } */
 
 void foo(int *);
 void f2(int dst[3], int R)
@@ -23,6 +23,6 @@ void f2(int dst[3], int R)
 /* There should be precisely two conditionals.  One for the loop condition
    and one for the test after the loop.  Previously we failed to eliminate
    the second conditional after the loop.  */
-/* { dg-final { scan-tree-dump-times "if" 2 "dom1"} } */
+/* { dg-final { scan-tree-dump-times "if" 2 "dom2"} } */
 
 
index e9e1438..90b9b55 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fno-strict-aliasing -fdump-tree-lim1-details" } */
+/* { dg-options "-O -fno-strict-aliasing -fdump-tree-lim2-details" } */
 
 void f(int * __restrict__ r,
        int a[__restrict__ 16][16],
@@ -14,4 +14,4 @@ void f(int * __restrict__ r,
 
 /* We should apply store motion to the store to *r.  */
 
-/* { dg-final { scan-tree-dump "Executing store motion of \\\*r" "lim1" } } */
+/* { dg-final { scan-tree-dump "Executing store motion of \\\*r" "lim2" } } */
index 6dd4c99..fc03c1e 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fno-strict-aliasing -fdump-tree-lim1-details" } */
+/* { dg-options "-O -fno-strict-aliasing -fdump-tree-lim2-details" } */
 
 static inline __attribute__((always_inline))
 void f(int * __restrict__ r,
@@ -20,4 +20,4 @@ void g(int *r, int a[16][16], int b[16][16], int i, int j)
 
 /* We should apply store motion to the store to *r.  */
 
-/* { dg-final { scan-tree-dump "Executing store motion of \\\*r" "lim1" } } */
+/* { dg-final { scan-tree-dump "Executing store motion of \\\*r" "lim2" } } */
index ba7b060..35b3d00 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dom2" } */
+/* { dg-options "-O2 -fdump-tree-dom3" } */
 
 struct x
 {
@@ -16,7 +16,7 @@ f (struct x *p, unsigned int n)
   foo (p->a[n], p->c[n], p->b[n]);
 }
 
-/* { dg-final { scan-tree-dump-times "\\* 4;" 1 "dom2" { target { int32 } } } } */
-/* { dg-final { scan-tree-dump-times "\\* 2;" 1 "dom2" { target { int16 } } } } */
-/* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+;" 1 "dom2" } } */
-/* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 3 "dom2" } } */
+/* { dg-final { scan-tree-dump-times "\\* 4;" 1 "dom3" { target { int32 } } } } */
+/* { dg-final { scan-tree-dump-times "\\* 2;" 1 "dom3" { target { int16 } } } } */
+/* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+;" 1 "dom3" } } */
+/* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 3 "dom3" } } */
index 5ea7098..732d232 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dom2" } */
+/* { dg-options "-O2 -fdump-tree-dom3" } */
 
 struct x
 {
@@ -20,7 +20,7 @@ f (struct x *p, unsigned int n)
     foo (p->b[n], p->a[n], p->c[n]);
 }
 
-/* { dg-final { scan-tree-dump-times "\\* 4;" 1 "dom2" { target { int32 } } } } */
-/* { dg-final { scan-tree-dump-times "\\* 2;" 1 "dom2" { target { int16 } } } } */
-/* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+" 1 "dom2" } } */
-/* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 9 "dom2" } } */
+/* { dg-final { scan-tree-dump-times "\\* 4;" 1 "dom3" { target { int32 } } } } */
+/* { dg-final { scan-tree-dump-times "\\* 2;" 1 "dom3" { target { int16 } } } } */
+/* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+" 1 "dom3" } } */
+/* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 9 "dom3" } } */
index 26d4558..a22cc79 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dom2" } */
+/* { dg-options "-O2 -fdump-tree-dom3" } */
 
 struct x
 {
@@ -22,7 +22,7 @@ f (struct x *p, unsigned int n)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "\\* 4;" 1 "dom2" { target { int32 } } } } */
-/* { dg-final { scan-tree-dump-times "\\* 2;" 1 "dom2" { target { int16 } } } } */
-/* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+" 1 "dom2" } } */
-/* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 9 "dom2" } } */
+/* { dg-final { scan-tree-dump-times "\\* 4;" 1 "dom3" { target { int32 } } } } */
+/* { dg-final { scan-tree-dump-times "\\* 2;" 1 "dom3" { target { int16 } } } } */
+/* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+" 1 "dom3" } } */
+/* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 9 "dom3" } } */
index 4a8c6b6..0c478d1 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dce2" } */
+/* { dg-options "-O1 -fdump-tree-dce3" } */
 
 int t() __attribute__ ((const));
 void
@@ -10,4 +10,4 @@ q()
     i = t();
 }
 /* There should be no IF conditionals.  */
-/* { dg-final { scan-tree-dump-times "if " 0 "dce2"} } */
+/* { dg-final { scan-tree-dump-times "if " 0 "dce3"} } */
index 6281a1e..b3f5073 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dce2" } */
+/* { dg-options "-O2 -fdump-tree-dce3" } */
 
 /* We should notice constantness of this function. */
 static int __attribute__((noinline)) t(int a) 
@@ -13,4 +13,4 @@ void q(void)
     i = t(1);
 }
 /* There should be no IF conditionals.  */
-/* { dg-final { scan-tree-dump-times "if " 0 "dce2"} } */
+/* { dg-final { scan-tree-dump-times "if " 0 "dce3"} } */
index bf50e63..18f9041 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -w -fdump-tree-dom1-details" } */
+/* { dg-options "-O2 -w -fdump-tree-dom2-details" } */
 
 typedef struct rtx_def *rtx;
 struct rtx_def
@@ -21,9 +21,9 @@ try_combine (rtx i1, rtx newpat)
 
 /* There should be three tests against i1.  Two from the hash table
    dumps, one in the code itself.  */
-/* { dg-final { scan-tree-dump-times "if .i1_" 3 "dom1"} } */
+/* { dg-final { scan-tree-dump-times "if .i1_" 3 "dom2"} } */
 
 /* There should be no actual jump threads realized by DOM.  The
    legitimize jump threads are handled in VRP and those discovered
    by DOM are subsumed by collapsing a conditional.  */
-/* { dg-final { scan-tree-dump-not "Threaded" "dom1"} } */
+/* { dg-final { scan-tree-dump-not "Threaded" "dom2"} } */
index 0711ff4..04637c2 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-O -fno-tree-fre -fdump-tree-dom1" } */
+/* { dg-options "-O -fno-tree-fre -fdump-tree-dom2" } */
 
 extern void abort (void);
 
@@ -27,4 +27,4 @@ main()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump "= PHI <\[01\]\\\(.\\\), \[01\]\\\(.\\\)>" "dom1" } } */
+/* { dg-final { scan-tree-dump "= PHI <\[01\]\\\(.\\\), \[01\]\\\(.\\\)>" "dom2" } } */
index 5e62fe5..759d9ab 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fno-tree-vrp -fdump-tree-dom1-details" } */
+/* { dg-options "-O2 -fno-tree-vrp -fdump-tree-dom2-details" } */
 void t(void);
 void q(void);
 void q1(void);
@@ -14,4 +14,4 @@ threading(int a,int b)
          q1();
 }
 /* We should thread the jump twice and elliminate it.  */
-/* { dg-final { scan-tree-dump-times "Threaded" 2 "dom1"} } */
+/* { dg-final { scan-tree-dump-times "Threaded" 2 "dom2"} } */
index 73d0ccf..b972f64 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom1-stats" } */
+/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom2-stats" } */
 
 void bla();
 
@@ -18,4 +18,4 @@ void thread_entry_through_header (void)
    jump threading pass.  */
 /* { dg-final { scan-tree-dump-times "Jumps threaded: 1" 1 "vrp1"} } */
 /* { dg-final { scan-tree-dump-times "Jumps threaded: 2" 0 "vrp1"} } */
-/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom1"} } */
+/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom2"} } */
index 909009a..0d40254 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom1-stats" } */
+/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom2-stats" } */
 
 void foo();
 void bla();
@@ -25,5 +25,5 @@ void thread_latch_through_header (void)
 /* Threading the latch to a later point in the loop is safe in this
    case.  And we want to thread through the header as well.  These
    are both caught by threading in DOM.  */
-/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom1"} } */
+/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom2"} } */
 /* { dg-final { scan-tree-dump-times "Jumps threaded: 2" 1 "vrp1"} } */
index 3a1f0d0..f3e37bd 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom1-stats" } */
+/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom2-stats" } */
 
 void foo();
 void bla();
@@ -29,4 +29,4 @@ void dont_thread_1 (void)
    header and around the latch.  If one is done without the other, then
    we create an irreducible CFG. */
 /* { dg-final { scan-tree-dump-not "Jumps threaded" "vrp1"} } */
-/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom1"} } */
+/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom2"} } */
index 5a4b705..9b4637a 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom1-stats" } */
+/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom2-stats" } */
 
 void foo();
 void bla();
@@ -26,4 +26,4 @@ void dont_thread_2 (int first)
 /* Peeling off the first iteration would make threading through
    the loop latch safe, but we don't do that currently.  */
 /* { dg-final { scan-tree-dump-not "Jumps threaded" "vrp1"} } */
-/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom1"} } */
+/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom2"} } */
index e0c7738..78e64c4 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom1-stats" } */
+/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom2-stats" } */
 
 void foo();
 void bla();
@@ -25,4 +25,4 @@ void dont_thread_3 (int nfirst)
 /* Threading through the loop header is not safe here.  Peeling off
    the first iteration then unswitching the loop would be safe.  */
 /* { dg-final { scan-tree-dump-not "Jumps threaded" "vrp1"} } */
-/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom1"} } */
+/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom2"} } */
index e278df0..e5c9f88 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom1-stats" } */
+/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom2-stats" } */
 
 void foo();
 void bla();
@@ -31,4 +31,4 @@ void dont_thread_4 (int a, int nfirst)
 }
 
 /* { dg-final { scan-tree-dump-not "Jumps threaded" "vrp1"} } */
-/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom1"} } */
+/* { dg-final { scan-tree-dump-not "Jumps threaded" "dom2"} } */
index 3b66d4d..77ba74c 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-dom1-details -std=gnu89" } */
+/* { dg-options "-O2 -fdump-tree-dom2-details -std=gnu89" } */
 struct bitmap_head_def;
 typedef struct bitmap_head_def *bitmap;
 typedef const struct bitmap_head_def *const_bitmap;
@@ -58,7 +58,7 @@ bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b,
    code we missed the edge when the first conditional is false
    (b_elt is zero, which means the second conditional is always
    zero.  */
-/* { dg-final { scan-tree-dump-times "Threaded" 3 "dom1" { target { ! logical_op_short_circuit } } } } */
+/* { dg-final { scan-tree-dump-times "Threaded" 3 "dom2" { target { ! logical_op_short_circuit } } } } */
 /* On targets that define LOGICAL_OP_NON_SHORT_CIRCUIT to 0, we split both
    "a_elt || b_elt" and "b_elt && kill_elt" into two conditions each,
    rather than using "(var1 != 0) op (var2 != 0)".  Also, as on other targets,
@@ -75,5 +75,5 @@ bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b,
       -> "kill_elt->indx == b_elt->indx" in the second condition,
         skipping the known-true "b_elt && kill_elt" in the second
         condition.  */
-/* { dg-final { scan-tree-dump-times "Threaded" 4 "dom1" { target logical_op_short_circuit } } } */
+/* { dg-final { scan-tree-dump-times "Threaded" 4 "dom2" { target logical_op_short_circuit } } } */
 
index c76db3c..1c42c27 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-Os -fno-tree-fre -fdump-tree-dom1-details" } */
+/* { dg-options "-Os -fno-tree-fre -fdump-tree-dom2-details" } */
 
 void foo(int *);
 void f2(int dst[3], int R)
@@ -19,4 +19,4 @@ void f2(int dst[3], int R)
   foo(inter);
 }
 
-/* { dg-final { scan-tree-dump "Threaded jump" "dom1" } } */
+/* { dg-final { scan-tree-dump "Threaded jump" "dom2" } } */
index bd1301e..ab6b6eb 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dom1-details" } */
-/* { dg-final { scan-tree-dump-times "FSM" 6 "dom1" } } */
+/* { dg-options "-O2 -fdump-tree-dom2-details" } */
+/* { dg-final { scan-tree-dump-times "FSM" 6 "dom2" } } */
 
 int sum0, sum1, sum2, sum3;
 int foo (char *s, char **ret)
index ac12b6c..93c767c 100644 (file)
@@ -1,8 +1,8 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom1-stats -fdump-tree-dom2-stats" } */
+/* { dg-options "-O2 -fdump-tree-vrp1-stats -fdump-tree-dom2-stats -fdump-tree-dom3-stats" } */
 /* { dg-final { scan-tree-dump "Jumps threaded: 7"  "vrp1" } } */
-/* { dg-final { scan-tree-dump "Jumps threaded: 12" "dom1" } } */
-/* { dg-final { scan-tree-dump "Jumps threaded: 3"  "dom2" } } */
+/* { dg-final { scan-tree-dump "Jumps threaded: 12" "dom2" } } */
+/* { dg-final { scan-tree-dump "Jumps threaded: 3"  "dom3" } } */
 
 enum STATE {
   S0=0,
index 1b387cd..4ee7049 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-lim1" } */
+/* { dg-options "-O -fdump-tree-lim2" } */
 
 /* This is a variant that does cause fold to place a cast to
    int before testing bit 1.  */
@@ -18,4 +18,4 @@ quantum_toffoli (int control1, int control2, int target,
     }
 }
 
-/* { dg-final { scan-tree-dump-times "1 <<" 3 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "1 <<" 3 "lim2" } } */
index 79ea042..ec609d8 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-lim1-details" } */
+/* { dg-options "-O2 -fdump-tree-lim2-details" } */
 
 int *l, *r;
 int test_func(void)
@@ -27,4 +27,4 @@ int test_func(void)
   return i;
 }
 
-/* { dg-final { scan-tree-dump "Executing store motion of pos" "lim1" } } */
+/* { dg-final { scan-tree-dump "Executing store motion of pos" "lim2" } } */
index eadf71c..e4c11aa 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fprofile-arcs -fdump-tree-lim1-details" } */
+/* { dg-options "-O -fprofile-arcs -fdump-tree-lim2-details" } */
 /* { dg-require-profiling "-fprofile-generate" } */
 
 struct thread_param
@@ -22,4 +22,4 @@ void access_buf(struct thread_param* p)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "Executing store motion of __gcov0.access_buf\\\[\[01\]\\\] from loop 1" 2 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "Executing store motion of __gcov0.access_buf\\\[\[01\]\\\] from loop 1" 2 "lim2" } } */
index 35f17d5..016ff22 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-lim1" } */
+/* { dg-options "-O -fdump-tree-lim2" } */
 
 int a[1024];
 
@@ -23,4 +23,4 @@ void bar (int x, int z)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "!= 0 ? " 2 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "!= 0 ? " 2 "lim2" } } */
index 8e72f78..37639cd 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-lim1" } */
+/* { dg-options "-O -fdump-tree-lim2" } */
 
 /* This is a variant that doesn't cause fold to place a cast to
    int before testing bit 1.  */
@@ -18,4 +18,4 @@ int size)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "1 <<" 3 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "1 <<" 3 "lim2" } } */
index 2035215..f059d5a 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-lim1-details" } */
+/* { dg-options "-O -fdump-tree-lim2-details" } */
 
 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 "Executing store motion of global.y" "lim1" } } */
-/* { dg-final { scan-tree-dump "Moving statement.*global.x.*out of loop 1" "lim1" } } */
+/* { dg-final { scan-tree-dump "Executing store motion of global.y" "lim2" } } */
+/* { dg-final { scan-tree-dump "Moving statement.*global.x.*out of loop 1" "lim2" } } */
index 283d206..21edcd0 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-lim1-details" } */
+/* { dg-options "-O2 -fdump-tree-lim2-details" } */
 
 double a[16][64], y[64], x[16];
 void foo(void)
@@ -10,4 +10,4 @@ void foo(void)
       y[j] = y[j] + a[i][j] * x[i];
 }
 
-/* { dg-final { scan-tree-dump "Executing store motion of y" "lim1" } } */
+/* { dg-final { scan-tree-dump "Executing store motion of y" "lim2" } } */
index f9d685e..7612e75 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-lim1-details" } */
+/* { dg-options "-O -fdump-tree-lim2-details" } */
 
 extern const int srcshift;
 
@@ -11,4 +11,4 @@ void foo (int *srcdata, int *dstdata)
     dstdata[i] = srcdata[i] << srcshift;
 }
 
-/* { dg-final { scan-tree-dump "Moving statement" "lim1" } } */
+/* { dg-final { scan-tree-dump "Moving statement" "lim2" } } */
index aaad0f0..9256b39 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-lim1-details" } */
+/* { dg-options "-O -fdump-tree-lim2-details" } */
 
 void bar (int);
 void foo (int n, int m)
@@ -16,4 +16,4 @@ void foo (int n, int m)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "Moving PHI node" 1 "lim1"  } } */
+/* { dg-final { scan-tree-dump-times "Moving PHI node" 1 "lim2"  } } */
index 8abc2c7..a65656f 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-lim1-details" } */
+/* { dg-options "-O -fdump-tree-lim2-details" } */
 
 void bar (int);
 void foo (int n, int m)
@@ -16,4 +16,4 @@ void foo (int n, int m)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "Moving PHI node" 1 "lim1"  } } */
+/* { dg-final { scan-tree-dump-times "Moving PHI node" 1 "lim2"  } } */
index 0697fb0..f250d22 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-dom1-details" } */
-/* { dg-final { scan-tree-dump "FSM" "dom1" } } */
+/* { dg-options "-O2 -fdump-tree-dom2-details" } */
+/* { dg-final { scan-tree-dump "FSM" "dom2" } } */
 
 typedef struct bitmap_head_def *bitmap;
 typedef const struct bitmap_head_def *const_bitmap;
index 0582e26..94bdd4a 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-lim1-details" } */
+/* { dg-options "-O2 -fdump-tree-lim2-details" } */
 int x; int y;
 struct { int x; int y; } global;
 int foo() {
@@ -10,5 +10,5 @@ int foo() {
                global.y += global.x*global.x;
 }
 
-/* { dg-final { scan-tree-dump-times "Executing store motion of global.y" 1 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "Executing store motion of global.y" 1 "lim2" } } */
 /* XXX: We should also check for the load motion of global.x, but there is no easy way to do this.  */
index d96e842..beca5fa 100644 (file)
@@ -4,7 +4,7 @@
    jumps when evaluating an && condition.  VRP is not able to optimize
    this.  */
 /* { dg-do compile { target { ! { logical_op_short_circuit || { s390*-*-* mn10300-*-* hppa*-*-* } } } } } */
-/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-dom1 -fdump-tree-vrp2" } */
+/* { dg-options "-O2 -fdump-tree-vrp1 -fdump-tree-dom2 -fdump-tree-vrp2" } */
 /* { dg-additional-options "-march=i586" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
 
 int h(int x, int y)
index 597ee7e..5b445a9 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target vect_int } */
-/* { dg-additional-options "-fdump-tree-dce5-details" } */
+/* { dg-additional-options "-fdump-tree-dce6-details" } */
 
 int a[256], b[256], c[256];
 
@@ -13,4 +13,4 @@ foo () {
   }
 }
 
-/* { dg-final { scan-tree-dump-times "Deleting : vect_" 0 "dce5" } } */
+/* { dg-final { scan-tree-dump-times "Deleting : vect_" 0 "dce6" } } */
index 1c45d1e..0661208 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-O2 -fdump-tree-lim1" }
+! { dg-options "-O2 -fdump-tree-lim2" }
 ! gfortran -c -m32 -O2 -S junk.f
 !
       MODULE LES3D_DATA
@@ -45,4 +45,4 @@
 
       RETURN
       END
-! { dg-final { scan-tree-dump-times "stride" 4 "lim1" } }
+! { dg-final { scan-tree-dump-times "stride" 4 "lim2" } }
index 7e618bf..6493fcc 100644 (file)
@@ -165,6 +165,8 @@ public:
   /* Initialize and finalize loop structures, copying headers inbetween.  */
   virtual unsigned int execute (function *);
 
+  opt_pass * clone () { return new pass_ch (m_ctxt); }
+
 protected:
   /* ch_base method: */
   virtual bool process_loop_p (struct loop *loop);