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: 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


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