aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorFrederik Harwath <frederik@codesourcery.com>2020-07-20 11:24:21 +0200
committerThomas Schwinge <thomas@codesourcery.com>2021-11-30 12:59:07 +0100
commitc4f4c60457d1657cbd72015de3d818eb6462a0e9 (patch)
tree299f6d0e98fbd3b0ff6a975bc3862b44961c6b90 /gcc/fortran
parentf1a58ab0db20c0862e8b5039bd448fc8c9799cac (diff)
downloadgcc-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.c9
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);
}