Alias Improvements Branch

The branch is merged as of SVN revision 145494.

(see http://gcc.gnu.org/ml/gcc/2009-01/msg00286.html)

The primary objective of the branch is to transition away from the use of the virtual operand use-def chains as data-flow representation for memory optimizations. Memory optimizers need to transition to the use of the alias-oracle which is a query based system. For the foreseeable future they can still rely on the safety-net the virtual operand use-def chain provides.

Overview of infrastructure changes done on the branch:

The alias-oracle and its interface is contained in the tree-ssa-alias.[ch] files. Common with the trunk is the refs_may_alias_p type of query which has been accompanied by statement based clobber / use queries.

Preliminary performance measurements show comparable performance for SPEC 2000, Polyhedron and our usual set of C++ benchmarks. SPEC 2006 measurements are on the way, all on x86_64. Daily testing can be monitored beyond http://gcc.opensuse.org/, look for "alias-improvements" branch annotation and compare with the other runs on the frescobaldi machine.

In general the trade-off with the new scheme is that walking statements via the virtual use-def links will be slower because possibly (a lot) more statements are visited. This is offsetted by leaner operand iterators, cheaper operand scanning and updating and less memory use for maintaining the virtual operands. And most important, a lot less code to maintain.

Followup Improvements

There are a number of tasks left to do.

None: Alias_Improvements (last edited 2010-02-14 11:03:09 by RichardGuenther)