Hi,
> I'll get back to you with our local inlining changes.  We're looking to move
> development closer to trunk to reduce this divergence in the future.
> 
> Our tuning was done primarily on big c++ programs.  A significant size
> improvement came from aggressively inlining functions which might be
> eliminated by the linker (garbage collection of uncalled functions).  We
> found that for non-static functions, if all callsites of a function are
> inlined, the function rarely appears in the final binary (excepting address
> taken functions).  Of course, this doesn't necessarily work for libraries
> which may need all non-static functions to be emitted.

Interesting. Coincidentally I recently added logic for this for comdat
functions (setting probability to 20%) to deal with problems that a lot of C++
programs does template instatiations that produce comdat functoins for now good
reason.  This indeed helped quite a lot.  I didn't got so far to set similar
logic for normal external functions, since current toolchain won't eliminate
them by default.

Did the posted size numbers include function garbage collection and unification
that is same for mainline as for google copmiler?

Honza

Reply via email to