aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2021-11-26 12:29:26 +0100
committerThomas Schwinge <thomas@codesourcery.com>2021-11-30 12:59:10 +0100
commit77d24d43644909852998043335b5a0e09d1e8f02 (patch)
tree22fe40ca5f07ac6450a8acbf250998fe02af2a5b /gcc/fortran
parentc4f4c60457d1657cbd72015de3d818eb6462a0e9 (diff)
downloadgcc-77d24d43644909852998043335b5a0e09d1e8f02.zip
gcc-77d24d43644909852998043335b5a0e09d1e8f02.tar.gz
gcc-77d24d43644909852998043335b5a0e09d1e8f02.tar.bz2
Consolidate OpenACC "gang reduction on an orphan loop" checking
No need to implement separately in all front ends what we may implement in the middle end, once for all. Follow-up to preceding commit 2b7dac2c0dcb087da9e4018943c023c0678234a3 "Make OpenACC orphan gang reductions errors". gcc/ * omp-offload.c (oacc_loop_process): Implement "gang reduction on an orphan loop" checking. gcc/c/ * c-typeck.c (c_finish_omp_clauses): Remove "gang reduction on an orphan loop" checking. gcc/cp/ * semantics.c (finish_omp_clauses): Remove "gang reduction on an orphan loop" checking. gcc/fortran/ * openmp.c (resolve_oacc_loop_blocks): Remove "gang reduction on an orphan loop" checking. (oacc_is_parallel, oacc_is_kernels, oacc_is_serial) (oacc_is_compute_construct): Remove. gcc/testsuite/ * gfortran.dg/goacc/orphan-reductions-1.f90: Adjust.
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/openmp.c37
1 files changed, 0 insertions, 37 deletions
diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c
index 7950c7f..d120be8 100644
--- a/gcc/fortran/openmp.c
+++ b/gcc/fortran/openmp.c
@@ -8322,31 +8322,6 @@ resolve_omp_do (gfc_code *code)
}
}
-static bool
-oacc_is_parallel (gfc_code *code)
-{
- return code->op == EXEC_OACC_PARALLEL || code->op == EXEC_OACC_PARALLEL_LOOP;
-}
-
-static bool
-oacc_is_kernels (gfc_code *code)
-{
- return code->op == EXEC_OACC_KERNELS || code->op == EXEC_OACC_KERNELS_LOOP;
-}
-
-static bool
-oacc_is_serial (gfc_code *code)
-{
- return code->op == EXEC_OACC_SERIAL || code->op == EXEC_OACC_SERIAL_LOOP;
-}
-
-static bool
-oacc_is_compute_construct (gfc_code *code)
-{
- return (oacc_is_parallel (code)
- || oacc_is_kernels (code)
- || oacc_is_serial (code));
-}
static gfc_statement
omp_code_to_statement (gfc_code *code)
@@ -8650,18 +8625,6 @@ resolve_oacc_loop_blocks (gfc_code *code)
if (!oacc_is_loop (code))
return;
- if (code->op == EXEC_OACC_LOOP
- && code->ext.omp_clauses->lists[OMP_LIST_REDUCTION]
- && code->ext.omp_clauses->gang)
- {
- fortran_omp_context *c;
- for (c = omp_current_ctx; c; c = c->previous)
- if (!oacc_is_loop (c->code))
- break;
- if (c == NULL || !(oacc_is_compute_construct (c->code)))
- gfc_error ("gang reduction on an orphan loop at %L", &code->loc);
- }
-
if (code->ext.omp_clauses->tile_list && code->ext.omp_clauses->gang
&& code->ext.omp_clauses->worker && code->ext.omp_clauses->vector)
gfc_error ("Tiled loop cannot be parallelized across gangs, workers and "