This is the mail archive of the gcc@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: What to do with new-ra for GCC 4.0


On Tue, 2005-01-04 at 15:59 +0100, Bernd Schmidt wrote:
> >>and its core algorithm is comprehensible enough 
> > 
> > I disagree ;-)
> 
> Take away all the crufty layers of superfluous bits, such as the 
> inheritance code, and you'll end up with a core that is actually quite 
> small and elegant.
>
> If new-ra has failed, maybe I should resurrect my old attempt at 
> rewriting the uglier parts of reload.  A couple of years ago I had 
> patches which tried to address two problems I see with the current code:
> 
>   * reload insn ordering is done with a bizarre set of reload_types
>   * pieces of reload inheritance are scattered everywhere, which
>     doesn't help make it maintainable.
> 
> What I did was to detect dependencies between reload insns and create an 
> ordering with a mini-scheduler.  All information about reloads and 
> reload insns is kept around while processing the insns, and inheritance 
> is performed as an additional pass over this information.  Inheritance 
> becomes a localized pass instead of bits of code strewn across multiple 
> files, and since it has more global information to work with, it can 
> make better choices (in theory, anyway).
> 
> The code isn't in a usable state right now, and since it has the 
> downside of increased compile times and memory usage, I'm not sure 
> anymore it's a feasible approach.  If anyone else is interested, maybe 
> I'll resurrect it and put it on a branch.
If reload is going to hang around (and I suspect it will), I'd love to
see those two areas improved.  I can't express how difficult I find
it to analyze the reload inheritance code.  Reload ordering is only
mildly easier to understand.

Jeff


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