From: Marcel Vollweiler Date: Thu, 27 Oct 2022 12:43:00 +0000 (+0000) Subject: openacc: Revert erroneous gang reduction changes X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5eb6cbcf3eb3d44f7329850452d268929d3ad8d8;p=thirdparty%2Fgcc.git openacc: Revert erroneous gang reduction changes This patch reverts some changes related to "gang reduction on an orphan loop" of commit 3a5e525489f2f808093ae1f12b5d2b406f571ec7 "Various OpenACC reduction enhancements - FE change" similar to the mainline commit 77d24d43644909852998043335b5a0e09d1e8f02. gcc/c/ChangeLog: * c-typeck.cc (c_finish_omp_clauses): Remove "gang reduction on an orphan loop" checking. gcc/cp/ChangeLog: * semantics.cc (finish_omp_clauses): Remove "gang reduction on an orphan loop" checking. gcc/fortran/ChangeLog: * openmp.cc (oacc_is_parallel): Remove. (resolve_oacc_loop_blocks): Remove "gang reduction on an orphan loop" checking. --- diff --git a/gcc/c/ChangeLog.omp b/gcc/c/ChangeLog.omp index 33fec8465939..1deeb6bb5b34 100644 --- a/gcc/c/ChangeLog.omp +++ b/gcc/c/ChangeLog.omp @@ -1,3 +1,8 @@ +2022-10-27 Marcel Vollweiler + + * c-typeck.cc (c_finish_omp_clauses): Remove "gang reduction on an + orphan loop" checking. + 2022-10-04 Tobias Burnus Backport from mainline: diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc index 0dd3a444bb04..87bc97f94339 100644 --- a/gcc/c/c-typeck.cc +++ b/gcc/c/c-typeck.cc @@ -14204,7 +14204,6 @@ c_finish_omp_clauses (tree clauses, enum c_omp_region_type ort) bool allocate_seen = false; bool implicit_moved = false; bool target_in_reduction_seen = false; - bool oacc_gang_seen = false; bitmap_obstack_initialize (NULL); bitmap_initialize (&generic_head, &bitmap_default_obstack); @@ -14222,15 +14221,10 @@ c_finish_omp_clauses (tree clauses, enum c_omp_region_type ort) if (ort & C_ORT_ACC) for (c = clauses; c; c = OMP_CLAUSE_CHAIN (c)) - switch (OMP_CLAUSE_CODE (c)) - { - case OMP_CLAUSE_ASYNC: + if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_ASYNC) + { oacc_async = true; break; - case OMP_CLAUSE_GANG: - oacc_gang_seen = true; - break; - default:; } for (pc = &clauses, c = clauses; c ; c = *pc) @@ -14251,13 +14245,6 @@ c_finish_omp_clauses (tree clauses, enum c_omp_region_type ort) goto check_dup_generic; case OMP_CLAUSE_REDUCTION: - if (oacc_gang_seen && oacc_get_fn_attrib (current_function_decl)) - { - error_at (OMP_CLAUSE_LOCATION (c), - "gang reduction on an orphan loop"); - remove = true; - break; - } if (reduction_seen == 0) reduction_seen = OMP_CLAUSE_REDUCTION_INSCAN (c) ? -1 : 1; else if (reduction_seen != -2 diff --git a/gcc/cp/ChangeLog.omp b/gcc/cp/ChangeLog.omp index f0668ab30639..7c1fde000759 100644 --- a/gcc/cp/ChangeLog.omp +++ b/gcc/cp/ChangeLog.omp @@ -1,3 +1,8 @@ +2022-10-27 Marcel Vollweiler + + * semantics.cc (finish_omp_clauses): Remove "gang reduction on an orphan + loop" checking. + 2022-10-04 Tobias Burnus Backport from mainline: diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index 81368b4faaad..d423f3d96590 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -6794,7 +6794,6 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort) bool mergeable_seen = false; bool implicit_moved = false; bool target_in_reduction_seen = false; - bool oacc_gang_seen = false; bitmap_obstack_initialize (NULL); bitmap_initialize (&generic_head, &bitmap_default_obstack); @@ -6812,15 +6811,10 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort) if (ort & C_ORT_ACC) for (c = clauses; c; c = OMP_CLAUSE_CHAIN (c)) - switch (OMP_CLAUSE_CODE (c)) + if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_ASYNC) { - case OMP_CLAUSE_ASYNC: oacc_async = true; break; - case OMP_CLAUSE_GANG: - oacc_gang_seen = true; - break; - default:; } for (pc = &clauses, c = clauses; c ; c = *pc) @@ -6837,13 +6831,6 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort) field_ok = ((ort & C_ORT_OMP_DECLARE_SIMD) == C_ORT_OMP); goto check_dup_generic; case OMP_CLAUSE_REDUCTION: - if (oacc_gang_seen && oacc_get_fn_attrib (current_function_decl)) - { - error_at (OMP_CLAUSE_LOCATION (c), - "gang reduction on an orphan loop"); - remove = true; - break; - } if (reduction_seen == 0) reduction_seen = OMP_CLAUSE_REDUCTION_INSCAN (c) ? -1 : 1; else if (reduction_seen != -2 diff --git a/gcc/fortran/ChangeLog.omp b/gcc/fortran/ChangeLog.omp index 189431df4ebe..7504a837265d 100644 --- a/gcc/fortran/ChangeLog.omp +++ b/gcc/fortran/ChangeLog.omp @@ -1,3 +1,9 @@ +2022-10-27 Marcel Vollweiler + + * openmp.cc (oacc_is_parallel): Remove. + (resolve_oacc_loop_blocks): Remove "gang reduction on an orphan loop" + checking. + 2022-10-19 Tobias Burnus * trans-array.cc (non_negative_strides_array_p): Fix handling diff --git a/gcc/fortran/openmp.cc b/gcc/fortran/openmp.cc index ab9db4e3a652..ed21f52bdb26 100644 --- a/gcc/fortran/openmp.cc +++ b/gcc/fortran/openmp.cc @@ -10248,11 +10248,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 gfc_statement omp_code_to_statement (gfc_code *code) @@ -10573,18 +10568,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_parallel (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 "