patch committed to dataflow branch.

Kenneth Zadeck zadeck@naturalbridge.com
Sun Dec 18 16:52:00 GMT 2005


This is the final part of the major rewrite of df*.  There were three 
motivations for this rewrite:
(1) performance.  While some of the dataflow problems have modest 
performance improvements, building def-use and use-def chains, reaching 
uses and reaching defs are about 3 orders of magnitude faster when 
measured on insn-attrtab (which contains two very large functions).  
These improvements make these dataflow problems much more usable, (the 
performance is still poorer than a good ssa implementation but then 
again, we are a long way from being able to do that in the back end.).

(2) coverage.  The scanning now models more precisely the hidden 
constraints that the hard registers have at the rtl level.  Thus, the 
output of the problems can be used pretty much be dropped in anywhere in 
the back end with little regard for the special cases that most phases 
have in the past had to trip over.

(3) abstraction.  It is now much easier to define dataflow problems that 
use the solution engine in df-core.c without having to be special.


Df.c has be broken into three files:

df-scan.c contains the structure that scans the rtl code and produces 
df-ref structures for each of its references to pseudos.  Care has been 
taken in this rewrite to encapsulate virtually all of the special cases 
associated with the use of hard registers in the back end.

df-problems.c contains seven concrete dataflow problems.  Five of the 
problems are pretty much finished and usable by the rest of backend.  
These are reaching-defs (RD), reaching-uses (RU), live-registers (LR) 
and undefined-registers (UR) and def use (DU) and use def (UD) chain 
building.  Two other problems, UREC, and RI are not for public consumption.

df-core.c contains the engine for solving the dataflow equations and for 
processing the sets of blocks that must be rescanned.

Almost all of the unused, broken or never implemented incremental 
dataflow was removed.

Kenny

------------------------------------------------------------------------

-------------- next part --------------
A non-text attachment was scrubbed...
Name: dataflow11.diff.gz
Type: application/x-gzip
Size: 92964 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20051218/b1797292/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dataflow11.changelog.gz
Type: application/x-gzip
Size: 1985 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20051218/b1797292/attachment-0001.bin>


More information about the Gcc-patches mailing list