[1/5] openmp: Add GOMP_MAP_SHAPE_DIM and grid-dim pointer marker prerequisites
Commit Message
Introduce the new GOMP_MAP_SHAPE_DIM map kind, the
OMP_CLAUSE_MAP_GRID_DIM_POINTER accessor, and their tree-pretty-print
support ahead of the front-end and lowering changes that use them.
gcc/ChangeLog:
* tree-pretty-print.cc (dump_omp_clause): Handle GOMP_MAP_SHAPE_DIM and
print [pointer]/[pointer set] annotations.
* tree.h (OMP_CLAUSE_MAP_GRID_DIM_POINTER): New.
include/ChangeLog:
* gomp-constants.h (enum gomp_map_kind): Add GOMP_MAP_SHAPE_DIM.
---
gcc/tree-pretty-print.cc | 9 +++++++++
gcc/tree.h | 7 +++++++
include/gomp-constants.h | 3 ++-
3 files changed, 18 insertions(+), 1 deletion(-)
@@ -1167,6 +1167,9 @@ dump_omp_clause (pretty_printer *pp, tree clause, int spc, dump_flags_t flags)
case GOMP_MAP_GRID_STRIDE:
pp_string (pp, "grid_stride");
break;
+ case GOMP_MAP_SHAPE_DIM:
+ pp_string (pp, "shape_dim");
+ break;
case GOMP_MAP_UNSET:
pp_string (pp, "unset");
break;
@@ -1273,6 +1276,12 @@ dump_omp_clause (pretty_printer *pp, tree clause, int spc, dump_flags_t flags)
pp_string (pp, " [runtime_implicit]");
if (OMP_CLAUSE_MAP_GIMPLE_ONLY (clause))
pp_string (pp, " [gimple only]");
+ if (OMP_CLAUSE_MAP_KIND (clause) == GOMP_MAP_TO_PSET
+ && !OMP_CLAUSE_SIZE (clause))
+ pp_string (pp, " [pointer set]");
+ if (OMP_CLAUSE_MAP_KIND (clause) == GOMP_MAP_GRID_DIM
+ && OMP_CLAUSE_MAP_GRID_DIM_POINTER (clause))
+ pp_string (pp, " [pointer]");
}
pp_right_paren (pp);
break;
@@ -1971,6 +1971,13 @@ class auto_suppress_location_wrappers
#define OMP_CLAUSE_MAP_POINTS_TO_READONLY(NODE) \
TREE_CONSTANT (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP))
+/* Nonzero on a GOMP_MAP_GRID_DIM clause if the dimension it describes
+ selects into a pointer (requiring a dereference to reach the next
+ dimension) rather than a regular array dimension. */
+#define OMP_CLAUSE_MAP_GRID_DIM_POINTER(NODE) \
+ TREE_THIS_VOLATILE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP))
+
+
/* Same as above, for use in OpenACC cache directives. */
#define OMP_CLAUSE__CACHE__READONLY(NODE) \
TREE_READONLY (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE__CACHE_))
@@ -252,7 +252,8 @@ enum gomp_map_kind
definition (only for Fortran at present). */
GOMP_MAP_MAPPING_GROUP = (GOMP_MAP_LAST | 11),
GOMP_MAP_GRID_DIM = (GOMP_MAP_LAST | 12),
- GOMP_MAP_GRID_STRIDE = (GOMP_MAP_LAST | 13)
+ GOMP_MAP_GRID_STRIDE = (GOMP_MAP_LAST | 13),
+ GOMP_MAP_SHAPE_DIM = (GOMP_MAP_LAST | 14)
};
#define GOMP_MAP_COPY_TO_P(X) \