https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95695
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- And it's not related to LTO, it comes from a pre-processor. So we somehow screw locations with -E and w/o -E option: $ g++ -g -O2 demo.C && readelf --wide --debug-dump=info a.out > 1 $ g++ -g -O2 demo.C --save-temps && readelf --wide --debug-dump=info a.out > 2 $ diff -u 1 2 | head --- 1 2020-06-16 10:59:52.263070583 +0200 +++ 2 2020-06-16 11:00:01.195019658 +0200 @@ -736,7 +736,7 @@ <541> DW_AT_name : (indirect string, offset: 0x8f1): size_t <545> DW_AT_decl_file : 8 <546> DW_AT_decl_line : 2355 - <548> DW_AT_decl_column : 26 + <548> DW_AT_decl_column : 29 <549> DW_AT_type : <0xf19> <2><54d>: Abbrev Number: 23 (DW_TAG_namespace)