https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79061
--- Comment #8 from Maxim Ostapenko <m.ostapenko at samsung dot com> --- (In reply to Jakub Jelinek from comment #7) > Comment on attachment 40514 [details] > Untested fix 1. > > But DECL_SOURCE_FILE is not the main input file of the TU that contains it, > if e.g. a variable is defined in a header. > Can't you find the corresponding TRANSLATION_UNIT_DECL (see e.g. how > dwarf2out.c is_cxx now looks for that) and get the name from that? > And, the multiple ?s look just weird, (in_lto_p && something ? something : > main_input_filename); would be nicer. Yes, but with following helper (extracted from is_cxx) I get DECL_NAME (translation_unit_decl) == NULL: static const_tree get_translation_unit_decl (tree decl) { const_tree context = decl; while (context && TREE_CODE (context) != TRANSLATION_UNIT_DECL) { if (TREE_CODE (context) == BLOCK) context = BLOCK_SUPERCONTEXT (context); else context = get_containing_scope (context); } return context; } and from gdb: Breakpoint 1, asan_add_global (decl=0x7ffff7ff7f30, type=0x7ffff658df18, v=0x7ffff659d2d0) at /home/max/workspace/downloads/gcc/gcc/asan.c:2410 2410 const_tree translation_unit_decl = get_translation_unit_decl (decl); (gdb) n 2411 if (translation_unit_decl) (gdb) call debug_tree(translation_unit_decl) <translation_unit_decl 0x7ffff63e4168 D.1 VOID file (null) line 0 col 0 align 1> (gdb)