https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128437

--- Comment #5 from Uroš Bizjak <ubizjak at gmail dot com> ---
Before bbro pass we have:

_.349r.rtl_dce:

  102: ax:SI=[ax:DI+const(unspec[`current']DTPOFF)]
  103: flags:CCZ=cmp(ax:SI,0)
      REG_DEAD ax:SI
   14: pc={(flags:CCZ==0)?L94:pc}
      REG_DEAD flags:CCZ
      REG_BR_PROB 536870913
   15: NOTE_INSN_BASIC_BLOCK 4
   94: L94:
   22: NOTE_INSN_BASIC_BLOCK 6
   23: flags:CCZ=cmp(bx:DI,0)
      REG_DEAD bx:DI
   24: pc={(flags:CCZ==0)?L46:pc}
      REG_DEAD flags:CCZ
      REG_BR_PROB 9

and bbro pass inserts (insn 23) just after (insn 103):

_.350r.bbro:

  102: ax:SI=[ax:DI+const(unspec[`current']DTPOFF)]
  103: flags:CCZ=cmp(ax:SI,0)
      REG_DEAD ax:SI
   23: flags:CCZ=cmp(bx:DI,0)
      REG_DEAD bx:DI
   24: pc={(flags:CCZ==0)?L46:pc}
      REG_DEAD flags:CCZ
      REG_BR_PROB 9

This kills flags reg, produced by (insn 103) and things go downhill from here.

Reply via email to