Reposting to the gcc list since my first email got bounced. Ollie
On Tue, Jun 3, 2008 at 7:26 PM, Chris Lattner <[EMAIL PROTECTED]> wrote: > This is a very interesting design, and a very nice evolution from the > previous proposal. I'm not completely clear on the difference between LTO > and whopr here. Is LTO the mode "normal people" will use, and whopr is the > mode where "people with huge clusters" will use? Will LTO/whopr support > useful optimization on common multicore machines? WHOPR is just an extension of the original LTO proposal. It seeks to augment the LTO design by providing a mechanism for parallelizing the final (link-time) optimization phase. The design has been based on a distcc-like distributed compilation model, so it should be beneficial even to those with small to moderate sized clusters. This doesn't preclude parallelization on multi-core machines (and that has been discussed to some degree), but I at least have treated that as a secondary consideration. A good example of this is in the WPA discussion below. On a multicore machine, repackaging doesn't make a lot of sense because the compiler can efficiently cherry-pick function bodies from different files. However, in a distcc compiler farm, the entirety of a file must be transferred, so this would result in a lot of excess network overhead. > Are you focusing on inlining here as a specific example, or is this the only > planned IPA optimization that can use summaries? It seems unfortunate to > design a system where inlining is the only real IPO transformation you can > do. Does adding new interprocedural optimizations require adding whole new > phases? The WPA document is a cleaned up transcription of an internal document I wrote. During the transcription, some context got lost. It's not meant to be a description of a final implementation but rather a pro/con comparison between two possible draft implementations. The goal is to get some basic infrastructure in place so that we can start experimenting with it and better parallelize additional work. Inlining is chosen as an initial feature because it's relatively easy to implement and can be (coarsely) handled without support for serializing IPA summary information. Other IPA passes (e.g. inter-procedural constant propagation) require additional serialization capabilities (which Kenneth Zadeck is working on now). Ollie