This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Remove -combine support


This removes -combine which is superseeded by LTO.  The patch only
removes documentation and driver code and moves testcases to use
LTO instead of -combine.  There is still --enable-intermodule
configury and makefile pieces using -combine, I leave that for a
followup.

Bootstrapped on x86_64-unknown-linux-gnu, testing in progress
(I suppose it'll find some more testcases using -combine).

I'll writeup an entry for changes.html after this patch went in.

Ok for trunk?

Thanks,
Richard.

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

	* common.opt (combine): Remove.
	* gcc.c (struct compiler): Rename combinable field.
	(default_compilers): Remove specs testing combine.
	(option_map): Remove -combine.
	(combine_inputs): Remove.
	(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.

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

Index: gcc/common.opt
===================================================================
*** gcc/common.opt	(revision 164331)
--- gcc/common.opt	(working copy)
*************** Common Separate RejectDriver
*** 309,317 ****
  auxbase-strip
  Common Separate RejectDriver
  
- combine
- Driver Var(combine_flag)
- 
  c
  Driver
  
--- 309,314 ----
Index: gcc/doc/invoke.texi
===================================================================
*** gcc/doc/invoke.texi	(revision 164331)
--- gcc/doc/invoke.texi	(working copy)
*************** in the following sections.
*** 161,167 ****
  @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
  -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
--- 161,167 ----
  @table @emph
  @item Overall Options
  @xref{Overall Options,,Options Controlling the Kind of Output}.
! @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
*************** various stages of compilation.  This fai
*** 1195,1217 ****
  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
--- 1195,1200 ----
*************** layout in order to better utilize spatia
*** 6757,6763 ****
  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
  enabled.  Structures considered @samp{cold} by this transformation are not
  affected (see @option{--param struct-reorg-cold-struct-ratio=@var{value}}).
  
--- 6740,6746 ----
  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} to be
  enabled.  Structures considered @samp{cold} by this transformation are not
  affected (see @option{--param struct-reorg-cold-struct-ratio=@var{value}}).
  
*************** and those merged by attribute @code{exte
*** 7462,7468 ****
  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
  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.
--- 7445,7451 ----
  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{-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.
Index: gcc/gcc.c
===================================================================
*** gcc/gcc.c	(revision 164332)
--- gcc/gcc.c	(working copy)
*************** struct compiler
*** 909,916 ****
    const char *cpp_spec;         /* If non-NULL, substitute this spec
  				   for `%C', rather than the usual
  				   cpp_spec.  */
!   const int combinable;          /* If nonzero, compiler can deal with
! 				    multiple source files at once (IMA).  */
    const int needs_preprocessing; /* If nonzero, source files need to
  				    be run through a preprocessor.  */
  };
--- 909,915 ----
    const char *cpp_spec;         /* If non-NULL, substitute this spec
  				   for `%C', rather than the usual
  				   cpp_spec.  */
!   const int unused;
    const int needs_preprocessing; /* If nonzero, source files need to
  				    be run through a preprocessor.  */
  };
*************** static const struct compiler default_com
*** 967,986 ****
        %{!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},
    {"-",
     "%{!E:%e-E or -x required when input is from standard input}\
      %(trad_capable_cpp) %(cpp_options) %(cpp_debug_options)", 0, 0, 0},
--- 966,978 ----
        %{!E:%{!M:%{!MM:\
            %{traditional|ftraditional:\
  %eGNU C no longer supports -traditional without -E}\
!       %{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, 1, 1},
    {"-",
     "%{!E:%e-E or -x required when input is from standard input}\
      %(trad_capable_cpp) %(cpp_options) %(cpp_debug_options)", 0, 0, 0},
*************** static const struct option_map option_ma
*** 1078,1084 ****
     {"--classpath", "-fclasspath=", "aj"},
     {"--bootclasspath", "-fbootclasspath=", "aj"},
     {"--CLASSPATH", "-fclasspath=", "aj"},
-    {"--combine", "-combine", 0},
     {"--comments", "-C", 0},
     {"--comments-in-macros", "-CC", 0},
     {"--compile", "-c", 0},
--- 1070,1075 ----
*************** int n_infiles;
*** 3217,3227 ****
  
  static int n_infiles_alloc;
  
- /* True if multiple input files are being compiled to a single
-    assembly file.  */
- 
- static bool combine_inputs;
- 
  /* This counts the number of libraries added by lang_specific_driver, so that
     we can tell if there were any user supplied any files or libraries.  */
  
--- 3208,3213 ----
*************** display_help (void)
*** 3322,3328 ****
    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 (_("\
--- 3308,3313 ----
*************** driver_handle_option (const struct cl_de
*** 3761,3769 ****
  
      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.  */
        break;
--- 3746,3752 ----
  
      case OPT_pipe:
        validated = true;
!       /* This option sets the variables specified in common.opt
  	 automatically, but do need to be saved for spec
  	 processing.  */
        break;
*************** create_at_file (char **argv)
*** 4786,4802 ****
    record_temp_file (temp_file, !save_temps_flag, !save_temps_flag);
  }
  
- /* True if we should compile INFILE. */
- 
- static bool
- compile_input_file_p (struct infile *infile)
- {
-   if ((!infile->language) || (infile->language[0] != '*'))
-     if (infile->incompiler == input_file_compiler)
-       return true;
-   return false;
- }
- 
  /* Process the sub-spec SPEC as a portion of a larger spec.
     This is like processing a whole spec except that we do
     not initialize at the beginning and we do not supply a
--- 4769,4774 ----
*************** do_spec_1 (const char *spec, int inswitc
*** 5174,5223 ****
  	    break;
  
  	  case 'i':
! 	    if (combine_inputs)
! 	      {
! 		if (at_file_supplied)
! 		  {
! 		    /* We are going to expand `%i' to `@FILE', where FILE
! 		       is a newly-created temporary filename.  The filenames
! 		       that would usually be expanded in place of %o will be
! 		       written to the temporary file.  */
! 		    char **argv;
! 		    int n_files = 0;
! 		    int j;
! 
! 		    for (i = 0; i < n_infiles; i++)
! 		      if (compile_input_file_p (&infiles[i]))
! 			n_files++;
! 
! 		    argv = (char **) alloca (sizeof (char *) * (n_files + 1));
! 
! 		    /* Copy the strings over.  */
! 		    for (i = 0, j = 0; i < n_infiles; i++)
! 		      if (compile_input_file_p (&infiles[i]))
! 			{
! 			  argv[j] = CONST_CAST (char *, infiles[i].name);
! 			  infiles[i].compiled = true;
! 			  j++;
! 			}
! 		    argv[j] = NULL;
! 
! 		    create_at_file (argv);
! 		  }
! 		else
! 		  for (i = 0; (int) i < n_infiles; i++)
! 		    if (compile_input_file_p (&infiles[i]))
! 		      {
! 			store_arg (infiles[i].name, 0, 0);
! 			infiles[i].compiled = true;
! 		      }
! 	      }
! 	    else
! 	      {
! 		obstack_grow (&obstack, gcc_input_filename,
! 			      input_filename_length);
! 		arg_going = 1;
! 	      }
  	    break;
  
  	  case 'I':
--- 5146,5154 ----
  	    break;
  
  	  case 'i':
! 	    obstack_grow (&obstack, gcc_input_filename,
! 			  input_filename_length);
! 	    arg_going = 1;
  	    break;
  
  	  case 'I':
*************** warranty; not even for MERCHANTABILITY o
*** 7003,7013 ****
  
    explicit_link_files = XCNEWVEC (char, n_infiles);
  
-   if (combine_flag)
-     combine_inputs = true;
-   else
-     combine_inputs = false;
- 
    for (i = 0; (int) i < n_infiles; i++)
      {
        const char *name = infiles[i].name;
--- 6934,6939 ----
*************** warranty; not even for MERCHANTABILITY o
*** 7015,7023 ****
  						   strlen (name),
  						   infiles[i].language);
  
-       if (compiler && !(compiler->combinable))
- 	combine_inputs = false;
- 
        if (lang_n_infiles > 0 && compiler != input_file_compiler
  	  && infiles[i].language && infiles[i].language[0] != '*')
  	infiles[i].incompiler = compiler;
--- 6941,6946 ----
*************** warranty; not even for MERCHANTABILITY o
*** 7038,7102 ****
        infiles[i].preprocessed = false;
      }
  
!   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;
-     }
- 
    for (i = 0; (int) i < n_infiles; i++)
      {
        int this_file_error = 0;
--- 6961,6969 ----
        infiles[i].preprocessed = false;
      }
  
!   if (have_c && have_o && lang_n_infiles > 1)
     fatal_error ("cannot specify -o with -c, -S or -E with multiple files");
  
    for (i = 0; (int) i < n_infiles; i++)
      {
        int this_file_error = 0;
*************** warranty; not even for MERCHANTABILITY o
*** 7115,7126 ****
  
        /* 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;
  
        if (input_file_compiler)
  	{
--- 6982,6990 ----
  
        /* Figure out which compiler from the file's suffix.  */
  
!       input_file_compiler
! 	= lookup_compiler (infiles[i].name, input_filename_length,
! 			   infiles[i].language);
  
        if (input_file_compiler)
  	{
Index: gcc/testsuite/gcc.dg/pr27898.c
===================================================================
*** gcc/testsuite/gcc.dg/pr27898.c	(revision 164332)
--- gcc/testsuite/gcc.dg/pr27898.c	(working copy)
***************
*** 1,6 ****
  /* PR c/27898 */
! /* { dg-do compile } */
! /* { dg-options "--combine" } */
  /* { dg-additional-sources "pr27898.c" } */
  
  union u { struct { int i; }; };
--- 1,7 ----
  /* PR c/27898 */
! /* { dg-do link } */
! /* { dg-require-effective-target-lto } */
! /* { dg-options "-flto -r -nostdlib" } */
  /* { dg-additional-sources "pr27898.c" } */
  
  union u { struct { int i; }; };
Index: gcc/testsuite/gcc.dg/pr28706.c
===================================================================
*** gcc/testsuite/gcc.dg/pr28706.c	(revision 164332)
--- gcc/testsuite/gcc.dg/pr28706.c	(working copy)
***************
*** 1,6 ****
  /* PR c/28706 */
! /* { dg-do compile } */
! /* { dg-options "--combine" } */
  /* { dg-additional-sources "pr28706.c" } */
  
  struct A
--- 1,7 ----
  /* PR c/28706 */
! /* { dg-do link } */
! /* { dg-require-effective-target-lto } */
! /* { dg-options "-flto -r -nostdlib" } */
  /* { dg-additional-sources "pr28706.c" } */
  
  struct A
Index: gcc/testsuite/gcc.dg/pr28712.c
===================================================================
*** gcc/testsuite/gcc.dg/pr28712.c	(revision 164332)
--- gcc/testsuite/gcc.dg/pr28712.c	(working copy)
***************
*** 1,6 ****
  /* PR c/28712 */
! /* { dg-do compile } */
! /* { dg-options "--combine" } */
  /* { dg-additional-sources "pr28712.c pr28712.c" } */
  
  struct A;
--- 1,7 ----
  /* PR c/28712 */
! /* { dg-do link } */
! /* { dg-require-effective-target-lto } */
! /* { dg-options "-flto -r -nostdlib" } */
  /* { dg-additional-sources "pr28712.c pr28712.c" } */
  
  struct A;
Index: gcc/testsuite/gcc.dg/pr30762-1.c
===================================================================
*** gcc/testsuite/gcc.dg/pr30762-1.c	(revision 164332)
--- gcc/testsuite/gcc.dg/pr30762-1.c	(working copy)
***************
*** 1,6 ****
  /* PR c/30762 */
! /* { dg-do compile } */
! /* { dg-options "--combine -O3" } */
  /* { dg-additional-sources pr30762-2.c } */
  
  typedef struct { int i; } D;
--- 1,7 ----
  /* PR c/30762 */
! /* { 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;
Index: gcc/testsuite/gcc.dg/pr31529-1.c
===================================================================
*** gcc/testsuite/gcc.dg/pr31529-1.c	(revision 164332)
--- gcc/testsuite/gcc.dg/pr31529-1.c	(working copy)
***************
*** 1,5 ****
! /* { dg-do compile } */
! /* { dg-options "-combine" } */
  /* { dg-additional-sources "pr31529-2.c" } */
  
  getline ()
--- 1,6 ----
! /* { dg-do link } */
! /* { dg-require-effective-target-lto } */
! /* { dg-options "-flto -r -nostdlib" } */
  /* { dg-additional-sources "pr31529-2.c" } */
  
  getline ()
Index: gcc/testsuite/gcc.dg/pr34457-1.c
===================================================================
*** gcc/testsuite/gcc.dg/pr34457-1.c	(revision 164332)
--- gcc/testsuite/gcc.dg/pr34457-1.c	(working copy)
***************
*** 1,7 ****
  /* PR c/34457 */
! /* { dg-do compile } */
  /* { dg-require-effective-target trampolines } */
! /* { dg-options "--combine -O2" } */
  /* { dg-additional-sources "pr34457-2.c" } */
     
  
--- 1,8 ----
  /* PR c/34457 */
! /* { dg-do link } */
  /* { dg-require-effective-target trampolines } */
! /* { dg-require-effective-target-lto } */
! /* { dg-options "-flto -r -nostdlib -O2" } */
  /* { dg-additional-sources "pr34457-2.c" } */
     
  
Index: gcc/testsuite/gcc.dg/pr34668-1.c
===================================================================
*** gcc/testsuite/gcc.dg/pr34668-1.c	(revision 164332)
--- gcc/testsuite/gcc.dg/pr34668-1.c	(working copy)
***************
*** 1,6 ****
  /* PR c/34668 */
! /* { dg-do compile } */
! /* { dg-options "--combine -O2" } */
  /* { dg-additional-sources "pr34668-2.c" } */
  
  struct optab { unsigned code; };
--- 1,7 ----
  /* PR c/34668 */
! /* { dg-do link } */
! /* { dg-require-effective-target-lto } */
! /* { dg-options "-flto -r -nostdlib -O2" } */
  /* { dg-additional-sources "pr34668-2.c" } */
  
  struct optab { unsigned code; };
Index: gcc/testsuite/gcc.dg/pr34989-1.c
===================================================================
*** gcc/testsuite/gcc.dg/pr34989-1.c	(revision 164332)
--- gcc/testsuite/gcc.dg/pr34989-1.c	(working copy)
***************
*** 1,5 ****
! /* { dg-do compile } */
! /* { dg-options "--combine -O2" } */
  /* { dg-additional-sources "pr34989-2.c" } */
  
  extern struct globals *const ptr_to_globals;
--- 1,6 ----
! /* { 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;
Index: gcc/testsuite/gcc.dg/pr43557-1.c
===================================================================
*** gcc/testsuite/gcc.dg/pr43557-1.c	(revision 164332)
--- gcc/testsuite/gcc.dg/pr43557-1.c	(working copy)
***************
*** 1,6 ****
  /* PR debug/43557 */
! /* { dg-do compile } */
! /* { dg-options "--combine -g -O2" } */
  /* { dg-additional-sources "pr43557-2.c" } */
  
  struct S
--- 1,7 ----
  /* PR debug/43557 */
! /* { dg-do link } */
! /* { dg-require-effective-target-lto } */
! /* { dg-options "-flto -r -nostdlib -g -O2" } */
  /* { dg-additional-sources "pr43557-2.c" } */
  
  struct S


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]