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.