summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorak <ak@138bc75d-0d04-0410-961f-82ee72b054a4>2014-09-01 16:41:28 +0000
committerak <ak@138bc75d-0d04-0410-961f-82ee72b054a4>2014-09-01 16:41:28 +0000
commit870e466f3853fb59faf1ad83465bedc4447240d1 (patch)
tree5101ad662599b9013f8ccaabee2c19dc2bf5ab54 /config
parent8de0b0d7fd53b7a4e25fbcd9b7e529c20fc3ef63 (diff)
downloadgcc-870e466f3853fb59faf1ad83465bedc4447240d1.tar.gz
Support slim LTO bootstrap
Change the bootstrap-lto config file to use slim (non fat) LTO.. Speeds up the LTO bootstrap by ~18% on a 4 core system. This requires using gcc-ar/ranlib in post stage 1 builds, so these are passed to all sub builds. config/: 2014-09-01 Andi Kleen <ak@linux.intel.com> * bootstrap-lto.mk: Implement slim bootstrap. /: 2014-09-01 Andi Kleen <ak@linux.intel.com> * Makefile.tpl (POSTSTAGE1_HOST_EXPORTS): Add LTO_EXPORTS. POSTSTAGE1_FLAGS_TO_PASS): Add LTO_FLAGS_TO_PASS. * Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214801 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'config')
-rw-r--r--config/ChangeLog4
-rw-r--r--config/bootstrap-lto.mk16
2 files changed, 15 insertions, 5 deletions
diff --git a/config/ChangeLog b/config/ChangeLog
index 82c73bd5cde..a1653c6328a 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2014-09-01 Andi Kleen <ak@linux.intel.com>
+
+ * bootstrap-lto.mk: Implement slim bootstrap.
+
2014-08-21 Bin Cheng <bin.cheng@arm.com>
* isl.m4 (ISL_CHECK_VERSION): Check link of isl library
diff --git a/config/bootstrap-lto.mk b/config/bootstrap-lto.mk
index 27bad1529be..9e065e1d85a 100644
--- a/config/bootstrap-lto.mk
+++ b/config/bootstrap-lto.mk
@@ -1,7 +1,13 @@
-# This option enables LTO for stage2 and stage3.
-# FIXME: Our build system is not yet able to use gcc-ar wrapper, so we need
-# to go with -ffat-lto-objects.
+# This option enables LTO for stage2 and stage3 in slim mode
-STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
-STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
+STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1
+STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1
STAGEprofile_CFLAGS += -fno-lto
+
+# assumes the host supports the linker plugin
+LTO_AR = $$r/$(HOST_SUBDIR)/prev-gcc/gcc-ar$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/
+LTO_RANLIB = $$r/$(HOST_SUBDIR)/prev-gcc/gcc-ranlib$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/
+
+LTO_EXPORTS = AR="$(LTO_AR)"; export AR; \
+ RANLIB="$(LTO_RANLIB)"; export RANLIB;
+LTO_FLAGS_TO_PASS = AR="$(LTO_AR)" RANLIB="$(LTO_RANLIB)"