diff options
author | Frederik Harwath <frederik@codesourcery.com> | 2020-07-20 11:24:21 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2021-11-30 12:59:07 +0100 |
commit | c4f4c60457d1657cbd72015de3d818eb6462a0e9 (patch) | |
tree | 299f6d0e98fbd3b0ff6a975bc3862b44961c6b90 /gcc/fortran | |
parent | f1a58ab0db20c0862e8b5039bd448fc8c9799cac (diff) | |
download | gcc-c4f4c60457d1657cbd72015de3d818eb6462a0e9.zip gcc-c4f4c60457d1657cbd72015de3d818eb6462a0e9.tar.gz gcc-c4f4c60457d1657cbd72015de3d818eb6462a0e9.tar.bz2 |
Re OpenACC "gang reduction on an orphan loop" error message
Follow-up to preceding commit 2b7dac2c0dcb087da9e4018943c023c0678234a3
"Make OpenACC orphan gang reductions errors".
gcc/fortran/
* openmp.c (oacc_is_parallel_or_serial): Evolve into...
(oacc_is_compute_construct): ... this function.
(resolve_oacc_loop_blocks): Use "oacc_is_compute_construct"
instead of "oacc_is_parallel_or_serial" for checking that a
loop is not orphaned.
gcc/testsuite/
* gfortran.dg/goacc/orphan-reductions-3.f90: New test
verifying that the "gang reduction on an orphan loop" error message
is not emitted for non-orphaned loops.
* c-c++-common/goacc/orphan-reductions-3.c: Likewise for C and C++.
Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/openmp.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index b410057..7950c7f 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -8341,9 +8341,11 @@ oacc_is_serial (gfc_code *code) } static bool -oacc_is_parallel_or_serial (gfc_code *code) +oacc_is_compute_construct (gfc_code *code) { - return oacc_is_parallel (code) || oacc_is_serial (code); + return (oacc_is_parallel (code) + || oacc_is_kernels (code) + || oacc_is_serial (code)); } static gfc_statement @@ -8656,8 +8658,7 @@ resolve_oacc_loop_blocks (gfc_code *code) for (c = omp_current_ctx; c; c = c->previous) if (!oacc_is_loop (c->code)) break; - if (c == NULL || !(oacc_is_parallel_or_serial (c->code) - || oacc_is_kernels (c->code))) + if (c == NULL || !(oacc_is_compute_construct (c->code))) gfc_error ("gang reduction on an orphan loop at %L", &code->loc); } |