https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116058
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
trying to combine definition of r8 in:
```
2004: r8:SI=r2:SI
into:
725: {[r4:SI]=[r5:SI];use r8:SI;use 0;use r6:SI;clobber pr:SI;clobber
t:SI;clobber r4:SI;clobber r5:SI;clobber r6:SI;clobber r0:SI;clobber
r1:SI;clobber r2:SI;clobber r3:SI;}
register 4 is both clobbered and used as an input:
(parallel [
(set (mem:BLK (reg:SI 4 r4) [0 A8])
(mem:BLK (reg:SI 5 r5) [0 A8]))
(use (reg:SI 2 r2))
(use (const_int 0 [0]))
(use (reg:SI 6 r6))
(clobber (reg:SI 146 pr))
(clobber (reg:SI 147 t))
(clobber (reg:SI 4 r4))
(clobber (reg:SI 5 r5))
(clobber (reg:SI 6 r6))
(clobber (reg:SI 0 r0))
(clobber (reg:SI 1 r1))
(clobber (reg:SI 2 r2))
(clobber (reg:SI 3 r3))
])
```
The instruction before hand:
(insn 725 2004 726 68 (parallel [
(set (mem:BLK (reg:SI 4 r4) [0 A8])
(mem:BLK (reg:SI 5 r5) [0 A8]))
(use (reg:SI 8 r8))
(use (const_int 0 [0]))
(use (reg:SI 6 r6))
(clobber (reg:SI 146 pr))
(clobber (reg:SI 147 t))
(clobber (reg:SI 4 r4))
(clobber (reg:SI 5 r5))
(clobber (reg:SI 6 r6))
(clobber (reg:SI 0 r0))
(clobber (reg:SI 1 r1))
(clobber (reg:SI 2 r2))
(clobber (reg:SI 3 r3))
]) "t.ii":977:9 322 {block_lump_real_i4}
(nil))
The pattern:
(define_insn "block_lump_real_i4"
[(parallel [(set (mem:BLK (reg:SI R4_REG))
(mem:BLK (reg:SI R5_REG)))
(use (match_operand:SI 0 "arith_reg_operand" "r,r"))
(use (match_operand 1 "" "Z,Ccl"))
(use (reg:SI R6_REG))
(clobber (reg:SI PR_REG))
(clobber (reg:SI T_REG))
(clobber (reg:SI R4_REG))
(clobber (reg:SI R5_REG))
(clobber (reg:SI R6_REG))
(clobber (reg:SI R0_REG))
(clobber (reg:SI R1_REG))
(clobber (reg:SI R2_REG))
(clobber (reg:SI R3_REG))])]
It is already using register 4 in the clobber and in the address before hand
...