* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164357
138bc75d-0d04-0410-961f-
82ee72b054a4
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
* builtins.c (fold_builtin_memory_op): Always properly adjust
alignment of memory accesses.
auxbase-strip
Common Separate RejectDriver
-combine
-Driver Var(combine_flag)
-
c
Driver
@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
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
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}}).
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.
{".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. */
%{!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},
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},
{"--classpath", "-fclasspath=", "aj"},
{"--bootclasspath", "-fbootclasspath=", "aj"},
{"--CLASSPATH", "-fclasspath=", "aj"},
- {"--combine", "-combine", 0},
{"--comments", "-C", 0},
{"--comments-in-macros", "-CC", 0},
{"--compile", "-c", 0},
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 (_("\
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. */
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++)
{
}
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++)
{
/* 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)
{
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)
{
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));
+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
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=
+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
/* 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; };
/* { dg-do compile } */
-/* { dg-options "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -c -fwhole-program -combine" } */
-
#include <stdio.h>
#include <stdlib.h>
/* { dg-do compile } */
-/* { dg-options "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -c -fwhole-program -combine" } */
-
#include <stdio.h>
#include <stdlib.h>
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
# 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.
/* 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; }; };
/* 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
/* 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;
/* 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;
-/* { 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 ()
/* 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" } */
/* 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; };
-/* { 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;
/* 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
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
# 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"]
-/* { dg-options "-O3 -fno-inline -fdump-ipa-all -fipa-struct-reorg -fwhole-program -combine" } */
-/* { dg-do compile } */
/* { dg-do run } */
#include <stdlib.h>
-/* { 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>
-/* { dg-options "-O3 -fno-inline -fdump-ipa-all -fipa-struct-reorg -fwhole-program -combine" } */
-/* { dg-do compile } */
/* { dg-do run } */
#include <stdlib.h>