[PING^3] Fix reloading of paradoxical subregs into even-only registers

H.J. Lu hjl.tools@gmail.com
Tue Aug 19 17:21:00 GMT 2008


On Tue, Aug 19, 2008 at 9:25 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Tue, Aug 19, 2008 at 8:58 AM, Andreas Schwab <schwab@suse.de> wrote:
>> Michael Matz <matz@suse.de> writes:
>>
>>> Hi,
>>>
>>> On Tue, 19 Aug 2008, Michael Matz wrote:
>>>
>>>> Hi H.J.,
>>>> On Mon, 18 Aug 2008, H.J. Lu wrote:
>>>>
>>>> > Your patch breaks Linux/ia64:
>>>> >
>>>> > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37155
>>>>
>>>> from the bugreport it's obvious that the ia64 port really wants to access
>>>> reg 328 (sfp) in SImode.  But that mode currently is not accepted by
>>>> HARD_REGNO_MODE_OK.  I can't see a reason why SImode is allowed for
>>>> GR_REGNO_P, but not for GENERAL_REGNO_P (the only difference being exactly
>>>> the register in question, FRAME_POINTER_REGNUM).  OTOH I don't know the
>>>> ia64 port very well.  This patch fixes the testcase.  H.J. can you
>>>> regstrap this?
>>>
>>> Hmm, hmm, I should read mailing lists not just personal mail before
>>> starting to work.  Sorry Andreas; but at least two independend people came
>>> to the same conclusion ;)
>>
>> I'm not yet sure whether it's the right fix.  There some regressions in
>> the gcc testsuite, but they may be related to the other changes since
>> yesterday.
>>
>
> The main regressions I saw are
>
> +FAIL: gcc.c-torture/compile/pr19357.c  -O1  (internal compiler error)
> +FAIL: gcc.c-torture/compile/pr19357.c  -O1  (test for excess errors)
> +FAIL: gcc.c-torture/compile/pr19357.c  -O2  (internal compiler error)
> +FAIL: gcc.c-torture/compile/pr19357.c  -O2  (test for excess errors)
> +FAIL: gcc.c-torture/compile/pr19357.c  -O3 -fomit-frame-pointer
> (internal compiler error)
> +FAIL: gcc.c-torture/compile/pr19357.c  -O3 -fomit-frame-pointer
> (test for excess errors)
> +FAIL: gcc.c-torture/compile/pr19357.c  -O3 -g  (internal compiler error)
> +FAIL: gcc.c-torture/compile/pr19357.c  -O3 -g  (test for excess errors)
> +FAIL: gcc.c-torture/compile/pr19357.c  -Os  (internal compiler error)
> +FAIL: gcc.c-torture/compile/pr19357.c  -Os  (test for excess errors)
> +FAIL: gcc.dg/compat/scalar-by-value-3 c_compat_x_tst.o compile,
> (internal compiler error)
> +FAIL: gcc.dg/compat/scalar-by-value-6 c_compat_x_tst.o compile,
> (internal compiler error)
> +FAIL: gcc.dg/compat/scalar-return-3 c_compat_x_tst.o compile,
> (internal compiler error)
> +FAIL: gcc.dg/compat/struct-by-value-18 c_compat_x_tst.o compile,
> (internal compiler error)
>
> I don't think it is the right fix.
>

Revert revision 139207 fixes those regressions.


-- 
H.J.



More information about the Gcc-patches mailing list