This is the mail archive of the
mailing list for the GCC project.
Re: PATCH: RFA reload.c patch
- From: Eric Christopher <echristo at redhat dot com>
- To: Ulrich Weigand <weigand at i1 dot informatik dot uni-erlangen dot de>
- Cc: wilson at specifixinc dot com, gcc-patches at gcc dot gnu dot org
- Date: Mon, 17 Nov 2003 16:40:36 -0800
- Subject: Re: PATCH: RFA reload.c patch
- References: <200311172339.AAA11328@faui1d.informatik.uni-erlangen.de>
> 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
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 Christopher <firstname.lastname@example.org>