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},
 };
 

Reply via email to