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

--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> ---
omp-offload.c's omp_discover_declare_target_tgt_fn_r sees the

<function_decl 0x7ffff7647c00 __ct_comp
    full-name "S<0>::S()"

It does not call
 ((vec<tree> *) data)->safe_push (*tp);
to add it to the work list. (→ follow up issue for "V"?)

However, it sets the attribute (+ updates the node); in
omp_discover_declare_target_tgt_fn_r:

(gdb) p *tp
$27 = (tree) 0x7ffff7648e00
(gdb) p debug_tree((*tp)->decl_common.attributes)
 <tree_list 0x7ffff765b1e0
    purpose <identifier_node 0x7ffff7653400 omp declare target
        normal local bindings <(nil)>>>

But later in dump_function_to_file:

(gdb) p fndecl
$30 = (tree) 0x7ffff7648f00
(gdb) p debug_tree(fndecl->decl_common.attributes)

$31 = void

Thus, there is now a different tree – with DECL_ATTRIBUTES stripped.

Reply via email to