https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111601
--- Comment #17 from Jakub Jelinek <jakub at gcc dot gnu.org> --- And under a debugger I can see exactly that happening. With the bad version of splice_viable on the 16th call of splice_viable, I see the code path in which r10 in the last hunk's spot where the addi r10,r10,96 from the second hunk was previously removed and the 0x0000000010424860 store changed into std r11,96(r10) from std r11,0(r10) eventually reaches 0x0000000010424724 store which consumed previously the store of r10 with 96 added to it but now just 0: (gdb) disas 0x0000000010424860,0x0000000010424878 Dump of assembler code from 0x10424860 to 0x10424878: 0x0000000010424860 <_ZL13splice_viableP11z_candidatebPb+864>: std r11,96(r10) 0x0000000010424864 <_ZL13splice_viableP11z_candidatebPb+868>: stb r7,0(r5) 0x0000000010424868 <_ZL13splice_viableP11z_candidatebPb+872>: ori r2,r2,0 0x000000001042486c <_ZL13splice_viableP11z_candidatebPb+876>: ld r9,0(r8) 0x0000000010424870 <_ZL13splice_viableP11z_candidatebPb+880>: cmpdi r9,0 0x0000000010424874 <_ZL13splice_viableP11z_candidatebPb+884>: bne 0x1042475c <_ZL13splice_viableP11z_candidatebPb+604> End of assembler dump. (gdb) disas 0x1042475c,0x0000000010424770 Dump of assembler code from 0x1042475c to 0x10424770: 0x000000001042475c <_ZL13splice_viableP11z_candidatebPb+604>: lwz r7,104(r9) 0x0000000010424760 <_ZL13splice_viableP11z_candidatebPb+608>: li r11,1 0x0000000010424764 <_ZL13splice_viableP11z_candidatebPb+612>: li r29,1 0x0000000010424768 <_ZL13splice_viableP11z_candidatebPb+616>: cmpwi r7,1 0x000000001042476c <_ZL13splice_viableP11z_candidatebPb+620>: b 0x104246fc <_ZL13splice_viableP11z_candidatebPb+508> End of assembler dump. (gdb) disas 0x104246fc,0x10424700 Dump of assembler code from 0x104246fc to 0x10424700: 0x00000000104246fc <_ZL13splice_viableP11z_candidatebPb+508>: beq 0x10424724 <_ZL13splice_viableP11z_candidatebPb+548> End of assembler dump. (gdb) disas 0x10424724,0x10424728 Dump of assembler code from 0x10424724 to 0x10424728: => 0x0000000010424724 <_ZL13splice_viableP11z_candidatebPb+548>: std r9,0(r10) End of assembler dump. In the assembly, this corresponds to first jumping on non-equal to .L104 label, then to .L54 label, and then immediately on non-equal to .L48 label.