Add -flto=auto option value.

2019-08-09  Martin Liska  <mliska@suse.cz>

	* doc/invoke.texi: Document the option value.
	* lto-wrapper.c (run_gcc): Set auto_parallel
	only with -flto=auto.
2019-08-09  Martin Liska  <mliska@suse.cz>

	* g++.dg/lto/devirt-19_0.C: Add -flto=auto.

From-SVN: r274232
This commit is contained in:
Martin Liska 2019-08-09 10:33:05 +02:00 committed by Martin Liska
parent 40077d15a8
commit 279dc7a362
6 changed files with 25 additions and 13 deletions

View file

@ -1,3 +1,9 @@
2019-08-09 Martin Liska <mliska@suse.cz>
* doc/invoke.texi: Document the option value.
* lto-wrapper.c (run_gcc): Set auto_parallel
only with -flto=auto.
2019-08-09 Martin Liska <mliska@suse.cz>
* opts.c (common_handle_option): Error for an invalid argument

View file

@ -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.

View file

@ -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)
{

View file

@ -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);

View file

@ -1,3 +1,7 @@
2019-08-09 Martin Liska <mliska@suse.cz>
* g++.dg/lto/devirt-19_0.C: Add -flto=auto.
2019-08-09 Martin Liska <mliska@suse.cz>
* gcc.dg/spellcheck-options-21.c: New test.

View file

@ -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" } } */