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.

Reply via email to