This is an old revision of the document!


Link Time Optimization (LTO) gives GCC the capability of dumping its internal representation (GIMPLE) to disk, so that all the different compilation units that make up a single executable can be optimized as a single module. This expands the scope of inter-procedural optimizations to encompass the whole program (or, rather, everything that is visible at link time). https://gcc.gnu.org/wiki/LinkTimeOptimization

All you need is add in make.conf append to your CFLAGS -flto.

$ cat /etc/portage/env/no-lto.conf 
CFLAGS="${CFLAGS} -fno-lto -fno-use-linker-plugin"
CXXFLAGS="${CXXFLAGS} -fno-lto -fno-use-linker-plugin"
LDFLAGS="${LDFLAGS} -fno-lto -fno-use-linker-plugin"

This is list of packages, which doesn't build with CFLAGS=“-flto”, please update if you encounter some broken.

$ cat /etc/portage/package.env/no-lto 
sys-libs/glibc						no-lto # glibc take care self about it
sys-devel/llvm						no-lto
sys-apps/coreutils					no-lto
dev-lang/ruby						no-lto
dev-lang/perl						no-lto
dev-lang/yasm						no-lto
sys-devel/flex						no-lto
net-misc/dhcp						no-lto
app-shells/bash						no-lto
sys-apps/findutils					no-lto
media-libs/mesa 					no-lto
x11-apps/mesa-progs					no-lto
app-benchmarks/glmark2					no-lto
app-emulation/wine 					no-lto
media-libs/alsa-lib					no-lto
x11-base/xorg-server					no-lto
sys-apps/grep						no-lto
sys-fs/e2fsprogs					no-lto
sys-devel/gdb						no-lto
sys-devel/gettext					no-lto
net-misc/wget						no-lto
net-analyzer/traceroute					no-lto
dev-libs/cyrus-sasl					no-lto
mail-mta/postfix					no-lto
sys-apps/util-linux					no-lto
sys-fs/udisks						no-lto
x11-libs/pango						no-lto
gnome-base/libglade					no-lto
media-libs/gstreamer					no-lto
media-libs/gst-plugins-base				no-lto
media-libs/gst-plugins-bad				no-lto
app-misc/mc						no-lto
media-libs/quvi						no-lto
# OLD GST, remove later
media-plugins/gst-plugins-a52dec			no-lto
media-plugins/gst-plugins-vorbis			no-lto
media-plugins/gst-plugins-ogg				no-lto
media-plugins/gst-plugins-xvideo			no-lto
media-plugins/gst-plugins-theora			no-lto
media-plugins/gst-plugins-x				no-lto
media-plugins/gst-plugins-mad				no-lto
media-plugins/gst-plugins-dvdread			no-lto
media-plugins/gst-plugins-mpeg2dec			no-lto
media-plugins/gst-plugins-x264				no-lto
media-plugins/gst-plugins-resindvd			no-lto
media-plugins/gst-plugins-dts				no-lto
media-plugins/gst-plugins-faad				no-lto
media-plugins/gst-plugins-flac				no-lto
media-plugins/gst-plugins-assrender			no-lto
media-plugins/gst-plugins-pulse				no-lto
media-plugins/gst-plugins-libav				no-lto

sys-apps/systemd					no-lto
sys-apps/kmod						no-lto
sys-apps/dbus						no-lto
media-sound/pulseaudio					no-lto
dev-qt/qtcore						no-lto
dev-qt/qtgui						no-lto
dev-qt/qtquick1						no-lto
dev-qt/qtwidgets					no-lto
dev-qt/qtdeclarative					no-lto

dev-qt/qtprintsupport					no-lto
dev-qt/qtscript						no-lto
dev-qt/qtxmlpatterns					no-lto
dev-qt/qtquickcontrols					no-lto
dev-qt/qtwebkit						no-lto
dev-qt/designer						no-lto

media-video/libav					no-lto
media-libs/libpostproc					no-lto
dev-db/mariadb						no-lto #maybe
net-misc/openssh					no-lto
app-admin/sudo						no-lto
sys-libs/pam						no-lto
sys-apps/shadow						no-lto
dev-libs/libtasn1					no-lto
net-libs/gnutls						no-lto
net-libs/webkit-gtk					no-lto
app-crypt/gnupg						no-lto
net-libs/glib-networking				no-lto
net-misc/modemmanager					no-lto
dev-libs/gobject-introspection				no-lto
dev-libs/gjs						no-lto
www-servers/apache					no-lto
net-dns/libidn						no-lto
dev-lang/vala						no-lto
x11-libs/gdk-pixbuf					no-lto
dev-vcs/git						no-lto
sys-power/upower					no-lto

dev-libs/xapian						no-lto
app-office/akonadi-server				no-lto
net-voip/telepathy-gabble				no-lto
net-irc/telepathy-idle					no-lto
net-im/telepathy-mission-control			no-lto
# KDE
kde-base/kdelibs					no-lto
kde-base/ksmserver					no-lto
kde-base/pykde4						no-lto
kde-base/drkonqi					no-lto
kde-base/kdepim-runtime					no-lto
app-office/calligra					no-lto
net-im/ktp-call-ui					no-lto
app-office/kmymoney					no-lto
# KDE 5
dev-util/cmake						no-lto
kde-base/baloo						no-lto
kde-base/plasma-workspace				no-lto
kde-base/kate						no-lto
kde-base/marble						no-lto
kde-frameworks/kauth					no-lto
kde-frameworks/kdoctools				no-lto
kde-frameworks/kio					no-lto
dev-util/kdevelop					no-lto
dev-util/kdevelop-clang					no-lto

media-sound/mpg123					no-lto
media-libs/openal					no-lto
kde-base/ksysguard					no-lto

x11-themes/qtcurve					no-lto
net-print/cups						no-lto
media-gfx/imagemagick					no-lto
media-gfx/inkscape					no-lto
dev-lang/spidermonkey					no-lto
sys-auth/polkit						no-lto
dev-lang/lua						no-lto
net-analyzer/wireshark					no-lto
net-libs/gupnp-igd					no-lto
net-libs/libnice					no-lto
gnome-base/gconf					no-lto
media-video/vlc						no-lto
net-libs/libproxy					no-lto
net-fs/nfs-utils					no-lto
gnome-base/librsvg					no-lto
sys-devel/libtool					no-lto #phonon fails
net-irc/quassel						no-lto
media-libs/libquvi					no-lto
media-sound/mpd						no-lto
app-misc/strigi						no-lto
media-gfx/nvidia-texture-tools				no-lto

games-emulation/dosbox					no-lto
app-arch/tar						no-lto
sys-apps/accountsservice				no-lto

net-wireless/aircrack-ng				no-lto
media-libs/libdvdnav					no-lto
sys-apps/kbd						no-lto
dev-libs/elfutils					no-lto
media-libs/libdvdread					no-lto
sys-apps/iproute2					no-lto
media-libs/flac						no-lto
sys-block/parted					no-lto
app-crypt/pinentry					no-lto
sys-apps/net-tools					no-lto
app-text/hunspell					no-lto
app-i18n/ibus						no-lto
# GNOME
gnome-base/gnome-desktop				no-lto
gnome-base/gnome-control-center				no-lto