This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RFC ping: Make regrename use validate_change
- From: Andreas Krebbel <krebbel1 at de dot ibm dot com>
- To: Richard Henderson <rth at redhat dot com>, Bernd Schmidt <bernds_cb1 at t-online dot de>
- Cc: Joern RENNECKE <joern dot rennecke at st dot com>, gcc-patches at gcc dot gnu dot org
- Date: Wed, 7 Sep 2005 16:31:07 +0200
- Subject: Re: RFC ping: Make regrename use validate_change
- References: <20050905131103.GA3245@de.ibm.com> <20050906174647.GC12009@redhat.com>
Hello,
after a discussion with Ulrich I think I've finally understood
why you and Bernd say that the constraints must be the problem.
Like in the arm case Bernd described our load multiple pattern
work because they are only allowed after reload and are emitted
by the back end always with hard reg operands statisfying the
predicate. A predicate forcing operand registers to be consecutive
is broken anyway if it would be called before reload.
But reload never has to deal with it otherwise it would have run
into similar trouble as regrename.
And regrename never made problems before because these insns
are only emitted for storing and restoring general purpose
registers in the function prologue and epilogue. Hence
regrename never had them in a def-use chain what explains why
it never had a chance to break them.
The patch I'm working on introduces load/store multiple splitters
for movti patterns. These splitters are enabled after reload but before
regrename. This way load/store multiple patterns are emitted in the
function body what makes them proper targets for regrename.
Because reload and regrename functions are exclusively controlled by
insn constraints an insn with a predicate demanding more than the
sum of contraints has to disable reload and regrename by passing an
empty constraint string as Bernd already suggested.
Actually I wasn't aware that I can leave one contraint string empty
although other operands have constraints.
Thanks for your help
Bye,
-Andreas-