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
kde-base/kdelibs                                                no-lto.conf