Over the last few weeks we (Google) have been discussing ideas on how to
leverage the LTO work to implement a whole program optimizer that is
both fast and scalable.

While we do not have everything thought out in detail, we think we have
enough to start doing some implementation work. I tried attaching the document, but the mailing list rejected it. I've uploaded it to
http://airs.com/dnovillo/pub/whopr.pdf

The most important goal we have with this project is the ability to
handle Really Large programs (millions of functions, millions of
call-graph edges) with some grace. So, the design tries pretty hard to
make use of concurrency and clusters to partition the work.

At this point we are interested in getting feedback on the general idea.
There is some refactoring that will be needed inside the call-graph
manager and some aspects of the design may not even need a lot of
changes in GCC. But in general, it will require very efficient IR streaming.

In terms of implementation, we will likely use the LTO branch as a
basis. Many of the features we will need are already being implemented
in the branch, so we will keep helping with that implementation.


Thanks. Diego.

Reply via email to