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

Segher Boessenkool <segher at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |segher at gcc dot gnu.org

--- Comment #2 from Segher Boessenkool <segher at gcc dot gnu.org> ---
It already goes wrong at IRA:

(insn 77 79 71 3 (parallel [
            (set (reg:SF 33 1)
                (mem:SF (plus:SI (reg/f:SI 113 sfp)
                        (const_int 8 [0x8])) [1 MEM[base: _17, offset: 0B]+0 S4
A32]))
            (set (reg:SI 208 [ ivtmp.6 ])
                (plus:SI (reg/f:SI 113 sfp)
                    (const_int 8 [0x8])))
        ]) 77289.c:9 617 {*movsf_update1}
     (nil))

where 208 is assigned r31:

   19:r206 l0    29    1:r208 l0    31    2:r209 l0    30   18:r247 l0    75

but the pattern is

(define_insn "*movsf_update1"
  [(set (match_operand:SF 3 "gpc_reg_operand" "=f,f")
        (mem:SF (plus:SI (match_operand:SI 1 "gpc_reg_operand" "0,0")
                         (match_operand:SI 2 "reg_or_short_operand" "r,I"))))
   (set (match_operand:SI 0 "gpc_reg_operand" "=b,b")
        (plus:SI (match_dup 1) (match_dup 2)))]

so operand 1 is not the same as operand 0.

Reply via email to