[PR tree-optimization/78024] Clear basic block flags before using BB_VISITED for...
authorThomas Schwinge <thomas@codesourcery.com>
Wed, 19 Oct 2016 10:19:24 +0000 (12:19 +0200)
committerThomas Schwinge <tschwinge@gcc.gnu.org>
Wed, 19 Oct 2016 10:19:24 +0000 (12:19 +0200)
gcc/
* omp-low.c (oacc_loop_discovery): Call clear_bb_flags before, and
don't clear BB_VISITED after processing.

gcc/testsuite/
* gcc.dg/goacc/loop-processing-1.c: New file.

From-SVN: r241334

gcc/ChangeLog
gcc/omp-low.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/goacc/loop-processing-1.c [new file with mode: 0644]

index d5830d552bf745188ce7e00b5dd8fb28e9cdb95c..4117eb34637dbdb92f6c034bb1bbc5016cdad2c1 100644 (file)
@@ -1,3 +1,9 @@
+2016-10-19  Thomas Schwinge  <thomas@codesourcery.com>
+
+       PR tree-optimization/78024
+       * omp-low.c (oacc_loop_discovery): Call clear_bb_flags before, and
+       don't clear BB_VISITED after processing.
+
 2016-10-19  Richard Biener  <rguenther@suse.de>
 
        * domwalk.c (dom_walker::walk): Use RPO order.
index 77f89d5ef61ef46d8044fca81af5d7ff06f26e84..3ef796f3c2419b10183efb2be71c2c7129145ec4 100644 (file)
@@ -19236,7 +19236,9 @@ oacc_loop_sibling_nreverse (oacc_loop *loop)
 static oacc_loop *
 oacc_loop_discovery ()
 {
-  basic_block bb;
+  /* Clear basic block flags, in particular BB_VISITED which we're going to use
+     in the following.  */
+  clear_bb_flags ();
   
   oacc_loop *top = new_oacc_loop_outer (current_function_decl);
   oacc_loop_discover_walk (top, ENTRY_BLOCK_PTR_FOR_FN (cfun));
@@ -19245,10 +19247,6 @@ oacc_loop_discovery ()
      that diagnostics come out in an unsurprising order.  */
   top = oacc_loop_sibling_nreverse (top);
 
-  /* Reset the visited flags.  */
-  FOR_ALL_BB_FN (bb, cfun)
-    bb->flags &= ~BB_VISITED;
-
   return top;
 }
 
index df7302249832a33a1d338ab5c53118a1afc32b03..ec875aaa5cae5ff394bde31bb3a706a32857ff88 100644 (file)
@@ -1,3 +1,8 @@
+2016-10-19  Thomas Schwinge  <thomas@codesourcery.com>
+
+       PR tree-optimization/78024
+       * gcc.dg/goacc/loop-processing-1.c: New file.
+
 2016-10-19  Richard Biener  <rguenther@suse.de>
 
        * gcc.dg/tree-ssa/pr61839_2.c: Fix testcase.
diff --git a/gcc/testsuite/gcc.dg/goacc/loop-processing-1.c b/gcc/testsuite/gcc.dg/goacc/loop-processing-1.c
new file mode 100644 (file)
index 0000000..619576a
--- /dev/null
@@ -0,0 +1,18 @@
+/* Make sure that OpenACC loop processing happens.  */
+/* { dg-additional-options "-O2 -fdump-tree-oaccdevlow" } */
+
+extern int place ();
+
+void vector_1 (int *ary, int size)
+{
+#pragma acc parallel num_workers (32) vector_length(32) copy(ary[0:size]) firstprivate (size)
+  {
+#pragma acc loop gang
+    for (int jx = 0; jx < 1; jx++)
+#pragma acc loop auto
+      for (int ix = 0; ix < size; ix++)
+       ary[ix] = place ();
+  }
+}
+
+/* { dg-final { scan-tree-dump {OpenACC loops.*Loop 0\(0\).*Loop 14\(1\).*\.data_dep\.[0-9_]+ = UNIQUE \(OACC_HEAD_MARK, 0, 1, 20\);.*Head-0:.*\.data_dep\.[0-9_]+ = UNIQUE \(OACC_HEAD_MARK, 0, 1, 20\);.*\.data_dep\.[0-9_]+ = UNIQUE \(OACC_FORK, \.data_dep\.[0-9_]+, 0\);.*Tail-0:.*\.data_dep\.[0-9_]+ = UNIQUE \(OACC_TAIL_MARK, \.data_dep\.[0-9_]+, 1\);.*\.data_dep\.[0-9_]+ = UNIQUE \(OACC_JOIN, \.data_dep\.[0-9_]+, 0\);.*Loop 6\(4\).*\.data_dep\.[0-9_]+ = UNIQUE \(OACC_HEAD_MARK, 0, 1, 6\);.*Head-0:.*\.data_dep\.[0-9_]+ = UNIQUE \(OACC_HEAD_MARK, 0, 1, 6\);.*\.data_dep\.[0-9_]+ = UNIQUE \(OACC_FORK, \.data_dep\.[0-9_]+, 2\);.*Tail-0:.*\.data_dep\.[0-9_]+ = UNIQUE \(OACC_TAIL_MARK, \.data_dep\.[0-9_]+, 1\);.*\.data_dep\.[0-9_]+ = UNIQUE \(OACC_JOIN, \.data_dep\.[0-9_]+, 2\);} "oaccdevlow" } } */