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>’

Reply via email to