https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104054
--- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> --- Without debug instructions, the compiler is able to rename insns to: 65: di:DI=si:DI 66: dx:DI=r11:DI 74: cx:QI=0x1 REG_EQUAL 0x1 41: L41: 42: NOTE_INSN_BASIC_BLOCK 6 43: NOTE_INSN_DELETED but with debug instructions, the same sequence reads as: 50: debug b => si:TI 51: debug begin stmt marker 52: debug begin stmt marker 79: ax:DI=si:DI 80: dx:DI=di:DI 88: cx:QI=0x1 REG_EQUAL 0x1 53: L53: 54: NOTE_INSN_BASIC_BLOCK 6 55: debug b => si:TI 56: debug begin stmt marker 57: NOTE_INSN_DELETED In the later case, the compiler is not able to rename ax:DI register in (insn 79) to di:DI, because debug insn 55 is still accessing di:DI in the register si:TI - that is really formed from (si:DI,di:DI) register pair.