new register allocator and HARD_REGNO_CALL_PART_CLOBBERED
Daniel Berlin
dberlin@dberlin.org
Fri May 16 00:05:00 GMT 2003
On Thursday, May 15, 2003, at 07:30 PM, Alexandre Oliva wrote:
> On May 15, 2003, Michael Matz <matz@suse.de> wrote:
>
>> Yes, you have to define clobbering parts of hardregs. Possibly by
>> allowing clobbering of zero_extract's, or normal subregs.
>
> And, again, why is it better to pollute every single call pattern with
> a bunch of complex clobbers just because the register allocator
> doesn't want to deal with a macro named
> HARD_REGNO_CALL_PART_CLOBBERED, if at the end it will end up having to
> collect the information back from call patterns and behave similarly?
You keep using "pollute" like the info shouldn't be there. That's where
the info *belongs*.
The information on what registers are clobbered should be *explicit*,
not implicit.
One of the problems with doing GCC optimizations historically has been
implicit info and 80 different magic macros to try to determine that
info explicitly.
If one made the information explicit, so that we could just rely on the
list of clobbers in the call, one would *never* have to worry about
calling conventions or optimizations of that sort.
Why should *anything* have to look at 3 different macros and 2 arrays
(This is not an exaggeration) to determine something as trivial as what
registers are affected by a given call.
Do you just not realize this is the case as of now, or are you arguing
that this is the right way to do it?
More information about the Gcc
mailing list