https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85571
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- So even w/o the -f[no-]checking flags I see then when comparing stage2 and stage3 cc1: > readelf -S /abuild/rguenther/obj/prev-gcc/cc1 | grep -C 1 .text 0000000000000008 0000000000000008 AX 0 0 8 [14] .text PROGBITS 000000000057be60 0017be60 0000000000feb92a 0000000000000000 AX 0 0 16 > readelf -S /abuild/rguenther/obj/gcc/cc1 | grep -C 1 .text 0000000000000008 0000000000000008 AX 0 0 8 [14] .text PROGBITS 000000000057be60 0017be60 0000000000feb5ba 0000000000000000 AX 0 0 16 assembly shows (after stripping reloc offset differences - bah, objdump should have a way to substitute zero for all of those): @@ -11420,24 +11420,6 @@ xx: xx xx xx mov %rxx,%rdi xx: xx xx xx xx xx mov $0xb,%esi xx: xx xx xx xx xx xxllq xx <_Zxxtrxx_contains_struct_chxxk_xxilxx PK9trxx_noxxtrxx_noxx_structure_enumPKciS4_> - xx: xx xx xx mov %r8,%rdi - xx: xx xx xx xx xx xxllq xx <_ZLxxi_tag_bindingP9trxx_noxx.part.xx > - xx: xx xx xx mov %rxx,%rdi - xx: xx xx xx xx xx xxllq xx <_ZLxxi_symbol_bindingP9trxx_noxx.part .xx> - xx: xx xx xx mov %r8,%rdi - xx: xx xx xx xx xx xxllq xx <_ZLxxi_tag_bindingP9trxx_noxx.part.xx > - xx: xx xx xx mov %rxx,%rdi - xx: xx xx xx xx xx xxllq xx <_ZLxxi_symbol_bindingP9trxx_noxx.part .xx> - xx: xx xx xx xx xx mov $0xxx,%xxx - xx: xx xx xx xx xx mov $0xxx,%esi - xx: xx xx xx xx xx mov $0xxx,%xxi - xx: xx xx xx xx xx xxllq xx <_Zxxncy_xxortPKciS0_> - xx: xx xx xx xx xx xx mov $0xxx,%rxx - xx: xx xx xx xx xx mov $0xxx,%xxx - xx: xx xx xx xx xx mov $0xxx,%xxx - xx: xx xx xx mov %rxx,%rdi - xx: xx xx xx xx xx mov $0x1,%esi - xx: xx xx xx xx xx xxllq xx <_Zxxtrxx_contains_struct_chxxk_xxilxxPK9trxx_noxxtrxx_noxx_structure_enumPKciS4_> xx: xx xx xx xx xx xx mov $0xxx,%rxx xx: xx xx xx xx xx mov $0xxx,%xxx xx: xx xx xx xx xx mov $0xxx,%xxx @@ -11480,6 +11462,20 @@ xx: xx xx xx xx xx mov $0xxx,%esi xx: xx xx xx mov %rxx,%rdi xx: xx xx xx xx xx xxllq xx <_Zxxtrxx_chxxk_xxilxxPK9trxx_noxxPKciS3_z> + xx: xx xx xx mov %r8,%rdi + xx: xx xx xx xx xx xxllq xx <_ZLxxi_tag_bindingP9trxx_noxx.part.xx> + xx: xx xx xx mov %rxx,%rdi + xx: xx xx xx xx xx xxllq xx <_ZLxxi_symbol_bindingP9trxx_noxx.part.xx> + xx: xx xx xx xx xx mov $0xxx,%xxx + xx: xx xx xx xx xx mov $0xxx,%esi + xx: xx xx xx xx xx mov $0xxx,%xxi + xx: xx xx xx xx xx xxllq xx <_Zxxncy_xxortPKciS0_> + xx: xx xx xx xx xx xx mov $0xxx,%rxx + xx: xx xx xx xx xx mov $0xxx,%xxx + xx: xx xx xx xx xx mov $0xxx,%xxx + xx: xx xx xx mov %rxx,%rdi + xx: xx xx xx xx xx mov $0x1,%esi + xx: xx xx xx xx xx xxllq xx <_Zxxtrxx_contains_struct_chxxk_xxilxxPK9trxx_noxxtrxx_noxx_structure_enumPKciS4_> xx: xx xx xx xx xx xx mov $0xxx,%rxx xx: xx xx xx xx xx mov $0xxx,%xxx xx: xx xx xx xx xx mov $0xxx,%xxx ... xx <_ZLxx_parser_postfix_expressionPxx_parser.cold.xx>: - xx: xx xx xx xx xx xxllq xx <_ZN3vxxIxxva_hxxp6vl_ptrExxquick_pushERKb.isra.xx.part.xx> + xx: xx xx xx xx xx xxllq xx <_ZN3vxxIxxva_hxxp6vl_ptrEixEj.isra.xx.part.xx> xx: xx xx xx xx xx xx mov $0xxx,%rxx so different BB re-ordering / partitioning? For example in the case of gengtype from stage2/stage3 .text has the same size but .debug_info size differs by one byte. But gentype code differs as well: @@ -2884,6 +2884,7 @@ xx: xx xx xx xx xx xxllq xx <_ZLxxpxxk_state_tokeni> xx: xx xx xx xx xx mov $0x1,%xxi xx: xx xx xx mov %rax,%rxx + xx: xx xx xx xx mov %rax,(%rsp) xx: xx xx xx xx xx xxllq xx <_ZLxxpxxk_state_tokeni> xx: xx xx xx xx xx mov $0x2,%xxi xx: xx xx xx mov %rax,%rbp ...