This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Dec 30 patch causes large performance regression on ia64
- To: Bernd Schmidt <bernds at cambridge dot redhat dot com>
- Subject: Re: Dec 30 patch causes large performance regression on ia64
- From: Richard Henderson <rth at redhat dot com>
- Date: Sat, 17 Mar 2001 13:54:39 -0800
- Cc: gcc-bugs at gcc dot gnu dot org
- References: <10102091648.AA07269@vlsi1.ultra.nyu.edu> <Pine.LNX.4.30.0103011433330.1311-100000@host140.cambridge.redhat.com>
On Thu, Mar 01, 2001 at 02:41:30PM +0000, Bernd Schmidt wrote:
> The problem: if conversion doesn't deal with calls very well;
> they have to end the block or we can't optimize.
[...]
> Ideas?
(A) Teach reload about cond_exec, so that the spill/fill instructions
it generates are protected by the same predicate. Then we can do
if-conversion before register allocation and then reload will see
that the predicate register is live across a call and put it in a
call-saved hard reg.
(B) Hack pre-reload ifcvt to notice when we'd like to if-convert a
block and emit a USE at the end. Now the pseudo is live across
the call (and conflicts with other predicates used within the
block). This might let us if-convert more often.
Either one would require that we know that there are call-saved
predicates in the architecture.
r~