]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Use plain -fopenacc to enable OpenACC kernels processing
authorThomas Schwinge <thomas@codesourcery.com>
Tue, 23 Feb 2016 15:07:54 +0000 (16:07 +0100)
committerThomas Schwinge <tschwinge@gcc.gnu.org>
Tue, 23 Feb 2016 15:07:54 +0000 (16:07 +0100)
gcc/
* tree-parloops.c (create_parallel_loop, gen_parallel_loop)
(parallelize_loops): In OpenACC kernels mode, set n_threads to
zero.
(pass_parallelize_loops::gate): In OpenACC kernels mode, gate on
flag_openacc.
* tree-ssa-loop.c (gate_oacc_kernels): Likewise.
gcc/testsuite/
* c-c++-common/goacc/kernels-counter-vars-function-scope.c: Adjust
to -ftree-parallelize-loops/-fopenacc changes.
* c-c++-common/goacc/kernels-double-reduction-n.c: Likewise.
* c-c++-common/goacc/kernels-double-reduction.c: Likewise.
* c-c++-common/goacc/kernels-loop-2.c: Likewise.
* c-c++-common/goacc/kernels-loop-3.c: Likewise.
* c-c++-common/goacc/kernels-loop-g.c: Likewise.
* c-c++-common/goacc/kernels-loop-mod-not-zero.c: Likewise.
* c-c++-common/goacc/kernels-loop-n.c: Likewise.
* c-c++-common/goacc/kernels-loop-nest.c: Likewise.
* c-c++-common/goacc/kernels-loop.c: Likewise.
* c-c++-common/goacc/kernels-one-counter-var.c: Likewise.
* c-c++-common/goacc/kernels-reduction.c: Likewise.
* gfortran.dg/goacc/kernels-loop-inner.f95: Likewise.
* gfortran.dg/goacc/kernels-loops-adjacent.f95: Likewise.
libgomp/
* oacc-parallel.c (GOACC_parallel_keyed): Initialize dims.
* plugin/plugin-nvptx.c (nvptx_exec): Provide default values for
dims.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-2.c: Adjust to
-ftree-parallelize-loops/-fopenacc changes.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-3.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-2.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-3.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-4.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-5.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-6.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-collapse.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-g.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-mod-not-zero.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-n.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop-nest.c:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-loop.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/kernels-reduction.c:
Likewise.

From-SVN: r233634

36 files changed:
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/goacc/kernels-counter-vars-function-scope.c
gcc/testsuite/c-c++-common/goacc/kernels-double-reduction-n.c
gcc/testsuite/c-c++-common/goacc/kernels-double-reduction.c
gcc/testsuite/c-c++-common/goacc/kernels-loop-2.c
gcc/testsuite/c-c++-common/goacc/kernels-loop-3.c
gcc/testsuite/c-c++-common/goacc/kernels-loop-g.c
gcc/testsuite/c-c++-common/goacc/kernels-loop-mod-not-zero.c
gcc/testsuite/c-c++-common/goacc/kernels-loop-n.c
gcc/testsuite/c-c++-common/goacc/kernels-loop-nest.c
gcc/testsuite/c-c++-common/goacc/kernels-loop.c
gcc/testsuite/c-c++-common/goacc/kernels-one-counter-var.c
gcc/testsuite/c-c++-common/goacc/kernels-reduction.c
gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95
gcc/testsuite/gfortran.dg/goacc/kernels-loops-adjacent.f95
gcc/tree-parloops.c
gcc/tree-ssa-loop.c
libgomp/ChangeLog
libgomp/oacc-parallel.c
libgomp/plugin/plugin-nvptx.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-2.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-3.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-2.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-3.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-4.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-5.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-6.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-collapse.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-g.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-mod-not-zero.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-n.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop-nest.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-loop.c
libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-reduction.c

index ce8d366012620c5f811e9075ca61701ac49e2791..0b2149d2913178a5d88a5472d2f415d2eb1f1cc1 100644 (file)
@@ -1,3 +1,12 @@
+2016-02-23  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * tree-parloops.c (create_parallel_loop, gen_parallel_loop)
+       (parallelize_loops): In OpenACC kernels mode, set n_threads to
+       zero.
+       (pass_parallelize_loops::gate): In OpenACC kernels mode, gate on
+       flag_openacc.
+       * tree-ssa-loop.c (gate_oacc_kernels): Likewise.
+
 2016-02-23  Richard Biener  <rguenther@suse.de>
 
        * mem-stats.h (struct mem_usage): Use PRIu64 for printing size_t.
index 60372ce6a59da61713c7e24be3d23a3c98d18bed..17cf40c05269511c9d01e92fa47b49a93287f4c1 100644 (file)
@@ -1,3 +1,21 @@
+2016-02-23  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * c-c++-common/goacc/kernels-counter-vars-function-scope.c: Adjust
+       to -ftree-parallelize-loops/-fopenacc changes.
+       * c-c++-common/goacc/kernels-double-reduction-n.c: Likewise.
+       * c-c++-common/goacc/kernels-double-reduction.c: Likewise.
+       * c-c++-common/goacc/kernels-loop-2.c: Likewise.
+       * c-c++-common/goacc/kernels-loop-3.c: Likewise.
+       * c-c++-common/goacc/kernels-loop-g.c: Likewise.
+       * c-c++-common/goacc/kernels-loop-mod-not-zero.c: Likewise.
+       * c-c++-common/goacc/kernels-loop-n.c: Likewise.
+       * c-c++-common/goacc/kernels-loop-nest.c: Likewise.
+       * c-c++-common/goacc/kernels-loop.c: Likewise.
+       * c-c++-common/goacc/kernels-one-counter-var.c: Likewise.
+       * c-c++-common/goacc/kernels-reduction.c: Likewise.
+       * gfortran.dg/goacc/kernels-loop-inner.f95: Likewise.
+       * gfortran.dg/goacc/kernels-loops-adjacent.f95: Likewise.
+
 2016-02-23  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        * gcc.target/i386/chkp-hidden-def.c: Require alias support.
index e8b5357cc01f445c5bbc998ce62ec244a4763426..17f240e5a83369c67e4e6298af560fdff9d5597f 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -51,4 +50,4 @@ main (void)
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*main._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index c39d67458f82197d24699963f79067f52311b435..750f576e4cb035ef2e7694f0afca4e13639eb164 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -34,4 +33,4 @@ foo (unsigned int n)
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*foo.*._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index 3501d0df152f7291594e1a75ffc9621e5974f2d0..df60d6a51c1fc59a7b9dadfbbfee7f585880e43d 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -34,4 +33,4 @@ foo (void)
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*foo.*._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index f97584dd22d2f4d5c630a9470682de01e88d7f82..913d91f5fb6b7c6e63c0092a8ac659e045a57719 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -67,4 +66,4 @@ main (void)
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*main._omp_fn.1" 1 "optimized" } } */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*main._omp_fn.2" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 3 "parloops1" } } */
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } } */
index 530d62ab867850e41dbb4a2a0558aee6471e7f87..1822d2a6871794fe512f2aa8303d3cf4bbf5653b 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -45,5 +44,4 @@ main (void)
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*main._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
-
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index 4f1c2c5cb21486a1da78ac9e832ddb4a68f34503..e946319e2d7a54b5b67e4534d9aaa55dddf64b67 100644 (file)
@@ -1,6 +1,5 @@
 /* { dg-additional-options "-O2" } */
 /* { dg-additional-options "-g" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -13,5 +12,4 @@
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*main._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
-
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index 151db51833063eae2b134abb64141aed1754b0e3..9b63b45f711e40bb0ccbb3e1ffa94ab08efa104c 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -49,4 +48,4 @@ main (void)
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*main._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index bee5f5a6098a93551b296f9f5d5428330b4e7e67..279f7976ada388c2c1cd923e3a4444c185bdb363 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -52,5 +51,4 @@ foo (COUNTERTYPE n)
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*foo.*._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
-
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index ea0e342ffba25e18fb48f2348f75f37a39e428da..db1071f7dd272b2c6ce98f9f009318984988edc1 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -36,4 +35,4 @@ main (void)
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*main._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index ab5dfb9ca0372de2132fc006cb83e3c5f587f705..abf7a3c3c65acb22107cf104a09a916b0d5cb414 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -52,5 +51,4 @@ main (void)
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*main._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
-
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index b16a8cd2b1c9336d6e253eb2e35a1f6f25335974..95f4817906de607c5e0629f0ad89d8932cd8f89d 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -50,5 +49,4 @@ main (void)
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*main._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
-
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index 61c5df3a626bc4d340b0b2314708413c954e4719..6f5a418a4625ca9d71cf130205bb12520798662e 100644 (file)
@@ -1,5 +1,4 @@
 /* { dg-additional-options "-O2" } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-fdump-tree-parloops1-all" } */
 /* { dg-additional-options "-fdump-tree-optimized" } */
 
@@ -32,5 +31,4 @@ foo (void)
 /* Check that the loop has been split off into a function.  */
 /* { dg-final { scan-tree-dump-times "(?n);; Function .*foo.*._omp_fn.0" 1 "optimized" } } */
 
-/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(32," 1 "parloops1" } } */
-
+/* { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } */
index 4db3a506c05ea8d5d8b535599c86040ac33b5ee0..333474141526a696597dc792bb9f7ada80fcc9c3 100644 (file)
@@ -1,5 +1,4 @@
 ! { dg-additional-options "-O2" }
-! { dg-additional-options "-ftree-parallelize-loops=32" }
 
 program main
    implicit none
index fef3d106d4b3f3f6a49f20493707a7b2ae919ed4..fb92da8c08ba6e00662bd0f1777c99f9f4eeab29 100644 (file)
@@ -1,5 +1,4 @@
 ! { dg-additional-options "-O2" }
-! { dg-additional-options "-ftree-parallelize-loops=10" }
 
 program main
    implicit none
index 139e38c65d952ddc04d01fb2f717e3b276b0fd32..e498e5b62b7b7d2af1ea768e1b428c0e8960d3b2 100644 (file)
@@ -2016,7 +2016,8 @@ transform_to_exit_first_loop (struct loop *loop,
 /* Create the parallel constructs for LOOP as described in gen_parallel_loop.
    LOOP_FN and DATA are the arguments of GIMPLE_OMP_PARALLEL.
    NEW_DATA is the variable that should be initialized from the argument
-   of LOOP_FN.  N_THREADS is the requested number of threads.  */
+   of LOOP_FN.  N_THREADS is the requested number of threads, which can be 0 if
+   that number is to be determined later.  */
 
 static void
 create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
@@ -2049,6 +2050,7 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
       basic_block paral_bb = single_pred (bb);
       gsi = gsi_last_bb (paral_bb);
 
+      gcc_checking_assert (n_threads != 0);
       t = build_omp_clause (loc, OMP_CLAUSE_NUM_THREADS);
       OMP_CLAUSE_NUM_THREADS_EXPR (t)
        = build_int_cst (integer_type_node, n_threads);
@@ -2221,7 +2223,8 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data,
 }
 
 /* Generates code to execute the iterations of LOOP in N_THREADS
-   threads in parallel.
+   threads in parallel, which can be 0 if that number is to be determined
+   later.
 
    NITER describes number of iterations of LOOP.
    REDUCTION_LIST describes the reductions existent in the LOOP.  */
@@ -2318,6 +2321,7 @@ gen_parallel_loop (struct loop *loop,
       else
        m_p_thread=MIN_PER_THREAD;
 
+      gcc_checking_assert (n_threads != 0);
       many_iterations_cond =
        fold_build2 (GE_EXPR, boolean_type_node,
                     nit, build_int_cst (type, m_p_thread * n_threads));
@@ -3177,7 +3181,7 @@ oacc_entry_exit_ok (struct loop *loop,
 static bool
 parallelize_loops (bool oacc_kernels_p)
 {
-  unsigned n_threads = flag_tree_parallelize_loops;
+  unsigned n_threads;
   bool changed = false;
   struct loop *loop;
   struct loop *skip_loop = NULL;
@@ -3199,6 +3203,13 @@ parallelize_loops (bool oacc_kernels_p)
   if (cfun->has_nonlocal_label)
     return false;
 
+  /* For OpenACC kernels, n_threads will be determined later; otherwise, it's
+     the argument to -ftree-parallelize-loops.  */
+  if (oacc_kernels_p)
+    n_threads = 0;
+  else
+    n_threads = flag_tree_parallelize_loops;
+
   gcc_obstack_init (&parloop_obstack);
   reduction_info_table_type reduction_list (10);
 
@@ -3361,7 +3372,13 @@ public:
   {}
 
   /* opt_pass methods: */
-  virtual bool gate (function *) { return flag_tree_parallelize_loops > 1; }
+  virtual bool gate (function *)
+  {
+    if (oacc_kernels_p)
+      return flag_openacc;
+    else
+      return flag_tree_parallelize_loops > 1;
+  }
   virtual unsigned int execute (function *);
   opt_pass * clone () { return new pass_parallelize_loops (m_ctxt); }
   void set_pass_param (unsigned int n, bool param)
index bdbade5e9ab26fd94ab0dbcb1c6b7f24a07710f7..4c39fbc8cc39fbe26d5c2d77a8a188d273c65290 100644 (file)
@@ -148,7 +148,7 @@ make_pass_tree_loop (gcc::context *ctxt)
 static bool
 gate_oacc_kernels (function *fn)
 {
-  if (flag_tree_parallelize_loops <= 1)
+  if (!flag_openacc)
     return false;
 
   tree oacc_function_attr = get_oacc_fn_attrib (fn->decl);
@@ -230,10 +230,9 @@ public:
   virtual bool gate (function *)
   {
     return (optimize
-           /* Don't bother doing anything if the program has errors.  */
-           && !seen_error ()
            && flag_openacc
-           && flag_tree_parallelize_loops > 1);
+           /* Don't bother doing anything if the program has errors.  */
+           && !seen_error ());
   }
 
 }; // class pass_ipa_oacc
index 1394126f98fe6c26947d46e736d503650277834e..e6a708255b086589a957eded44220f1ced573833 100644 (file)
@@ -1,3 +1,35 @@
+2016-02-23  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * oacc-parallel.c (GOACC_parallel_keyed): Initialize dims.
+       * plugin/plugin-nvptx.c (nvptx_exec): Provide default values for
+       dims.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-2.c: Adjust to
+       -ftree-parallelize-loops/-fopenacc changes.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-3.c: Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-2.c:
+       Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-3.c:
+       Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-4.c:
+       Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-5.c:
+       Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq-6.c:
+       Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-and-seq.c:
+       Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-collapse.c:
+       Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-g.c: Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-mod-not-zero.c:
+       Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-n.c: Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop-nest.c:
+       Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-loop.c: Likewise.
+       * testsuite/libgomp.oacc-c-c++-common/kernels-reduction.c:
+       Likewise.
+
 2016-02-22  Cesar Philippidis  <cesar@codesourcery.com>
 
        * testsuite/libgomp.oacc-c-c++-common/vprop.c: New test.
index bc246510e2a181b7ad10c71450e6eb383cfd30b8..f795bf7f92c8e0adaf5edeb2c221060c6d995ffe 100644 (file)
@@ -103,6 +103,10 @@ GOACC_parallel_keyed (int device, void (*fn) (void *),
       return;
     }
 
+  /* Default: let the runtime choose.  */
+  for (i = 0; i != GOMP_DIM_MAX; i++)
+    dims[i] = 0;
+
   va_start (ap, kinds);
   /* TODO: This will need amending when device_type is implemented.  */
   while ((tag = va_arg (ap, unsigned)) != 0)
index 7ec1810a0468821f66de637739aa865b345d87b1..3f1bb6d90e92fe1881b8537097bb4d6eea155ed3 100644 (file)
@@ -894,9 +894,21 @@ nvptx_exec (void (*fn), size_t mapnum, void **hostaddrs, void **devaddrs,
   /* Initialize the launch dimensions.  Typically this is constant,
      provided by the device compiler, but we must permit runtime
      values.  */
-  for (i = 0; i != 3; i++)
-    if (targ_fn->launch->dim[i])
-      dims[i] = targ_fn->launch->dim[i];
+  int seen_zero = 0;
+  for (i = 0; i != GOMP_DIM_MAX; i++)
+    {
+      if (targ_fn->launch->dim[i])
+       dims[i] = targ_fn->launch->dim[i];
+      if (!dims[i])
+       seen_zero = 1;
+    }
+
+  if (seen_zero)
+    {
+      for (i = 0; i != GOMP_DIM_MAX; i++)
+       if (!dims[i])
+         dims[i] = /* TODO */ 32;
+    }
 
   /* This reserves a chunk of a pre-allocated page of memory mapped on both
      the host and the device. HP is a host pointer to the new chunk, and DP is
index 13e57bd987786482bea0afb39158054cc86ed652..c7592d6a34066b04c809809f035f49b0d843db09 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N (1024 * 512)
index f61a74a00fb2ccc2875cb85633616c0c00368e6c..31114ac86d7149cf719dd761d77e94b9149b1bcf 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N (1024 * 512)
index 2e4100fa7a2f267107b8ea3797b3e12427aa6606..d36592f7233c51abd5fddc34d99ac1d2e63436e5 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N 32
index b3e736bf3589e93cc4b68a774510689cd62ca03e..e62297129fd07794fcb553db2dd392ad4dc12623 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N 32
index 8b9affabedc86c03f1ab52366c707f0dfda2cd47..c73127897a927af2fcb0092be0e1aa7bcc30aef2 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N 32
index 83d4e7faf8f4bead623849920b7e77bf66721e91..67dcce26c894ec758c6ee22f7379d8e3f585f4dd 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N 32
index 01d5e5e4c24a4de4aa31b123424d937e399700de..b8b5ddeab833a5adda9baee36898445d0948e8a7 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N 32
index 61d1283a36a2dccd96484aa2f6b4f30cdad6b4a8..9d9308a4a1f3ad5a05fbd4f526b242d4eef69008 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N 32
index f7f04cb9ed5cce250619fc350f3e2433d016f4ad..997d6c7aad2f2d2128c0e54e4d9a17ec45347226 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N 100
index 96b6e4eaf455dfa16abe71217101bc9bf2dca7e2..88258be16bda2f3f88dc04aecb21d791b24a83d4 100644 (file)
@@ -1,5 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
 /* { dg-additional-options "-g" } */
 
 #include "kernels-loop.c"
index 1433cb203b8b4584d6d753ea0ef18183d7581e95..147ebb5994536c1ececa8f868885a90674b7dea8 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N ((1024 * 512) + 1)
index fd0d5b193a816bae6c02dc14f60c9449e5f3d493..9a3eaca13803584d8222b15cadf0771db67207f0 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N ((1024 * 512) + 1)
index 21d2599f0aa1b8de1a6d88b7b609fd4bb0871e43..28c725a61a208a9ea5cea6828e264b32b8324eb8 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N 1000
index 3762e5a8b9ac4d0d9fd4d0983fe7e58cd2fe7687..355123c6088461cb4fe9c6515d1e9fdd071cd723 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define N (1024 * 512)
index 511e25f882aa073b83edd0c5faa803d6f9fd62b7..8647a9432fc6cacee993491ebf06a1fec56743d0 100644 (file)
@@ -1,6 +1,3 @@
-/* { dg-do run } */
-/* { dg-additional-options "-ftree-parallelize-loops=32" } */
-
 #include <stdlib.h>
 
 #define n 10000