[PATCH] Fix PR 51505

Paolo Bonzini bonzini@gnu.org
Mon Jan 30 07:38:00 GMT 2012


On 01/29/2012 04:09 PM, Eric Botcazou wrote:
>>> 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
>
> As well as:
>
> FAIL: gcc.c-torture/execute/stdarg-2.c execution,  -O2
> FAIL: gcc.c-torture/execute/stdarg-2.c execution,  -O3 -fomit-frame-pointer
> FAIL: gcc.c-torture/execute/stdarg-2.c execution,  -O3 -g
> FAIL: gcc.c-torture/execute/stdarg-2.c execution,  -Os
> FAIL: gcc.c-torture/execute/stdarg-2.c
> execution,  -O2 -flto -flto-partition=none
> FAIL: gcc.c-torture/execute/stdarg-2.c execution,  -O2 -flto
>
> for the exact same reason.

Does this help?

Paolo

-------------- next part --------------
A non-text attachment was scrubbed...
Name: df-problems.patch
Type: text/x-patch
Size: 733 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20120130/f8381d10/attachment.bin>


More information about the Gcc-patches mailing list