https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115559

--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> ---
For C, it is actually handled in the FE for

      tree at1 = lookup_attribute ("omp declare target", DECL_ATTRIBUTES (t));
      tree at2 = lookup_attribute ("omp declare target link",
                                   DECL_ATTRIBUTES (t));
      only_device_type_or_indirect = false;
      if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINK)
        {   
          id = get_identifier ("omp declare target link");
          std::swap (at1, at2);
        }
...
      if (!at1)
        {
          DECL_ATTRIBUTES (t) = tree_cons (id, NULL_TREE, DECL_ATTRIBUTES (t));
          if (TREE_CODE (t) != FUNCTION_DECL && !is_global_var (t))
            continue;

          symtab_node *node = symtab_node::get (t);
          if (node != NULL)
            {
              node->offloadable = 1;
              if (ENABLE_OFFLOADING)
                {
                  g->have_offload = true;
                  if (is_a <varpool_node *> (node))
                    vec_safe_push (offload_vars, t);
                }
            }

Reply via email to