[llvm-dev] (Thin)LTO llvm build

Carsten Mattner via llvm-dev llvm-dev at lists.llvm.org
Sat Sep 10 03:03:10 PDT 2016

I tried building llvm, clang, lld, lldb from the 3.9 svn release
branch with LTO, and some of the results were unexpected.

I first tried to rebuild llvm with llvm-3.9, which has ThinLTO, by
providing -DLLVM_ENABLE_LTO=Thin, but that failed very quickly, so I
fell back to building with -DLLVM_ENABLE_LTO=On and using the system
CC/CXX (gcc 6.1).

The resulting installed build is many times bigger than the non-LTO
version. Is this to be expected? I thought LTO would reduce size by
detecting more unused code.

The bindist .tar.xz archives are as follows:

LTO=Off: 195MB
LTO=On : 953MB

Now, I am of course aware that falling back to gcc's lto support is
not the same as llvm's lto or thinlto, but I only fell back after it
failed to build that way, and I wasn't aware of gcc6 providing almost
5x large code than without lto.

Also, given a fresh 3.9 install, on an otherwise gcc/libstdc++ system,
how can I configure and build with -DLLVM_ENABLE_LTO=Thin? Is this
supported, or does it require the use of some libXX too?

More information about the llvm-dev mailing list