[dataflow] speed up by 2%, patch 3/4 - CSE and regscan changes

Paolo Bonzini paolo.bonzini@lu.unisi.ch
Mon Feb 19 12:24:00 GMT 2007


This patch removes cuids from CSE and removes two fields that regscan 
sets but now nobody reads (regmove makes a laudable attempt to keep them 
up to date ;-) and they're gone too with this patch).

CSE is using REGNO_FIRST_UID and REGNO_LAST_UID to find registers that 
are set in more than one basic block.  Actually, the heuristic is a bit 
more complicated, because it involves the lowest and highest CUID in the 
extended basic block being analyzed.  However, when the CFG is shaped 
like this:

     A
    / \
   B   C

we analyze the path A/C and we will accept registers set only in the 
A/B/C region.  But when we analyze A/B, we will accept registers set 
only in the two basic blocks A/B.

In my opinion, a simpler heuristic like the one I implement here (which 
is, just do more or less what the comments say) is more than enough. 
But anyway, I've also built a powerpc-darwin cross and done an assembly 
language comparison on cc1 .i files, and there is absolutely no change.

Bootstrapped/regtested i686-pc-linux-gnu together with the others.  Ok?

Paolo
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: cse-cuids.patch
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20070219/ef54b8af/attachment.ksh>


More information about the Gcc-patches mailing list