diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2017-05-12 11:02:55 +0200 |
---|---|---|
committer | Thomas Schwinge <tschwinge@gcc.gnu.org> | 2017-05-12 11:02:55 +0200 |
commit | 25651634436238d505c586fd308cdd5b6c5db8f9 (patch) | |
tree | 7fddfeb04f28bb8f5eb26dde13c784b149b14de3 /gcc/tree-parloops.c | |
parent | ee58b02f1160548513a3d00a04acbad93c423b3f (diff) |
Use "oacc kernels" attribute for OpenACC kernels
gcc/
* omp-expand.c (expand_omp_target) <GF_OMP_TARGET_KIND_OACC_KERNELS>:
Set "oacc kernels" attribute.
* omp-general.c (oacc_set_fn_attrib): Remove is_kernel formal
parameter. Adjust all users.
(oacc_fn_attrib_kernels_p): Remove function.
* omp-offload.c (execute_oacc_device_lower): Look for "oacc
kernels" attribute instead of calling oacc_fn_attrib_kernels_p.
* tree-ssa-loop.c (gate_oacc_kernels): Likewise.
* tree-parloops.c (create_parallel_loop): If oacc_kernels_p,
assert "oacc kernels" attribute is set.
gcc/testsuite/
* c-c++-common/goacc/classify-kernels-unparallelized.c: Adjust.
* c-c++-common/goacc/classify-kernels.c: Likewise.
* c-c++-common/goacc/classify-parallel.c: Likewise.
* c-c++-common/goacc/classify-routine.c: Likewise.
* gfortran.dg/goacc/classify-kernels-unparallelized.f95: Likewise.
* gfortran.dg/goacc/classify-kernels.f95: Likewise.
* gfortran.dg/goacc/classify-parallel.f95: Likewise.
* gfortran.dg/goacc/classify-routine.f95: Likewise.
From-SVN: r247955
Diffstat (limited to 'gcc/tree-parloops.c')
-rw-r--r-- | gcc/tree-parloops.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index 739301140f0..6ce9d845168 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -2043,10 +2043,13 @@ create_parallel_loop (struct loop *loop, tree loop_fn, tree data, /* Prepare the GIMPLE_OMP_PARALLEL statement. */ if (oacc_kernels_p) { + gcc_checking_assert (lookup_attribute ("oacc kernels", + DECL_ATTRIBUTES (cfun->decl))); + tree clause = build_omp_clause (loc, OMP_CLAUSE_NUM_GANGS); OMP_CLAUSE_NUM_GANGS_EXPR (clause) = build_int_cst (integer_type_node, n_threads); - oacc_set_fn_attrib (cfun->decl, clause, true, NULL); + oacc_set_fn_attrib (cfun->decl, clause, NULL); } else { |