[sel-sched] Limit renaming to the best insns only, compute target register availability on the fly

Andrey Belevantsev abel@ispras.ru
Wed Dec 26 17:53:00 GMT 2007


This patch aims at computing the availability of the target register of 
an insn on the fly.  This is enough for insns which we are not going to 
rename, and this saves us from the necessity of calling find_used_regs. 
  For the two best insns, if their original registers are not available, 
we still try to rename them, i.e. we call find_used_regs to compute the 
set of possible target registers for them.  The number of insns that are 
eligible for renaming is controlled by a param.

The net result of the patch is fewer calls to find_used_regs, which is 
an expensive operation.  This speedups the scheduler by 15-20% on the 
heavy testcases.

To implement this, an extra field is added to struct expr which shows 
whether the target register of this expression is available for 
scheduling.  The tricky issue is merging this field when expressions are 
joined both along different code paths and along the same code path. 
The compiler was bootstrapped and tested on ia64 with the assert in 
find_used_regs verifying the consistency of the computed information 
with the one we had before.  Committed to sel-sched branch.

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: limit-renaming.clg
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20071226/9286b2f0/attachment.ksh>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: limit-renaming.diff
Type: text/x-patch
Size: 68454 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20071226/9286b2f0/attachment.bin>

More information about the Gcc-patches mailing list