https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127559
--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> ---
The map clauses are generated in cp/semantics.cc' finish_omp_target_clauses
function:
for (hash_set<tree>::iterator i = data.lambda_objects_accessed.begin ();
i != data.lambda_objects_accessed.end (); ++i)
{
tree lc = build_omp_clause (loc, OMP_CLAUSE_MAP);
OMP_CLAUSE_SET_MAP_KIND (lc, GOMP_MAP_TO);
OMP_CLAUSE_DECL (lc) = lobj;
...
for (tree fld = TYPE_FIELDS (lt); fld; fld = DECL_CHAIN (fld))
{
if (TREE_CODE (TREE_TYPE (fld)) == POINTER_TYPE)
{
...
OMP_CLAUSE_SET_MAP_KIND (c, GOMP_MAP_ALLOC);
OMP_CLAUSE_DECL (c)
= build_indirect_ref (loc, exp, RO_UNARY_STAR);
...
OMP_CLAUSE_SET_MAP_KIND
(c, GOMP_MAP_ATTACH_ZERO_LENGTH_ARRAY_SECTION);
OMP_CLAUSE_DECL (c) = exp;
Printing (%qE) the respective OMP_CLAUSE_DECL gives:
‘(ker.lrn_bwd_kernel(int)::<lambda()>::<get_omega capture> = get_omega)’
‘*(ker.lrn_bwd_kernel(int)::<lambda()>::<get_omega capture> =
get_omega).lrn_bwd_kernel(int)::<lambda()>::<src_ capture>’
‘(ker.lrn_bwd_kernel(int)::<lambda()>::<get_omega capture> =
get_omega).lrn_bwd_kernel(int)::<lambda()>::<src_ capture>’