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 media-libs/mesa no-lto-O2.conf x11-base/xorg-server no-lto.conf sys-apps/grep no-lto.conf sys-fs/e2fsprogs no-lto.conf sys-devel/gdb no-lto.conf net-misc/wget no-lto.conf dev-libs/cyrus-sasl no-lto.conf mail-mta/postfix no-lto.conf app-office/akonadi-server no-lto.conf sys-apps/util-linux no-lto.conf sys-fs/udisks no-lto.conf x11-libs/pango no-lto.conf gnome-base/libglade no-lto.conf media-libs/gst-plugins-base no-lto.conf sys-apps/systemd no-lto.conf sys-apps/dbus no-lto.conf media-sound/pulseaudio no-lto.conf dev-qt/qtcore no-lto.conf dev-qt/qtgui no-lto.conf media-video/libav no-lto.conf media-libs/libpostproc no-lto.conf dev-db/mariadb no-lto.conf #maybe net-irc/telepathy-idle no-lto.conf net-misc/openssh no-lto.conf app-admin/sudo no-lto.conf dev-libs/libtasn1 no-lto.conf net-libs/gnutls no-lto.conf net-libs/glib-networking no-lto.conf dev-libs/gobject-introspection no-lto.conf www-servers/apache no-lto.conf net-dns/libidn no-lto.conf dev-lang/vala no-lto.conf net-im/telepathy-mission-control no-lto.conf x11-libs/gdk-pixbuf no-lto.conf net-voip/telepathy-gabble no-lto.conf dev-vcs/git no-lto.conf sys-power/upower no-lto.conf