> As discussed in Bugzilla, this is the patch implementing Paolo's suggestion
> of killing REG_EQUAL/REG_EQUIV notes from df_kill_notes.  The code assumes
> there is at most one such note per insn.

That's wrong though and wreaks havoc during reload, e.g.:

(insn 169 60 62 4 (set (reg:TF 158)
        (mem/c:TF (plus:SI (reg/f:SI 101 %sfp)
                (const_int -16 [0xfffffffffffffff0])) [3 S16 A64])) 
960513-1.c:13 97 {*movtf_insn_sp32}
     (expr_list:REG_EQUIV (mem/c:TF (plus:SI (reg/f:SI 101 %sfp)
                (const_int -16 [0xfffffffffffffff0])) [3 S16 A64])
        (expr_list:REG_EQUAL (mult:TF (reg/v:TF 110 [ d ])
                (reg:TF 154))
            (nil))))

because the REG_EQUIV note disappears behind reload's back and it isn't 
prepared for that.  This is the cause of the following regression on SPARC:

FAIL: gcc.c-torture/execute/960513-1.c execution,  -Os

-- 
Eric Botcazou

Reply via email to