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