Link-time optimization status

Michael Meeks michael.meeks at suse.com
Tue Jun 19 01:55:15 PDT 2012


Hi Matus,

On Sun, 2012-06-17 at 19:09 +0200, Matúš Kukan wrote:
> Part of the result of my GSoC 2011 project is --enable-lto and
> --enable-mergelibs.

	:-)

> So I tried --enable-lto now just to see what will happen and here is
> the summary:

	Nice.

> My first experiments were with gcc version 4.6.3
> It somehow works but not so well and proly does not make much sense.
> I was not able to use --enable-mergelibs because I have only 3GB RAM
> and that's too little for libmerged.

	Oh - wow.

> I also got an internal compiler error somewhere.

	Yep, so we should file those bugs I suppoe.

> And the produced libraries were similar in the size. (I guess the
> difference would be more visible with libmerged)

	:-)

> Then I compiled gcc version 4.7.1 and it's much better.
> Thanks to the gcc guys.
> It's also possible to build current libmerged.

	Nice.

> Here are few differences in size (not stripped): LTO / not-LTO
> total size of workdir/*/LinkTarget/Library: 290M / 304M

	Goodness - an un-stripped library is of a random size; highly affected
by debuginfo / symbol tables etc. IMHO it is only worth comparing
stripped library sizes; can you easily generate those ? :-)

> libmerged    47M / 53M
> libwpftdrawlo.so    21M / 21M
> libswlo.so    17M / 18M
> libsclo.so    14M / 15M
> liblocaledata_others.so    5.7M / 3.9M
> liblocaledata_euro.so    4.5M / 3.1M
> ..
> so sometimes is creates bigger libraries.

	That is interesting; so - Jan - how well does LTO cope with -Os vs. -O2
etc. and/or Matus - what compile flags are we using ?

> Maybe it's not all about the size ?

	:-) well; we want to be smaller of course. Potentially getting more
code inside the libmerged perimiter helps - and potentially better
visibility markup so that the LTO can know that a given function is not
used outside of that libmerged is useful. So far we have only a markup
that says "used outside of un-merged library", really we need to split
that into two types of markup that distinguish whether it is used
outside of libmerged or not (I think).

> Someone wants to play with the speed differences if that's possible
> to measure ?

	I was primarily hoping for size reduction myself :-) from eliminating
dead / bogus code. Perhaps the stripped numbers, and/or some insight
from Jan will help here.

	Thanks ! this was a great GSOC project :-)

	ATB,

		Michael.

-- 
michael.meeks at suse.com  <><, Pseudo Engineer, itinerant idiot



More information about the LibreOffice mailing list