This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: egcs-1.1 status
- To: law at cygnus dot com
- Subject: Re: egcs-1.1 status
- From: Michael Hayes <michaelh at ongaonga dot chch dot cri dot nz>
- Date: Sun, 23 Aug 1998 08:04:40 GMT
- Cc: Linus Torvalds <torvalds at transmeta dot com>, Andi Kleen <ak at muc dot de>, "H.J. Lu" <hjl at lucon dot org>, manfred at s-direktnet dot de, Manfred dot Hollstein at ks dot sel dot alcatel dot de, egcs at cygnus dot com
- References: <Pine.LNX.3.96.980822112054.3907C-100000@penguin.transmeta.com><6099.903831397@hurl.cygnus.com>
Jeffrey A Law writes:
> The problem is that reload can/will silently trash registers holding
> parameters while trying to satisfy reloads for later register loads.
> Note that reloads can be triggers in many non-obvious ways on the x86
> due to the way the machine description was written.
Am I correct in thinking that the x86 machine description relies
too heavily on the reload pass to fix things up and that it should
use tighter predicates and the extra condition to check for valid
operand combinations?
> > Jeff, you always seem to take compiler problems to be something really
> > negative. I would urge you and the other egcs developers to see this as
> > something _positive_ where you can actually look into the problem and try
> > to fix it, instead of throwing up your hands and saying "oh, gods, I can't
> > handle this, let's remove the feature".
> Please do not make this personal again. This is a purely technical
> issue. *I* do not have the time to rewrite reload. And as I mentioned
> I would love for someone to step up and do that. Until such time as
> reload is rewritten, using regparm is a horribly bad thing to do
> because it will eventually end up causing you problems.
I agree with Jeff that, sure the problem is solvable, but to fix it is
certainly non-trivial. A new reload pass is going to break many
things faster than it fixes things for a long time to come...
I've been slowly working my way through it and have been writing up
some notes on how it currently works. I'm sure other folks must have
done likewise. May I suggest that the first step is to improve the
documentation of the reload pass so as to remove some of the mystique.
The docs should say what it tries to do, what it does, and what it
should do.
I also imagine that reload probably needs more guidance from the
backends as to how to fix a given problem.