Hello I have committed the following trivial patch to emit FUNC_MAP or IND_FUNC_MAP in separate branches of an if statement. Kwok On 09/11/2023 12:24 pm, Thomas Schwinge wrote: > Similar to how you have it here: > >> --- a/gcc/config/nvptx/mkoffload.cc >> +++ b/gcc/config/nvptx/mkoffload.cc >> @@ -51,6 +51,7 @@ struct id_map >> }; >> >> static id_map *func_ids, **funcs_tail = &func_ids; >> +static id_map *ind_func_ids, **ind_funcs_tail = &ind_func_ids; >> static id_map *var_ids, **vars_tail = &var_ids; >> >> /* Files to unlink. */ >> @@ -302,6 +303,11 @@ process (FILE *in, FILE *out, uint32_t omp_requires) > | else if (startswith (input + i, "FUNC_MAP ")) > | { >> output_fn_ptr = true; >> record_id (input + i + 9, &funcs_tail); >> } >> + else if (startswith (input + i, "IND_FUNC_MAP ")) >> + { >> + output_fn_ptr = true; >> + record_id (input + i + 13, &ind_funcs_tail); >> + } >> else >> abort (); >> /* Skip to next line. */ > > ..., please also here: > >> --- a/gcc/config/nvptx/nvptx.cc >> +++ b/gcc/config/nvptx/nvptx.cc >> @@ -5919,7 +5919,11 @@ nvptx_record_offload_symbol (tree decl) >> /* OpenMP offloading does not set this attribute. */ >> tree dims = attr ? TREE_VALUE (attr) : NULL_TREE; >> >> - fprintf (asm_out_file, "//:FUNC_MAP \"%s\"", >> + fprintf (asm_out_file, "//:"); >> + if (lookup_attribute ("omp declare target indirect", >> + DECL_ATTRIBUTES (decl))) >> + fprintf (asm_out_file, "IND_"); >> + fprintf (asm_out_file, "FUNC_MAP \"%s\"", >> IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))); > > ... maintain separate 'if' branches for 'FUNC_MAP' vs. 'IND_FUNC_MAP', so > that we're able to easily locate those with 'grep', for example. >