https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70422
Jim Wilson <wilson at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wilson at gcc dot gnu.org --- Comment #3 from Jim Wilson <wilson at gcc dot gnu.org> --- I can reproduce on armhf and aarch64, but not on x86_64. stage2 is built with -g -gtoggle. stage3 is built with -g. Debug info is stripped before the compare, so in theory that shouldn't matter. I am looking at statistics.c, as it is a conveniently small file. On aarch64, in stage2 statistics.s, I see .section .rodata._ZN10hash_tableI20stats_counter_hasher11xcallocatorE6expandEv.str1.8,"aMS",@progbits,1 .align 3 .LC17: .string "alloc_entries" In stage3 statistics.s I see .section .rodata.str1.8,"aMS",@progbits,1 .align 3 ... .LC17: .string "alloc_entries" .zero 2 ... .section .debug_str,"MS",@progbits,1 ... .LASF1861: .string "alloc_entries" So something about debug info caused the string to move from the function specific rodata section to the general rodata section, and that causes the comparison failure. On x86_64, the string is in the function specific rodata section in both cases, so no comparison failure.