https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108834
--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- So the module name is a string that is displayed when an ASAN error happens and I see a discrepancy in between GCC and Clang (with LTO): $ cat jhead.i int x; int *p; int main() { p = &x; *(p + 1) = 123; return 0; } $ clang jhead.i -fsanitize=address -flto && ./a.out ... 0x555555fc34e4 is located 28 bytes to the left of the global variable 'p' defined in 'jhead.i' (0x555555fc3500) of size 8 $ gcc jhead.i -fsanitize=address -flto && ./a.out ... 0x000000404104 is located 60 bytes before global variable 'p' defined in '/tmp/cci9oq4s.ltrans0.o' (0x404140) of size 8 $ gcc jhead.i -fsanitize=address && ./a.out ... 0x000000404104 is located 0 bytes after global variable 'x' defined in 'jhead.i' (0x404100) of size 4 So, yes, we should follow the DECL_CONTEXT.