From 41f13e1890cc78292afb36a54982b097a3c6abdf Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Mon, 5 Aug 2019 06:44:25 +0200 Subject: [PATCH] Add -flto=auto option value. gcc/ChangeLog: 2019-08-05 Martin Liska * doc/invoke.texi: Document the option value. * lto-wrapper.c (run_gcc): Set auto_parallel only with -flto=auto. gcc/testsuite/ChangeLog: 2019-08-05 Martin Liska * g++.dg/lto/devirt-19_0.C: Add -flto=auto. --- gcc/doc/invoke.texi | 8 ++++++-- gcc/lto-wrapper.c | 18 ++++++++---------- gcc/testsuite/g++.dg/lto/devirt-19_0.C | 2 +- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 7b3c77b8033..5ea56fbb23a 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -10396,8 +10396,7 @@ If you specify the optional @var{n}, the optimization and code generation done at link time is executed in parallel using @var{n} parallel jobs by utilizing an installed @command{make} program. The environment variable @env{MAKE} may be used to override the program -used. The default value for @var{n} is automatically detected based -on number of cores. +used. You can also specify @option{-flto=jobserver} to use GNU make's job server mode to determine the number of parallel jobs. This @@ -10406,6 +10405,11 @@ You must prepend a @samp{+} to the command recipe in the parent Makefile for this to work. This option likely only works if @env{MAKE} is GNU make. +One can also use @option{-flto=auto} to either use GNU make's +job server mode to determine the number of parallel jobs, if available. +Or the default value for @var{n} is automatically detected based +on number of cores. + @item -flto-partition=@var{alg} @opindex flto-partition Specify the partitioning algorithm used by the link-time optimizer. diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c index 3414adedd26..b825e0a0aa0 100644 --- a/gcc/lto-wrapper.c +++ b/gcc/lto-wrapper.c @@ -1252,8 +1252,7 @@ run_gcc (unsigned argc, char *argv[]) char *list_option_full = NULL; const char *linker_output = NULL; const char *collect_gcc, *collect_gcc_options; - /* Make linking parallel by default. */ - int parallel = 1; + int parallel = 0; int jobserver = 0; int auto_parallel = 0; bool no_partition = false; @@ -1380,6 +1379,11 @@ run_gcc (unsigned argc, char *argv[]) case OPT_flto_: if (strcmp (option->arg, "jobserver") == 0) jobserver = 1; + else if (strcmp (option->arg, "auto") == 0) + { + parallel = 1; + auto_parallel = 1; + } else { parallel = atoi (option->arg); @@ -1423,14 +1427,8 @@ run_gcc (unsigned argc, char *argv[]) auto_parallel = 0; parallel = 0; } - else if (!jobserver && parallel) - { - /* If there's no explicit usage of jobserver and - parallel is enabled, then automatically detect - jobserver or number of cores. */ - auto_parallel = 1; - jobserver = jobserver_active_p (); - } + else if (!jobserver && auto_parallel) + jobserver = jobserver_active_p (); if (linker_output) { diff --git a/gcc/testsuite/g++.dg/lto/devirt-19_0.C b/gcc/testsuite/g++.dg/lto/devirt-19_0.C index 696d8c0fc83..b43527e324e 100644 --- a/gcc/testsuite/g++.dg/lto/devirt-19_0.C +++ b/gcc/testsuite/g++.dg/lto/devirt-19_0.C @@ -1,5 +1,5 @@ /* { dg-lto-do link } */ /* { dg-lto-options { "-O2 -fdump-ipa-cp -Wno-return-type -flto -r -nostdlib" } } */ -/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */ +/* { dg-extra-ld-options "-flinker-output=nolto-rel -flto=auto" } */ #include "../ipa/devirt-19.C" /* { dg-final { scan-wpa-ipa-dump-times "Discovered a virtual call to a known target" 1 "cp" } } */ -- 2.22.0