From 279dc7a3624ff68e9bb4f44293877250a8097c14 Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Fri, 9 Aug 2019 10:33:05 +0200 Subject: [PATCH] Add -flto=auto option value. 2019-08-09 Martin Liska * doc/invoke.texi: Document the option value. * lto-wrapper.c (run_gcc): Set auto_parallel only with -flto=auto. 2019-08-09 Martin Liska * g++.dg/lto/devirt-19_0.C: Add -flto=auto. From-SVN: r274232 --- gcc/ChangeLog | 6 ++++++ gcc/doc/invoke.texi | 7 +++++-- gcc/lto-wrapper.c | 18 ++++++++---------- gcc/opts.c | 1 + gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.dg/lto/devirt-19_0.C | 2 +- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 50a2b8f49f4..8bc3d91816c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-08-09 Martin Liska + + * doc/invoke.texi: Document the option value. + * lto-wrapper.c (run_gcc): Set auto_parallel + only with -flto=auto. + 2019-08-09 Martin Liska * opts.c (common_handle_option): Error for an invalid argument diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 01aab60f895..5b6b824bdd3 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -10415,8 +10415,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 @@ -10425,6 +10424,10 @@ 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. +Use @option{-flto=auto} to use GNU make's job server, if available, +or otherwise fall back to autodetection of the number of CPU threads +present in your system. + @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 f1253cdc91c..84f59cf1a1f 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/opts.c b/gcc/opts.c index a0a77893448..bb0d8b5e7db 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -2825,6 +2825,7 @@ common_handle_option (struct gcc_options *opts, case OPT_flto_: if (strcmp (arg, "none") != 0 && strcmp (arg, "jobserver") != 0 + && strcmp (arg, "auto") != 0 && atoi (arg) == 0) error_at (loc, "unrecognized argument to %<-flto=%> option: %qs", arg); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 317b7e54e21..58e5fe500f9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2019-08-09 Martin Liska + + * g++.dg/lto/devirt-19_0.C: Add -flto=auto. + 2019-08-09 Martin Liska * gcc.dg/spellcheck-options-21.c: New test. 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.30.2