Increase the lto-min-partition size to 50000 to reduce the number of partitions.
See eg. https://gcc.gnu.org/ml/gcc-patches/2016-04/msg00235.html for a concise 
explanation why 10000 is too small for modern CPU/memory size.  Additionally,
larger values increase optimization opportunities and reduce bad decisions in 
the
layout of global variables across partitions (anchors do not work well with 
LTO).
Looking at SPEC2000, 8 more benchmarks now use a single LTO partition which
is the most optimal.  Build time with LTO increases only slightly, eg. SPEC2006
now takes 2% more time on an 8-core ARM server.

ChangeLog:
2016-09-22  Wilco Dijkstra  <wdijk...@arm.com>

    gcc/
        * params.def (MIN_PARTITION_SIZE): Increase to 50000.

--
diff --git a/gcc/params.def b/gcc/params.def
index 
79b7dd4cca9ec1bb67a64725fb1a596b6e937419..da8fd1825e15f2aa800b1c8b680985776c1080ed
 100644
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -1045,7 +1045,7 @@ DEFPARAM (PARAM_LTO_PARTITIONS,
 DEFPARAM (MIN_PARTITION_SIZE,
          "lto-min-partition",
          "Minimal size of a partition for LTO (in estimated instructions).",
-         10000, 0, 0)
+         50000, 0, 0)
 
 DEFPARAM (MAX_PARTITION_SIZE,
          "lto-max-partition",

Reply via email to