This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: RFA reload.c patch


> This breaks bootstrap on s390.
> 

Lovely. Another of those machines that are hard to get access to.

> First of all, I guess this:
> 
> -           else if (CONSTANT_P (XEXP (x, 0))
> +           else if ((CONSTANT_P (x)
> +                     && LEGITIMATE_CONSTANT_P (x)
> +                     && PREFERRED_RELOAD_CLASS (x, class) != NO_REGS)
> 
> should be using XEXP (x, 0) instead of x.

*sigh* yeah. you're right. i'm checking that change in as obvious.
> 
> But even with this fixed, s390 doesn't work.  What happens is that
> reload goes into a endless loop, because now some stack slot addresses 
> aren't even accepted as reg_equiv_address; to fix this, reload calls 
> alter_reg, which assigns another stack slot, whose address still isn't 
> accepted etc. until memory runs out.
> 

Which addresses? I need something to work on here. I took a look around
the s390 port, but I didn't see anything that tripped my "hey this might
be causing the problem" button. Do you have a testcase that I can see
via a cross compiler?

> In fact, I do not understand the reason for this change, seeing as
> reg_equiv_address is specifically intended to hold invalid addresses,
> as long as they are of the form REG + CONST; see the comment

See:

http://gcc.gnu.org/ml/gcc-patches/2003-11/msg00870.html

There's more in that thread.

I think that comment is wrong - or at least needs some work because of
later code in reload.

-eric

-- 
Eric Christopher <echristo@redhat.com>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]