On Thu, Apr 8, 2010 at 14:53, Xinliang David Li <davi...@google.com> wrote:
> Diego, thanks for brining LIPO into discussion. > > There is a common misunderstanding of LIPO. It is not about > partitioning, but about extending single module compilation scope to > multiple/cross module. For instance for a build with a.c, b.c, c.c, > and d.c, LIPO does not partition them into > {a.c b.c} > {c.c d.c} > > but extend for instance a.c to include c.c (as auxilary module), so > there will be still 4 independent compilations instead of 2: > > {a.c, c.c} > b.c > c.c > d.c Oh, right. That's what I was referring to, but I used bad terminology, sorry. So, LIPO starts with the individual TUs and decides to augment them using the available profile. WHOPR starts with the whole callgraph and, using the same profile information, needs to make the opposite and partition the TUs. In fact, it may likely end up with fractions of TUs spread out (which does introduce complications, as certain declarations need to be replicated). Diego.