openacc: GOMP_MAP_ATTACH handling in find_group_last

Arrange for GOMP_MAP_ATTACH to be grouped together with a preceding
GOMP_MAP_TO_PSET or other "to" data movement clause, except in cases
where an explicit "attach" clause is used.

2020-07-09  Julian Brown  <julian@codesourcery.com>

include/
	* gomp-constants.h (gomp_map_kind): Update comment for GOMP_MAP_TO_PSET.

libgomp/
	* oacc-mem.c (find_group_last): Group data-movement clauses
	(GOMP_MAP_TO_PSET, GOMP_MAP_TO, etc.) together with a subsequent
	GOMP_MAP_ATTACH.  Allow standalone GOMP_MAP_ATTACH also.
This commit is contained in:
Julian Brown
2020-06-11 06:43:59 -07:00
parent ac8996edb1
commit 8d2e5026d2
2 changed files with 23 additions and 4 deletions

View File

@@ -65,7 +65,10 @@ enum gomp_map_kind
/* Also internal, behaves like GOMP_MAP_TO, but additionally any
GOMP_MAP_POINTER records consecutive after it which have addresses
falling into that range will not be ignored if GOMP_MAP_TO_PSET wasn't
mapped already. */
mapped already.
For OpenACC attach operations (e.g. copyin of struct members),
GOMP_MAP_TO_PSET is followed by a single GOMP_MAP_ATTACH mapping
instead. */
GOMP_MAP_TO_PSET = (GOMP_MAP_FLAG_SPECIAL_0 | 1),
/* Must already be present. */
GOMP_MAP_FORCE_PRESENT = (GOMP_MAP_FLAG_SPECIAL_0 | 2),