common.opt (combine): Remove.

2010-09-17  Richard Guenther  <rguenther@suse.de>

	* common.opt (combine): Remove.
	* gcc.c (default_compilers): Remove specs testing combine.
	The C compilers no longer can combine.
	(option_map): Remove -combine.
	(display_help): Remove -combine.
	(driver_handle_option): Remove OPT_combine handling.
	(compile_input_file_p): Remove.
	(do_spec): Remove code concerning combine.
	(main): Likewise.
	* doc/invoke.texi: Remove traces of -combine.
	* lto-wrapper.c (run_gcc): Do not pass -combine to the compiler
	driver.

	lto/
	* lang.opt (flag_wpa): Also enable for the driver.

	* gcc.dg/pr27898.c: Use -flto instead of -combine.
	* gcc.dg/pr28706.c: Likewise.
	* gcc.dg/pr28712.c: Likewise.
	* gcc.dg/pr30762-1.c: Likewise.
	* gcc.dg/pr30762-2.c: Likewise.
	* gcc.dg/pr31529-1.c: Likewise.
	* gcc.dg/pr31529-2.c: Likewise.
	* gcc.dg/pr34457-1.c: Likewise.
	* gcc.dg/pr34457-2.c: Likewise.
	* gcc.dg/pr34668-1.c: Likewise.
	* gcc.dg/pr34668-2.c: Likewise.
	* gcc.dg/pr34989-1.c: Likewise.
	* gcc.dg/pr34989-2.c: Likewise.
	* gcc.dg/pr43557-1.c: Likewise.
	* gcc.dg/pr43557-2.c: Likewise.
	* gcc.dg/debug/pr41893-1.c: Likewise.
	* gcc.dg/matrix/matrix.exp: Do not use -combine.
	* gcc.dg/matrix/matrix-3.c: Drop dg-options.
	* gcc.dg/matrix/matrix-4.c: Likewise.
	* gcc.dg/struct/struct-reorg.exp: Do not use -combine.
	* gcc.dg/struct/wo_prof_empty_str.c: Drop dg-options.
	* gcc.dg/struct/wo_prof_escape_arg_to_local.c: Likewise.
	* gcc.dg/struct/wo_prof_escape_return.c: Likewise.

From-SVN: r164357
This commit is contained in:
Richard Guenther 2010-09-17 09:04:14 +00:00 committed by Richard Biener
parent dbad82f59c
commit c3224d6f70
25 changed files with 99 additions and 149 deletions

View File

@ -1,3 +1,18 @@
2010-09-17 Richard Guenther <rguenther@suse.de>
* common.opt (combine): Remove.
* gcc.c (default_compilers): Remove specs testing combine.
The C compilers no longer can combine.
(option_map): Remove -combine.
(display_help): Remove -combine.
(driver_handle_option): Remove OPT_combine handling.
(compile_input_file_p): Remove.
(do_spec): Remove code concerning combine.
(main): Likewise.
* doc/invoke.texi: Remove traces of -combine.
* lto-wrapper.c (run_gcc): Do not pass -combine to the compiler
driver.
2010-09-17 Richard Guenther <rguenther@suse.de>
PR middle-end/45678

View File

@ -309,9 +309,6 @@ Common Separate RejectDriver
auxbase-strip
Common Separate RejectDriver
combine
Driver Var(combine_flag)
c
Driver

View File

@ -161,7 +161,7 @@ in the following sections.
@table @emph
@item Overall Options
@xref{Overall Options,,Options Controlling the Kind of Output}.
@gccoptlist{-c -S -E -o @var{file} -combine -no-canonical-prefixes @gol
@gccoptlist{-c -S -E -o @var{file} -no-canonical-prefixes @gol
-pipe -pass-exit-codes @gol
-x @var{language} -v -### --help@r{[}=@var{class}@r{[},@dots{}@r{]]} --target-help @gol
--version -wrapper@@@var{file} -fplugin=@var{file} -fplugin-arg-@var{name}=@var{arg} @gol
@ -1195,23 +1195,6 @@ various stages of compilation. This fails to work on some systems where
the assembler is unable to read from a pipe; but the GNU assembler has
no trouble.
@item -combine
@opindex combine
If you are compiling multiple source files, this option tells the driver
to pass all the source files to the compiler at once (for those
languages for which the compiler can handle this). This will allow
intermodule analysis (IMA) to be performed by the compiler. Currently the only
language for which this is supported is C@. If you pass source files for
multiple languages to the driver, using this option, the driver will invoke
the compiler(s) that support IMA once each, passing each compiler all the
source files appropriate for it. For those languages that do not support
IMA this option will be ignored, and the compiler will be invoked once for
each source file in that language. If you use this option in conjunction
with @option{-save-temps}, the compiler will generate multiple
pre-processed files
(one for each source file), but only one (combined) @file{.o} or
@file{.s} file.
@item --help
@opindex help
Print (on the standard output) a description of the command line options
@ -6757,7 +6740,7 @@ layout in order to better utilize spatial locality. This transformation is
affective for programs containing arrays of structures. Available in two
compilation modes: profile-based (enabled with @option{-fprofile-generate})
or static (which uses built-in heuristics). It works only in whole program
mode, so it requires @option{-fwhole-program} and @option{-combine} to be
mode, so it requires @option{-fwhole-program} to be
enabled. Structures considered @samp{cold} by this transformation are not
affected (see @option{--param struct-reorg-cold-struct-ratio=@var{value}}).
@ -7462,7 +7445,7 @@ and those merged by attribute @code{externally_visible} become static functions
and in effect are optimized more aggressively by interprocedural optimizers. If @command{gold} is used as the linker plugin, @code{externally_visible} attributes are automatically added to functions (not variable yet due to a current @command{gold} issue) that are accessed outside of LTO objects according to resolution file produced by @command{gold}. For other linkers that cannot generate resolution file, explicit @code{externally_visible} attributes are still necessary.
While this option is equivalent to proper use of the @code{static} keyword for
programs consisting of a single file, in combination with option
@option{-combine}, @option{-flto} or @option{-fwhopr} this flag can be used to
@option{-flto} or @option{-fwhopr} this flag can be used to
compile many smaller scale programs since the functions and variables become
local for the whole combined compilation unit, not for the single source file
itself.

101
gcc/gcc.c
View File

@ -959,7 +959,7 @@ static const struct compiler default_compilers[] =
{".java", "#Java", 0, 0, 0}, {".class", "#Java", 0, 0, 0},
{".zip", "#Java", 0, 0, 0}, {".jar", "#Java", 0, 0, 0},
/* Next come the entries for C. */
{".c", "@c", 0, 1, 1},
{".c", "@c", 0, 0, 1},
{"@c",
/* cc1 has an integrated ISO C preprocessor. We should invoke the
external preprocessor if -save-temps is given. */
@ -967,20 +967,13 @@ static const struct compiler default_compilers[] =
%{!E:%{!M:%{!MM:\
%{traditional|ftraditional:\
%eGNU C no longer supports -traditional without -E}\
%{!combine:\
%{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
%(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\
cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
%(cc1_options)}\
%{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
cc1 %(cpp_unique_options) %(cc1_options)}}}\
%{!fsyntax-only:%(invoke_as)}} \
%{combine:\
%{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
%(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i}}\
%{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
cc1 %(cpp_unique_options) %(cc1_options)}}\
%{!fsyntax-only:%(invoke_as)}}}}}}", 0, 1, 1},
%{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
%(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\
cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
%(cc1_options)}\
%{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
cc1 %(cpp_unique_options) %(cc1_options)}}}\
%{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 1},
{"-",
"%{!E:%e-E or -x required when input is from standard input}\
%(trad_capable_cpp) %(cpp_options) %(cpp_debug_options)", 0, 0, 0},
@ -1000,7 +993,7 @@ static const struct compiler default_compilers[] =
cc1 %(cpp_unique_options) %(cc1_options)\
%{!fdump-ada-spec*:-o %g.s %{!o*:--output-pch=%i.gch}\
%W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0},
{".i", "@cpp-output", 0, 1, 0},
{".i", "@cpp-output", 0, 0, 0},
{"@cpp-output",
"%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 1, 0},
{".s", "@assembler", 0, 1, 0},
@ -1078,7 +1071,6 @@ static const struct option_map option_map[] =
{"--classpath", "-fclasspath=", "aj"},
{"--bootclasspath", "-fbootclasspath=", "aj"},
{"--CLASSPATH", "-fclasspath=", "aj"},
{"--combine", "-combine", 0},
{"--comments", "-C", 0},
{"--comments-in-macros", "-CC", 0},
{"--compile", "-c", 0},
@ -3322,7 +3314,6 @@ display_help (void)
fputs (_(" -Xassembler <arg> Pass <arg> on to the assembler\n"), stdout);
fputs (_(" -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n"), stdout);
fputs (_(" -Xlinker <arg> Pass <arg> on to the linker\n"), stdout);
fputs (_(" -combine Pass multiple source files to compiler at once\n"), stdout);
fputs (_(" -save-temps Do not delete intermediate files\n"), stdout);
fputs (_(" -save-temps=<arg> Do not delete intermediate files\n"), stdout);
fputs (_("\
@ -3761,8 +3752,6 @@ driver_handle_option (const struct cl_decoded_option *decoded,
case OPT_pipe:
validated = true;
/* Fall through. */
case OPT_combine:
/* These options set the variables specified in common.opt
automatically, but do need to be saved for spec
processing. */
@ -7003,10 +6992,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
explicit_link_files = XCNEWVEC (char, n_infiles);
if (combine_flag)
combine_inputs = true;
else
combine_inputs = false;
combine_inputs = have_o || flag_wpa;
for (i = 0; (int) i < n_infiles; i++)
{
@ -7039,63 +7025,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
}
if (!combine_inputs && have_c && have_o && lang_n_infiles > 1)
fatal_error ("cannot specify -o with -c, -S or -E with multiple files");
if (combine_flag && save_temps_flag)
{
bool save_combine_inputs = combine_inputs;
/* Must do a separate pre-processing pass for C & Objective-C files, to
obtain individual .i files. */
combine_inputs = false;
for (i = 0; (int) i < n_infiles; i++)
{
int this_file_error = 0;
input_file_number = i;
set_input (infiles[i].name);
if (infiles[i].incompiler
&& (infiles[i].incompiler)->needs_preprocessing)
input_file_compiler = infiles[i].incompiler;
else
continue;
if (input_file_compiler)
{
if (input_file_compiler->spec[0] == '#')
{
error ("%s: %s compiler not installed on this system",
gcc_input_filename, &input_file_compiler->spec[1]);
this_file_error = 1;
}
else
{
value = do_spec (input_file_compiler->spec);
infiles[i].preprocessed = true;
if (!have_o_argbuf_index)
fatal_error ("spec %qs is invalid",
input_file_compiler->spec);
infiles[i].name = argbuf[have_o_argbuf_index];
infiles[i].incompiler
= lookup_compiler (infiles[i].name,
strlen (infiles[i].name),
infiles[i].language);
if (value < 0)
this_file_error = 1;
}
}
if (this_file_error)
{
delete_failure_queue ();
errorcount++;
break;
}
clear_failure_queue ();
}
combine_inputs = save_combine_inputs;
}
fatal_error ("cannot specify -o with -c, -S or -E with multiple files");
for (i = 0; (int) i < n_infiles; i++)
{
@ -7115,12 +7045,9 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
/* Figure out which compiler from the file's suffix. */
if (! combine_inputs)
input_file_compiler
= lookup_compiler (infiles[i].name, input_filename_length,
infiles[i].language);
else
input_file_compiler = infiles[i].incompiler;
input_file_compiler
= lookup_compiler (infiles[i].name, input_filename_length,
infiles[i].language);
if (input_file_compiler)
{

View File

@ -423,7 +423,6 @@ run_gcc (unsigned argc, char *argv[])
argv_ptr[0] = linker_output;
argv_ptr[1] = "-o";
argv_ptr[2] = flto_out;
argv_ptr[3] = "-combine";
}
else if (lto_mode == LTO_MODE_WHOPR)
{
@ -459,15 +458,14 @@ run_gcc (unsigned argc, char *argv[])
strcpy (tmp, ltrans_output_file);
argv_ptr[2] = "-fwpa";
argv_ptr[3] = "-combine";
}
else
fatal ("invalid LTO mode");
/* Append the input objects and possible preceeding arguments. */
for (i = 1; i < argc; ++i)
argv_ptr[3 + i] = argv[i];
argv_ptr[3 + i] = NULL;
argv_ptr[2 + i] = argv[i];
argv_ptr[2 + i] = NULL;
fork_execute (CONST_CAST (char **, new_argv));

View File

@ -1,3 +1,7 @@
2010-09-17 Richard Guenther <rguenther@suse.de>
* lang.opt (flag_wpa): Also enable for the driver.
2010-09-16 Jan Hubicka <jh@suse.cz>
* lto.c (lto_materialize_function): Do not tamper with STATIC and

View File

@ -33,7 +33,7 @@ LTO Joined Var(ltrans_output_list)
Specify a file to which a list of files output by LTRANS is written.
fwpa
LTO Report Var(flag_wpa) Optimization
LTO Driver Report Var(flag_wpa) Optimization
Run the link-time optimizer in whole program analysis (WPA) mode.
fresolution=

View File

@ -1,3 +1,29 @@
2010-09-17 Richard Guenther <rguenther@suse.de>
* gcc.dg/pr27898.c: Use -flto instead of -combine.
* gcc.dg/pr28706.c: Likewise.
* gcc.dg/pr28712.c: Likewise.
* gcc.dg/pr30762-1.c: Likewise.
* gcc.dg/pr30762-2.c: Likewise.
* gcc.dg/pr31529-1.c: Likewise.
* gcc.dg/pr31529-2.c: Likewise.
* gcc.dg/pr34457-1.c: Likewise.
* gcc.dg/pr34457-2.c: Likewise.
* gcc.dg/pr34668-1.c: Likewise.
* gcc.dg/pr34668-2.c: Likewise.
* gcc.dg/pr34989-1.c: Likewise.
* gcc.dg/pr34989-2.c: Likewise.
* gcc.dg/pr43557-1.c: Likewise.
* gcc.dg/pr43557-2.c: Likewise.
* gcc.dg/debug/pr41893-1.c: Likewise.
* gcc.dg/matrix/matrix.exp: Do not use -combine.
* gcc.dg/matrix/matrix-3.c: Drop dg-options.
* gcc.dg/matrix/matrix-4.c: Likewise.
* gcc.dg/struct/struct-reorg.exp: Do not use -combine.
* gcc.dg/struct/wo_prof_empty_str.c: Drop dg-options.
* gcc.dg/struct/wo_prof_escape_arg_to_local.c: Likewise.
* gcc.dg/struct/wo_prof_escape_return.c: Likewise.
2010-09-16 Tobias Burnus <burnus@net-b.de>
PR fortran/43665

View File

@ -1,6 +1,7 @@
/* PR debug/41893 */
/* { dg-do compile } */
/* { dg-options "-combine -fwhole-program -O" } */
/* { dg-do link } */
/* { dg-require-effective-target-lto } */
/* { dg-options "-flto -fwhole-program -O -r -nostdlib" } */
/* { dg-additional-sources "pr41893-2.c" } */
struct S { int v; };

View File

@ -1,6 +1,4 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -c -fwhole-program -combine" } */
#include <stdio.h>
#include <stdlib.h>

View File

@ -1,6 +1,4 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -c -fwhole-program -combine" } */
#include <stdio.h>
#include <stdlib.h>

View File

@ -19,7 +19,7 @@
load_lib gcc-dg.exp
load_lib target-supports.exp
set DEFAULT_MATCFLAGS "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -fwhole-program -combine"
set DEFAULT_MATCFLAGS "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -fwhole-program"
# Initialize `dg'.
dg-init
@ -52,7 +52,7 @@ load_lib profopt.exp
# needed to generate profile data, the second is options to use the
# profile data.
set profile_option "-fprofile-generate -O3"
set feedback_option "-fprofile-use -fipa-matrix-reorg -fdump-ipa-matrix-reorg -O3 -fwhole-program -combine"
set feedback_option "-fprofile-use -fipa-matrix-reorg -fdump-ipa-matrix-reorg -O3 -fwhole-program"
foreach src [lsort [glob -nocomplain $srcdir/$subdir/transpose-*.c]] {
# If we're only testing specific files and this isn't one of them, skip it.

View File

@ -1,6 +1,7 @@
/* PR c/27898 */
/* { dg-do compile } */
/* { dg-options "--combine" } */
/* { dg-do link } */
/* { dg-require-effective-target-lto } */
/* { dg-options "-flto -r -nostdlib" } */
/* { dg-additional-sources "pr27898.c" } */
union u { struct { int i; }; };

View File

@ -1,6 +1,7 @@
/* PR c/28706 */
/* { dg-do compile } */
/* { dg-options "--combine" } */
/* { dg-do link } */
/* { dg-require-effective-target-lto } */
/* { dg-options "-flto -r -nostdlib" } */
/* { dg-additional-sources "pr28706.c" } */
struct A

View File

@ -1,6 +1,7 @@
/* PR c/28712 */
/* { dg-do compile } */
/* { dg-options "--combine" } */
/* { dg-do link } */
/* { dg-require-effective-target-lto } */
/* { dg-options "-flto -r -nostdlib" } */
/* { dg-additional-sources "pr28712.c pr28712.c" } */
struct A;

View File

@ -1,6 +1,7 @@
/* PR c/30762 */
/* { dg-do compile } */
/* { dg-options "--combine -O3" } */
/* { dg-do link } */
/* { dg-require-effective-target-lto } */
/* { dg-options "-flto -r -nostdlib -O3" } */
/* { dg-additional-sources pr30762-2.c } */
typedef struct { int i; } D;

View File

@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-combine" } */
/* { dg-do link } */
/* { dg-require-effective-target-lto } */
/* { dg-options "-flto -r -nostdlib" } */
/* { dg-additional-sources "pr31529-2.c" } */
getline ()

View File

@ -1,7 +1,8 @@
/* PR c/34457 */
/* { dg-do compile } */
/* { dg-do link } */
/* { dg-require-effective-target trampolines } */
/* { dg-options "--combine -O2" } */
/* { dg-require-effective-target-lto } */
/* { dg-options "-flto -r -nostdlib -O2" } */
/* { dg-additional-sources "pr34457-2.c" } */

View File

@ -1,6 +1,7 @@
/* PR c/34668 */
/* { dg-do compile } */
/* { dg-options "--combine -O2" } */
/* { dg-do link } */
/* { dg-require-effective-target-lto } */
/* { dg-options "-flto -r -nostdlib -O2" } */
/* { dg-additional-sources "pr34668-2.c" } */
struct optab { unsigned code; };

View File

@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "--combine -O2" } */
/* { dg-do link } */
/* { dg-require-effective-target-lto } */
/* { dg-options "-flto -r -nostdlib -O2" } */
/* { dg-additional-sources "pr34989-2.c" } */
extern struct globals *const ptr_to_globals;

View File

@ -1,6 +1,7 @@
/* PR debug/43557 */
/* { dg-do compile } */
/* { dg-options "--combine -g -O2" } */
/* { dg-do link } */
/* { dg-require-effective-target-lto } */
/* { dg-options "-flto -r -nostdlib -g -O2" } */
/* { dg-additional-sources "pr43557-2.c" } */
struct S

View File

@ -20,7 +20,7 @@
load_lib gcc-dg.exp
load_lib target-supports.exp
set STRUCT_REORG_CFLAGS "-O3 -fipa-struct-reorg -fdump-ipa-all -fwhole-program -combine"
set STRUCT_REORG_CFLAGS "-O3 -fipa-struct-reorg -fdump-ipa-all -fwhole-program"
# Initialize `dg'.
dg-init
@ -51,7 +51,7 @@ load_lib profopt.exp
# These are globals used by profopt-execute. The first is options
# needed to generate profile data, the second is options to use the
# profile data.
set common "-O3 -fwhole-program -combine"
set common "-O3 -fwhole-program"
set profile_option [concat $common " -fprofile-generate"]
set feedback_option [concat $common " -fprofile-use -fipa-struct-reorg -fdump-ipa-all"]

View File

@ -1,5 +1,3 @@
/* { dg-options "-O3 -fno-inline -fdump-ipa-all -fipa-struct-reorg -fwhole-program -combine" } */
/* { dg-do compile } */
/* { dg-do run } */
#include <stdlib.h>

View File

@ -1,5 +1,3 @@
/* { dg-options "-O3 -fno-inline -fno-ipa-sra -fdump-ipa-all -fipa-struct-reorg -fwhole-program -combine" } */
/* { dg-do compile } */
/* { dg-do run } */
#include <stdlib.h>

View File

@ -1,5 +1,3 @@
/* { dg-options "-O3 -fno-inline -fdump-ipa-all -fipa-struct-reorg -fwhole-program -combine" } */
/* { dg-do compile } */
/* { dg-do run } */
#include <stdlib.h>