This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: reload patch review
- From: Bernd Schmidt <bernds at redhat dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: <jh at suse dot cz>, <gcc-patches at gcc dot gnu dot org>
- Date: Sun, 30 Dec 2001 23:50:36 +0000 (GMT)
- Subject: Re: reload patch review
On Thu, 20 Dec 2001, Richard Henderson wrote:
> Would you mind taking a look at
>
> http://gcc.gnu.org/ml/gcc-patches/2001-07/msg01998.html
This is already installed (according to the ChangeLog entry on 2001-08-25).
It did look vaguely familiar :)
> http://gcc.gnu.org/ml/gcc-patches/2001-08/msg00920.html
Since I can't convince myself that the code will DTRT for addresses (I
have some doubts about the order the reloads will be emitted in), the
general idea seems OK (disabling stuff is certainly the safest way to
fix bugs in this broken mess).
It does look like it's patching the wrong place though; I think you want
the test a few lines up:
if (i != j && rld[j].reg_rtx != 0
&& rtx_equal_p (rld[i].reg_rtx, rld[j].reg_rtx)
&& (! conflicting_input
|| rld[j].when_needed == RELOAD_FOR_INPUT_ADDRESS
|| rld[j].when_needed == RELOAD_FOR_OTHER_ADDRESS))
It looks like you want to replace the last two lines by code that
actually _prevents_ this combination from occurring for address reloads.
You also may want to disable combinations of address reloads in the
outermost loop (for rld[i]).
I'd like to see some before/after code size comparisons, preferrably on
more than one target (sh and x86, maybe).
Bernd