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

--- Comment #389 from Richard Sandiford <rsandifo at gcc dot gnu.org> ---
(In reply to Oleg Endo from comment #304)
> (define_insn "block_lump_real"
>   [(set (mem:BLK (match_operand:SI 2 "sfunc_arg0_reg" "=r,r"))
>          (mem:BLK (match_operand:SI 3 "sfunc_arg1_reg" "=r,r")))
>    (use (match_operand:SI 0 "arith_reg_operand" "r,r"))
>    (use (match_operand 1 "" "Z,Ccl"))
>    (use (match_operand:SI 4 "sfunc_arg2_reg" "=r,r"))
> 
>    (use (reg:SI R4_REG))        <<<<<<
>    (use (reg:SI R5_REG))        <<<<<<
>    (use (reg:SI R6_REG))        <<<<<<
> 
>    (clobber (match_dup 2))
>    (clobber (match_dup 3))
>    (clobber (match_dup 4))
>    (clobber (reg:SI PR_REG))

Sorry for the late reply, but I think this is somewhat dangerous, in that the
constraints (r) are more general than the predicates (sfunc_arg0_reg etc.).

Do we know why the pattern in trunk doesn't work?  It looks correct to me, and
I think it should work with LRA too.  Did Andrew P's patch (PR116058) not help?

Reply via email to