Just that it doesn't get forgotten, the attached patch needs to be applied on top.
It handles 'tile'/'unroll' directive names in the 'contains'/'absent' clauses of the 'assume'/'assumes' directives. Currently, we don't do anything with it after parsing; hence, no further changes are required. (We could add a testcsase, if someone thinks that it is necessary.) Tobias On 01.10.23 22:10, Sandra Loosemore wrote:
From: Frederik Harwath <frede...@codesourcery.com> gcc/fortran/ChangeLog:
...
* openmp.cc (gfc_free_omp_clauses): Free tile_sizes field. (match_tile_sizes): New. (enum omp_mask2): Add OMP_CLAUSE_UNROLL_FULL, OMP_CLAUSE_UNROLL_NONE, OMP_CLAUSE_UNROLL_PARTIAL, and OMP_CLAUSE_TILE. (gfc_match_omp_clauses): Handle OMP_CLAUSE_UNROLL_FULL and OMP_CLAUSE_UNROLL_PARTIAL syntax. (OMP_UNROLL_CLAUSES): Define. (OMP_TILE_CLAUSES): Define. (gfc_match_omp_tile): New. (gfc_match_omp_unroll): New. (find_nested_loop_in_chain): Handle loop transforms. (find_nested_loop_or_transform_in_chain): New. (find_nested_loop_or_transform_in_block): New. (diagnose_intervening_code_errors_1): Handle loop transforms. (restructure_intervening_code): Handle loop transforms. (is_outer_iteration_variable): Adjust to avoid fencepost error. (check_nested_loop_in_chain): Handle loop transforms. (expr_uses_intervening_var): Add assertion. (is_intervening_var): Add assertion. (expr_is_invariant): Adjust to avoid fencepost error. (omp_unroll_removes_loop_nest): New. (resolve_nested_loop_transforms): New. (resolve_omp_unroll): New. (resolve_nested_loops): New, split from... (resolve_omp_do) ...here. (resolve_omp_tile): New. (omp_code_to_statement): Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL. (resolve_oacc_nested_loops): Adjust assertion. (gfc_resolve_omp_directive): Handle EXEC_OMP_TILE and EXEC_OMP_UNROLL.
... ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
diff --git a/gcc/fortran/openmp.cc b/gcc/fortran/openmp.cc index dc0c8013c3d..5570b49b2b5 100644 --- a/gcc/fortran/openmp.cc +++ b/gcc/fortran/openmp.cc @@ -105,8 +105,8 @@ static const struct gfc_omp_directive gfc_omp_directives[] = { {"task", GFC_OMP_DIR_EXECUTABLE, ST_OMP_TASK}, {"teams", GFC_OMP_DIR_EXECUTABLE, ST_OMP_TEAMS}, {"threadprivate", GFC_OMP_DIR_DECLARATIVE, ST_OMP_THREADPRIVATE}, - /* {"tile", GFC_OMP_DIR_EXECUTABLE, ST_OMP_TILE}, */ - /* {"unroll", GFC_OMP_DIR_EXECUTABLE, ST_OMP_UNROLL}, */ + {"tile", GFC_OMP_DIR_EXECUTABLE, ST_OMP_TILE}, + {"unroll", GFC_OMP_DIR_EXECUTABLE, ST_OMP_UNROLL}, {"workshare", GFC_OMP_DIR_EXECUTABLE, ST_OMP_WORKSHARE}, };