> Hi,
> this is polished version of the patch to implement IL level incremental 
> inking.
> -flinker-output is now documented and can be specified to the GCC driver.
> In this case plugin gets option -linker-output-known and it stops from
> attempts to detect it from info passed down by linker. I also added doc for
> the flag to invoke.texi
> 
> Modulo the testsuite compensation the rest of patch is basically unchanged
> since earlier version: lto-wrapper looks for linker-output flag and switches 
> to
> non-WPA mode (because we do not want to execute ltrans compilatoins) and lto
> frontends configure the compiler to output IL and possibly flat lto binary to
> the object file.
> 
> Bootstrapped/regtested x86_64-linux, OK?
Hmm and now for the fun part.  I just noticed that the patch works well with 
both
GNU LD and Gold from my system instalation, wich is

GNU gold (GNU Binutils 2.24.51.20140405) 1.11

while newer version:

GNU gold (GNU Binutils 2.25.51.20150520) 1.11

fails with:

/tmp/ccPIuUSA.lto.o: plugin needed to handle lto object

in the final stage of incremental linking.  This seems like binutils bug - the
message should be output only if there are LTO objects not claimed by the linker
before invoking the plugin. There is no need to error out when plugin itself
produce IL for incremental linking.

I will check if new version fixes it and fill in PR.  I suppose I can whitelist
ld versions in the plugin and enable -flinker-output=rel only on binutils
version where this works. There is LDPT_GOLD_VERSION which tells me the
info.  I will update patch accordingly and check what version range refuses to
finish the link.

Honza

> 
> Honza
> 
>       * lto-plugin.c: Document options; add -linker-output-known;
>       determine when to use rel and when nolto-rel output.
> 
>       * lto-wrapper.c (run_gcc): Look for -flinker-output=rel also in the
>       list of options passed from the driver.
>       * passes.c (ipa_write_summaries): Only modify statements if body
>       is in memory.
>       * cgraphunit.c (ipa_passes): Also produce intermeidate code when
>       incrementally linking.
>       (ipa_passes): LIkewise.
>       * lto-cgraph.c (lto_output_node): When incrementally linking do not
>       pass down resolution info.
>       * common.opt (flag_incremental_link): Update info.
>       * gcc.c (plugin specs): Turn flinker-output=* to
>       -plugin-opt=-linker-output-known
>       * toplev.c (compile_file): Also cut compilation when doing incremental
>       link.
>       * flag-types.h (enum lto_partition_model): Add
>       LTO_LINKER_OUTPUT_NOLTOREL.
>       (invoke.texi): Add -flinker-output docs.
> 
>       * lang.opt (lto_linker_output): Add nolto-rel.
>       * lto-lang.c (lto_post_options): Handle LTO_LINKER_OUTPUT_REL
>       and LTO_LINKER_OUTPUT_NOLTOREL:.
>       (lto_init): Generate lto when doing incremental link.
> 
>       * gcc.dg/lto/20081120-2_0.c: Add -flinker-output=nolto-rel
>       * gcc.dg/lto/20090126-1_0.c: Likewise.
>       * gcc.dg/lto/20091020-2_0.c: Likewise.
>       * gcc.dg/lto/20081204-2_0.c: Likewise.
>       * gcc.dg/lto/20091015-1_0.c: Likewise.
>       * gcc.dg/lto/20090126-2_0.c: Likewiwe.
>       * gcc.dg/lto/20090116_0.c: Likewise.
>       * gcc.dg/lto/20081224_0.c: Likewise.
>       * gcc.dg/lto/20091027-1_0.c: Likewise.
>       * gcc.dg/lto/20090219_0.c: Likewise.
>       * gcc.dg/lto/20081212-1_0.c: Likewise.
>       * gcc.dg/lto/20091013-1_0.c: Likewise.
>       * gcc.dg/lto/20081126_0.c: Likewise.
>       * gcc.dg/lto/20090206-1_0.c: Likewise.
>       * gcc.dg/lto/20091016-1_0.c: Likewise.
>       * gcc.dg/lto/20081120-1_0.c: Likewise.
>       * gcc.dg/lto/20091020-1_0.c: Likewise.
>       * gcc.dg/lto/20100426_0.c: Likewise.
>       * gcc.dg/lto/20081204-1_0.c: Likewise.
>       * gcc.dg/lto/20091014-1_0.c: Likewise.
>       * g++.dg/lto/20081109-1_0.C: Likewise.
>       * g++.dg/lto/20100724-1_0.C: Likewise.
>       * g++.dg/lto/20081204-1_0.C: Likewise.
>       * g++.dg/lto/pr45679-2_0.C: Likewise.
>       * g++.dg/lto/20110311-1_0.C: Likewise.
>       * g++.dg/lto/20090302_0.C: Likewise.
>       * g++.dg/lto/20081118_0.C: Likewise.
>       * g++.dg/lto/20091002-2_0.C: Likewise.
>       * g++.dg/lto/20081120-2_0.C: Likewise.
>       * g++.dg/lto/20081123_0.C: Likewise.
>       * g++.dg/lto/20090313_0.C: Likewise.
>       * g++.dg/lto/pr54625-1_0.c: Likewise.
>       * g++.dg/lto/pr48354-1_0.C: Likewise.
>       * g++.dg/lto/20081219_0.C: Likewise.
>       * g++.dg/lto/pr48042_0.C: Likewise.
>       * g++.dg/lto/20101015-2_0.C: Likewise.
>       * g++.dg/lto/pr45679-1_0.C: Likewise.
>       * g++.dg/lto/20091026-1_0.C: Likewise.
>       * g++.dg/lto/pr45621_0.C: Likewise.
>       * g++.dg/lto/20081119-1_0.C: Likewise.
>       * g++.dg/lto/20101010-4_0.C: Likewise.
>       * g++.dg/lto/20081120-1_0.C: Likewise.
>       * g++.dg/lto/20091002-1_0.C: Likewise.
>       * g++.dg/lto/20091002-3_0.C: Likewise.
>       * gfortran.dg/lto/20091016-1_0.f90: Likewise.
>       * gfortran.dg/lto/pr47839_0.f90: Likewise.
>       * gfortran.dg/lto/pr46911_0.f: Likewise.
>       * gfortran.dg/lto/20091028-1_0.f90: Likewise.
>       * gfortran.dg/lto/20091028-2_0.f90: Likewise.
> Index: lto-plugin/lto-plugin.c
> ===================================================================
> --- lto-plugin/lto-plugin.c   (revision 231081)
> +++ lto-plugin/lto-plugin.c   (working copy)
> @@ -27,10 +27,13 @@ along with this program; see the file CO
>     More information at http://gcc.gnu.org/wiki/whopr/driver.
>  
>     This plugin should be passed the lto-wrapper options and will forward 
> them.
> -   It also has 2 options of its own:
> +   It also has options at his own:
>     -debug: Print the command line used to run lto-wrapper.
>     -nop: Instead of running lto-wrapper, pass the original to the plugin. 
> This
> -   only works if the input files are hybrid.  */
> +   only works if the input files are hybrid. 
> +   -linker-output-known: Do not determine linker output
> +   -sym-style={none,win32,underscore|uscore}
> +   -pass-through  */
>  
>  #ifdef HAVE_CONFIG_H
>  #include "config.h"
> @@ -151,6 +154,7 @@ static ld_plugin_add_symbols add_symbols
>  
>  static struct plugin_file_info *claimed_files = NULL;
>  static unsigned int num_claimed_files = 0;
> +static unsigned int non_claimed_files = 0;
>  
>  static struct plugin_file_info *offload_files = NULL;
>  static unsigned int num_offload_files = 0;
> @@ -169,6 +173,7 @@ static char nop;
>  static char *resolution_file = NULL;
>  static enum ld_plugin_output_file_type linker_output;
>  static int linker_output_set;
> +static int linker_output_known;
>  
>  /* The version of gold being used, or -1 if not gold.  The number is
>     MAJOR * 100 + MINOR.  */
> @@ -626,7 +631,8 @@ all_symbols_read_handler (void)
>  {
>    unsigned i;
>    unsigned num_lto_args
> -    = num_claimed_files + num_offload_files + lto_wrapper_num_args + 2;
> +    = num_claimed_files + num_offload_files + lto_wrapper_num_args + 1
> +      + !linker_output_known;
>    char **lto_argv;
>    const char *linker_output_str;
>    const char **lto_arg_ptr;
> @@ -651,26 +657,38 @@ all_symbols_read_handler (void)
>    for (i = 0; i < lto_wrapper_num_args; i++)
>      *lto_arg_ptr++ = lto_wrapper_argv[i];
>  
> -  assert (linker_output_set);
> -  switch (linker_output)
> +  if (!linker_output_known)
>      {
> -    case LDPO_REL:
> -      linker_output_str = "-flinker-output=rel";
> -      break;
> -    case LDPO_DYN:
> -      linker_output_str = "-flinker-output=dyn";
> -      break;
> -    case LDPO_PIE:
> -      linker_output_str = "-flinker-output=pie";
> -      break;
> -    case LDPO_EXEC:
> -      linker_output_str = "-flinker-output=exec";
> -      break;
> -    default:
> -      message (LDPL_FATAL, "unsupported linker output %i", linker_output);
> -      break;
> +      assert (linker_output_set);
> +      switch (linker_output)
> +     {
> +     case LDPO_REL:
> +       if (non_claimed_files)
> +         {
> +           message (LDPL_WARNING, "incremental linking of LTO and non-LTO "
> +                    "objects; using -flinker-output=nolto-rel which will "
> +                    "bypass whole program optimization");
> +           linker_output_str = "-flinker-output=nolto-rel";
> +         }
> +       else
> +         linker_output_str = "-flinker-output=rel";
> +       break;
> +     case LDPO_DYN:
> +       linker_output_str = "-flinker-output=dyn";
> +       break;
> +     case LDPO_PIE:
> +       linker_output_str = "-flinker-output=pie";
> +       break;
> +     case LDPO_EXEC:
> +       linker_output_str = "-flinker-output=exec";
> +       break;
> +     default:
> +       message (LDPL_FATAL, "unsupported linker output %i", linker_output);
> +       linker_output_str = "";
> +       break;
> +     }
> +      *lto_arg_ptr++ = xstrdup (linker_output_str);
>      }
> -  *lto_arg_ptr++ = xstrdup (linker_output_str);
>    for (i = 0; i < num_claimed_files; i++)
>      {
>        struct plugin_file_info *info = &claimed_files[i];
> @@ -1023,6 +1041,7 @@ claim_file_handler (const struct ld_plug
>    goto cleanup;
>  
>   err:
> +  non_claimed_files++;
>    free (lto_file.name);
>  
>   cleanup:
> @@ -1037,6 +1056,8 @@ claim_file_handler (const struct ld_plug
>  static void
>  process_option (const char *option)
>  {
> +  if (strcmp (option, "-linker-output-known") == 0)
> +    linker_output_known = 1;
>    if (strcmp (option, "-debug") == 0)
>      debug = 1;
>    else if (strcmp (option, "-nop") == 0)
> Index: gcc/lto-wrapper.c
> ===================================================================
> --- gcc/lto-wrapper.c (revision 231081)
> +++ gcc/lto-wrapper.c (working copy)
> @@ -912,6 +912,7 @@ run_gcc (unsigned argc, char *argv[])
>    bool have_offload = false;
>    unsigned lto_argc = 0, offload_argc = 0;
>    char **lto_argv, **offload_argv;
> +  bool linker_output_rel = false;
>  
>    /* Get the driver and options.  */
>    collect_gcc = getenv ("COLLECT_GCC");
> @@ -953,9 +954,12 @@ run_gcc (unsigned argc, char *argv[])
>         file_offset = (off_t) loffset;
>       }
>        fd = open (filename, O_RDONLY | O_BINARY);
> +      /* Linker plugin passes -fresolution and -flinker-output options.  */
>        if (fd == -1)
>       {
>         lto_argv[lto_argc++] = argv[i];
> +       if (strcmp (argv[i], "-flinker-output=rel") == 0)
> +         linker_output_rel = true;
>         continue;
>       }
>  
> @@ -1029,11 +1033,18 @@ run_gcc (unsigned argc, char *argv[])
>         lto_mode = LTO_MODE_WHOPR;
>         break;
>  
> +     case OPT_flinker_output_:
> +       linker_output_rel = !strcmp (option->arg, "rel");
> +       break;
> +
>       default:
>         break;
>       }
>      }
>  
> +  if (linker_output_rel)
> +    no_partition = true;
> +
>    if (no_partition)
>      {
>        lto_mode = LTO_MODE_LTO;
> Index: gcc/passes.c
> ===================================================================
> --- gcc/passes.c      (revision 231081)
> +++ gcc/passes.c      (working copy)
> @@ -2530,7 +2530,7 @@ ipa_write_summaries (void)
>      {
>        struct cgraph_node *node = order[i];
>  
> -      if (node->has_gimple_body_p ())
> +      if (gimple_has_body_p (node->decl))
>       {
>         /* When streaming out references to statements as part of some IPA
>            pass summary, the statements need to have uids assigned and the
> Index: gcc/cgraphunit.c
> ===================================================================
> --- gcc/cgraphunit.c  (revision 231081)
> +++ gcc/cgraphunit.c  (working copy)
> @@ -2270,8 +2270,10 @@ ipa_passes (void)
>    if (flag_generate_lto || flag_generate_offload)
>      targetm.asm_out.lto_start ();
>  
> -  if (!in_lto_p)
> +  if (!in_lto_p || flag_incremental_link == 2)
>      {
> +      if (!quiet_flag)
> +     fprintf (stderr, "Streaming LTO\n");
>        if (g->have_offload)
>       {
>         section_name_prefix = OFFLOAD_SECTION_NAME_PREFIX;
> @@ -2290,7 +2292,9 @@ ipa_passes (void)
>    if (flag_generate_lto || flag_generate_offload)
>      targetm.asm_out.lto_end ();
>  
> -  if (!flag_ltrans && (in_lto_p || !flag_lto || flag_fat_lto_objects))
> +  if (!flag_ltrans
> +      && ((in_lto_p && flag_incremental_link != 2)
> +       || !flag_lto || flag_fat_lto_objects))
>      execute_ipa_pass_list (passes->all_regular_ipa_passes);
>    invoke_plugin_callbacks (PLUGIN_ALL_IPA_PASSES_END, NULL);
>  
> @@ -2381,7 +2385,8 @@ symbol_table::compile (void)
>  
>    /* Do nothing else if any IPA pass found errors or if we are just 
> streaming LTO.  */
>    if (seen_error ()
> -      || (!in_lto_p && flag_lto && !flag_fat_lto_objects))
> +      || ((!in_lto_p || flag_incremental_link == 2)
> +       && flag_lto && !flag_fat_lto_objects))
>      {
>        timevar_pop (TV_CGRAPHOPT);
>        return;
> Index: gcc/lto-cgraph.c
> ===================================================================
> --- gcc/lto-cgraph.c  (revision 231081)
> +++ gcc/lto-cgraph.c  (working copy)
> @@ -534,7 +534,10 @@ lto_output_node (struct lto_simple_outpu
>    bp_pack_value (&bp, node->thunk.thunk_p, 1);
>    bp_pack_value (&bp, node->parallelized_function, 1);
>    bp_pack_enum (&bp, ld_plugin_symbol_resolution,
> -             LDPR_NUM_KNOWN, node->resolution);
> +             LDPR_NUM_KNOWN,
> +             /* When doing incremental link, we will get new resolution
> +                info next time we process the file.  */
> +             flag_incremental_link ? LDPR_UNKNOWN : node->resolution);
>    bp_pack_value (&bp, node->instrumentation_clone, 1);
>    bp_pack_value (&bp, node->split_part, 1);
>    streamer_write_bitpack (&bp);
> Index: gcc/common.opt
> ===================================================================
> --- gcc/common.opt    (revision 231081)
> +++ gcc/common.opt    (working copy)
> @@ -48,7 +48,8 @@ bool in_lto_p = false
>  
>  ; This variable is set to non-0 only by LTO front-end.  1 indicates that
>  ; the output produced will be used for incrmeental linking (thus weak symbols
> -; can still be bound).
> +; can still be bound) and 2 indicates that the IL is going to be linked and
> +; and output to LTO object file.
>  Variable
>  int flag_incremental_link = 0
>  
> Index: gcc/gcc.c
> ===================================================================
> --- gcc/gcc.c (revision 231081)
> +++ gcc/gcc.c (working copy)
> @@ -953,6 +953,7 @@ proper position among the other output f
>      -plugin %(linker_plugin_file) \
>      -plugin-opt=%(lto_wrapper) \
>      -plugin-opt=-fresolution=%u.res \
> +    %{flinker-output=*:-plugin-opt=-linker-output-known} \
>      
> %{!nostdlib:%{!nodefaultlibs:%:pass-through-libs(%(link_gcc_c_sequence))}} \
>      }" PLUGIN_COND_CLOSE
>  #else
> Index: gcc/toplev.c
> ===================================================================
> --- gcc/toplev.c      (revision 231081)
> +++ gcc/toplev.c      (working copy)
> @@ -504,7 +504,8 @@ compile_file (void)
>  
>    /* Compilation unit is finalized.  When producing non-fat LTO object, we 
> are
>       basically finished.  */
> -  if (in_lto_p || !flag_lto || flag_fat_lto_objects)
> +  if ((in_lto_p && flag_incremental_link != 2)
> +      || !flag_lto || flag_fat_lto_objects)
>      {
>        /* File-scope initialization for AddressSanitizer.  */
>        if (flag_sanitize & SANITIZE_ADDRESS)
> Index: gcc/lto/lang.opt
> ===================================================================
> --- gcc/lto/lang.opt  (revision 231081)
> +++ gcc/lto/lang.opt  (working copy)
> @@ -34,6 +34,9 @@ EnumValue
>  Enum(lto_linker_output) String(rel) Value(LTO_LINKER_OUTPUT_REL)
>  
>  EnumValue
> +Enum(lto_linker_output) String(nolto-rel) Value(LTO_LINKER_OUTPUT_NOLTOREL)
> +
> +EnumValue
>  Enum(lto_linker_output) String(dyn) Value(LTO_LINKER_OUTPUT_DYN)
>  
>  EnumValue
> Index: gcc/lto/lto-lang.c
> ===================================================================
> --- gcc/lto/lto-lang.c        (revision 231081)
> +++ gcc/lto/lto-lang.c        (working copy)
> @@ -823,6 +823,26 @@ lto_post_options (const char **pfilename
>    switch (flag_lto_linker_output)
>      {
>      case LTO_LINKER_OUTPUT_REL: /* .o: incremental link producing LTO IL  */
> +      /* Configure compiler same way as normal frontend would do with -flto:
> +      this way we read the trees (declarations & types), symbol table,
> +      optimization summaries and link them. Subsequently we output new LTO
> +      file.  */
> +      flag_lto = "";
> +      flag_incremental_link = 2;
> +      flag_whole_program = 0;
> +      flag_wpa = 0;
> +      flag_generate_lto = 1;
> +      /* It would be cool to produce .o file directly, but our current
> +      simple objects does not contain the lto symbol markers.  Go the slow
> +      way through the asm file.  */
> +      lang_hooks.lto.begin_section = lhd_begin_section;
> +      lang_hooks.lto.append_data = lhd_append_data;
> +      lang_hooks.lto.end_section = lhd_end_section;
> +      if (flag_ltrans)
> +     error ("-flinker-output=rel and -fltrans are mutually exclussive");
> +      break;
> +
> +    case LTO_LINKER_OUTPUT_NOLTOREL: /* .o: incremental link producing asm  
> */
>        flag_whole_program = 0;
>        flag_incremental_link = 1;
>        break;
> @@ -1243,7 +1263,7 @@ lto_init (void)
>    int i;
>  
>    /* We need to generate LTO if running in WPA mode.  */
> -  flag_generate_lto = (flag_wpa != NULL);
> +  flag_generate_lto = (flag_incremental_link == 2 || flag_wpa != NULL);
>  
>    /* Create the basic integer types.  */
>    build_common_tree_nodes (flag_signed_char, flag_short_double);
> Index: gcc/flag-types.h
> ===================================================================
> --- gcc/flag-types.h  (revision 231081)
> +++ gcc/flag-types.h  (working copy)
> @@ -269,6 +269,7 @@ enum lto_partition_model {
>  enum lto_linker_output {
>    LTO_LINKER_OUTPUT_UNKNOWN,
>    LTO_LINKER_OUTPUT_REL,
> +  LTO_LINKER_OUTPUT_NOLTOREL,
>    LTO_LINKER_OUTPUT_DYN,
>    LTO_LINKER_OUTPUT_PIE,
>    LTO_LINKER_OUTPUT_EXEC
> Index: gcc/doc/invoke.texi
> ===================================================================
> --- gcc/doc/invoke.texi       (revision 231081)
> +++ gcc/doc/invoke.texi       (working copy)
> @@ -492,7 +492,8 @@ Objective-C and Objective-C++ Dialects}.
>  
>  @item Linker Options
>  @xref{Link Options,,Options for Linking}.
> -@gccoptlist{@var{object-file-name}  -fuse-ld=@var{linker} -l@var{library} 
> @gol
> +@gccoptlist{@var{object-file-name} -flinker-output=@var{type} @gol
> +-fuse-ld=@var{linker} -l@var{library} @gol
>  -nostartfiles  -nodefaultlibs  -nostdlib -pie -rdynamic @gol
>  -s  -static -static-libgcc -static-libstdc++ @gol
>  -static-libasan -static-libtsan -static-liblsan -static-libubsan @gol
> @@ -11317,6 +11318,50 @@ If any of these options is used, then th
>  object file names should not be used as arguments.  @xref{Overall
>  Options}.
>  
> +@item -flinker-output=@var{type}
> +@opindex -flinker-output
> +This option controls the code generation of the link time optimizer.  By
> +default the linker output is determined by the linker plugin automatically. 
> For
> +debugging the compiler and in the case of incremental linking it may be 
> useful
> +to control the type manually.
> +
> +If @var{type} is @samp{exec} the code generation is configured to produce 
> static
> +binary. In this case @option{-fpic} and @option{-fpie} are both disabled.
> +
> +If @var{type} is @samp{dyn} the code generation is configured to produce 
> shared
> +library. In this case @option{-fpic} or @option{-fPIC} is preserved.  These
> +options arenot implied to make it possible to build static libraries without
> +position independent code on architectures this is possible, i.e. on x86.
> +
> +If @var{type} is @samp{pie} the code generation is configured to produce
> +@option{-fpie} executable. This result in similar optimizations as 
> @samp{exec}
> +except that @option{-fpie} is not disabled if specified at compilation time.
> +
> +If @var{type} is @samp{rel} the compiler assumes that incremental linking is
> +done.  The sections containing intermediate code for link-time optimization 
> are
> +merged, pre-optimized, and output to the resulting object file. In addition 
> if
> +@option{-ffat-lto-objects} is specified the binary code is produced for 
> future
> +non-lto linking. The object file produced by incremental linking will be 
> smaller
> +than a static library produced from the same object files.  At link-time the
> +result of incremental linking will also load faster to compiler than a static
> +library assuming that majority of objects in the library are used.
> +
> +Finally @samp{nolto-rel} configure compiler to for incremental linking where
> +code generation is forced, final binary is produced and the intermediate code
> +for later link-time optimization is stripped. When multiple object files are
> +linked together the resulting code will be optimized better than with link 
> time
> +optimizations disabled (for example, the cross-module inlining will happen),
> +most of benefits of whole program optimizations are however lost. 
> +
> +During the incremental link (by @option{-r}) the linker plugin will default 
> to
> +@option{rel}. With current interfaces to GNU Binutils it is however not
> +possible to link incrementally LTO objects and non-LTO objects into a single
> +mixed object file.  In the case any of object files in incremental link can 
> not
> +be used for link-time optimization the linker plugin will output warning and
> +use @samp{nolto-rel}. To maintain the whole program optimization it is
> +recommended to link such objects into static library instead. Alternatively 
> it
> +is possible to use H.J. Lu's binutils with support for mixed objects.
> +
>  @item -fuse-ld=bfd
>  @opindex fuse-ld=bfd
>  Use the @command{bfd} linker instead of the default linker.
> Index: gcc/testsuite/gcc.dg/lto/20081120-2_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20081120-2_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20081120-2_0.c   (working copy)
> @@ -1,3 +1,4 @@
>  /* { dg-lto-do link } */
>  /* { dg-lto-options {{-flto -flto-partition=1to1 -r -nostdlib}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  void bar(void) {}
> Index: gcc/testsuite/gcc.dg/lto/20090126-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20090126-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20090126-1_0.c   (working copy)
> @@ -1,6 +1,6 @@
>  /* { dg-lto-do link } */
>  /* { dg-lto-options {{-O0 -flto -flto-partition=1to1}} } */
> -/* { dg-extra-ld-options {-r -nostdlib -O2 -flto -flto-partition=1to1} } */
> +/* { dg-extra-ld-options {-r -nostdlib -O2 -flto -flto-partition=1to1 
> -flinker-output=nolto-rel} } */
>  
>  int main(int argc, char **argv) {
>    return 0;
> Index: gcc/testsuite/gcc.dg/lto/20091020-2_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20091020-2_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20091020-2_0.c   (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-fPIC -r -nostdlib -flto}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  typedef struct {
>      int NumPackStreams;
> Index: gcc/testsuite/gcc.dg/lto/20081204-2_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20081204-2_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20081204-2_0.c   (working copy)
> @@ -1,5 +1,6 @@
>  /* { dg-lto-do link } */
>  /* { dg-skip-if "" { ! { i?86-*-* x86_64-*-* } } { "*" } { "" } } */
>  /* { dg-lto-options {{-w -flto -fPIC -r -nostdlib}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  register int ri asm("edi");
> Index: gcc/testsuite/gcc.dg/lto/20091015-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20091015-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20091015-1_0.c   (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-fPIC -r -nostdlib -O2 -flto} {-fPIC -r -nostdlib -O2 
> -flto -flto-partition=1to1}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  #include "20091015-1_b.h"
>  void diagnostic_initialize (FILE **stream) { *stream = stderr; }
> Index: gcc/testsuite/gcc.dg/lto/20090126-2_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20090126-2_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20090126-2_0.c   (working copy)
> @@ -1,7 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-fPIC -O2 -flto -flto-partition=1to1}} } */
> -/* { dg-extra-ld-options {-fno-PIC -r -nostdlib -O2 -flto 
> -flto-partition=1to1} } */
> +/* { dg-extra-ld-options {-fno-PIC -r -nostdlib -O2 -flto 
> -flto-partition=1to1 -flinker-output=nolto-rel} } */
>  
>  int main(int argc, char **argv) {
>    return 0;
> Index: gcc/testsuite/gcc.dg/lto/20090116_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20090116_0.c     (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20090116_0.c     (working copy)
> @@ -1,7 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-O1 -flto -flto-partition=1to1 -fPIC}} } */
> -/* { dg-extra-ld-options {-r -nostdlib -O0} } */
> +/* { dg-extra-ld-options {-r -nostdlib -O0 -flinker-output=nolto-rel} } */
>  
>  int foo(void) {
>   int ret, i;
> Index: gcc/testsuite/gcc.dg/lto/20081224_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20081224_0.c     (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20081224_0.c     (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-flto -flto-partition=1to1 -r -nostdlib -fPIC}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  #include "20081224_0.h"
>  
>  extern struct foo x;
> Index: gcc/testsuite/gcc.dg/lto/20091027-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20091027-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20091027-1_0.c   (working copy)
> @@ -1,5 +1,5 @@
>  /* { dg-lto-do link } */
> -/* { dg-extra-ld-options "-r -nostdlib" } */
> +/* { dg-extra-ld-options "-r -nostdlib -flinker-output=nolto-rel" } */
>  
>  typedef struct _xmlDict xmlDict;
>  struct _xmlDict {
> Index: gcc/testsuite/gcc.dg/lto/20090219_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20090219_0.c     (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20090219_0.c     (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-O3 -flto -flto-partition=1to1 -fPIC -r -nostdlib}} } 
> */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  struct Foo { int f1, f2, f3, f4, f5; };
>  
> Index: gcc/testsuite/gcc.dg/lto/20081212-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20081212-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20081212-1_0.c   (working copy)
> @@ -1,4 +1,5 @@
>  /* { dg-lto-do link } */
>  /* { dg-lto-options {{-r -nostdlib}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  int exported_var = 42;
>  /* { dg-final { scan-symbol "exported_var" } } */
> Index: gcc/testsuite/gcc.dg/lto/20091013-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20091013-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20091013-1_0.c   (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-fPIC -r -nostdlib -flto} {-fPIC -r -nostdlib -O2 
> -flto}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  void * HeapAlloc(void*,unsigned int,unsigned long);
>  
> Index: gcc/testsuite/gcc.dg/lto/20081126_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20081126_0.c     (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20081126_0.c     (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-skip-if "" { ! { i?86-*-* x86_64-*-* } } { "*" } { "" } } */
>  /* { dg-lto-options {{-flto -r -nostdlib}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  int f(void) {
>    register int ri asm("edi");
> Index: gcc/testsuite/gcc.dg/lto/20090206-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20090206-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20090206-1_0.c   (working copy)
> @@ -3,6 +3,7 @@
>  /* { dg-lto-options {{-fPIC -r -nostdlib -flto -flto-partition=1to1 -msse2}} 
> } */
>  /* { dg-require-effective-target sse2 } */
>  /* { dg-suppress-ld-options {-fPIC -msse2} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  typedef short v8hi __attribute__((__vector_size__(16)));
>  void func (void) {
> Index: gcc/testsuite/gcc.dg/lto/20091016-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20091016-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20091016-1_0.c   (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-fPIC -r -nostdlib -O2 -flto}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  typedef struct VEC_constructor_elt_gc { } VEC_constructor_elt_gc;
>  #include "20091016-1_a.h"
> Index: gcc/testsuite/gcc.dg/lto/20081120-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20081120-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20081120-1_0.c   (working copy)
> @@ -1,5 +1,6 @@
>  /* { dg-lto-do link } */
>  /* { dg-lto-options {{-flto -r -nostdlib}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  extern int stat(void) __asm__("" "stat64");
>  extern inline int stat(void) { }
>  static void foo(void) { stat(); }
> Index: gcc/testsuite/gcc.dg/lto/20091020-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20091020-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20091020-1_0.c   (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-fPIC -r -nostdlib -flto}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  typedef struct {
>      int NumPackStreams;
> Index: gcc/testsuite/gcc.dg/lto/20100426_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20100426_0.c     (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20100426_0.c     (working copy)
> @@ -1,5 +1,6 @@
>  /* { dg-lto-do link } */
>  /* { dg-lto-options {{-r -nostdlib -flto -g}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  long Perl_my_htonl (long l)
>  {
> Index: gcc/testsuite/gcc.dg/lto/20081204-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20081204-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20081204-1_0.c   (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-flto -flto-partition=1to1 -fPIC -r -nostdlib}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  /* Tests for the absence during linking of:
>     lto1: error: type of 'i' does not match original declaration  */
> Index: gcc/testsuite/gcc.dg/lto/20091014-1_0.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/lto/20091014-1_0.c   (revision 231081)
> +++ gcc/testsuite/gcc.dg/lto/20091014-1_0.c   (working copy)
> @@ -1,5 +1,6 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-fPIC -r -nostdlib -flto}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  /* Empty file.  See PR41173.  */
> Index: gcc/testsuite/g++.dg/lto/20081109-1_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20081109-1_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20081109-1_0.C   (working copy)
> @@ -1,6 +1,6 @@
>  // { dg-lto-do link }
>  // { dg-require-effective-target fpic }
>  // { dg-lto-options {{-fPIC -flto -flto-partition=1to1}} }
> -// { dg-extra-ld-options "-fPIC -flto -flto-partition=1to1 -r -nostdlib 
> -fno-exceptions" }
> +// { dg-extra-ld-options "-fPIC -flto -flto-partition=1to1 -r -nostdlib 
> -fno-exceptions -flinker-output=nolto-rel" }
>  void func(); class Foo { };
>  void bar() { try { func(); } catch (Foo) { } };
> Index: gcc/testsuite/g++.dg/lto/20100724-1_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20100724-1_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20100724-1_0.C   (working copy)
> @@ -1,6 +1,6 @@
>  /* { dg-lto-do link } */
>  /* { dg-lto-options {{-ftoplevel-reorder -flto -flto-partition=none} 
> {-ftoplevel-reorder -flto -flto-partition=1to1}} } */
> -/* { dg-extra-ld-options {-r -nostdlib} } */
> +/* { dg-extra-ld-options {-r -nostdlib -flinker-output=nolto-rel} } */
>  
>  struct Foo { virtual ~Foo(); };
>  struct Bar:public Foo { Bar() { } };
> Index: gcc/testsuite/g++.dg/lto/20081204-1_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20081204-1_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20081204-1_0.C   (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-flto -flto-partition=1to1 -fPIC -r -nostdlib}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  /* Tests for the absence during linking of:
>     lto1: error: type of '_ZTVN10__cxxabiv120__si_class_type_infoE' does
> Index: gcc/testsuite/g++.dg/lto/pr45679-2_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/pr45679-2_0.C    (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/pr45679-2_0.C    (working copy)
> @@ -1,6 +1,6 @@
>  // { dg-lto-do link }
>  // { dg-lto-options {{-O3 -Wno-multichar}} } 
> -// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib" }
> +// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib 
> -flinker-output=nolto-rel" }
>      extern "C" {
>    typedef struct {
>      union   {
> Index: gcc/testsuite/g++.dg/lto/20110311-1_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20110311-1_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20110311-1_0.C   (working copy)
> @@ -1,5 +1,5 @@
>  /* { dg-lto-do link } */
> -/* { dg-extra-ld-options "-r -nostdlib" } */
> +/* { dg-extra-ld-options "-r -nostdlib -flinker-output=nolto-rel" } */
>  
>  struct NullType {};
>  
> Index: gcc/testsuite/g++.dg/lto/20090302_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20090302_0.C     (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20090302_0.C     (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r -nostdlib}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  struct Foo {
>    bool Mumble();
>    static void Bar() { if (foo_->Mumble()) foo_ = 0; }
> Index: gcc/testsuite/g++.dg/lto/20081118_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20081118_0.C     (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20081118_0.C     (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r -nostdlib}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  /* We used to ICE because of dangling pointers.  */
>  
> Index: gcc/testsuite/g++.dg/lto/20091002-2_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20091002-2_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20091002-2_0.C   (working copy)
> @@ -1,7 +1,7 @@
>  // { dg-lto-do link }
>  // { dg-require-effective-target fpic }
>  // { dg-lto-options {{-fPIC}} }
> -// { dg-extra-ld-options "-fPIC -r -nostdlib" }
> +// { dg-extra-ld-options "-fPIC -r -nostdlib -flinker-output=nolto-rel" }
>  
>  class DataArray {
>      int max() const    { }
> Index: gcc/testsuite/g++.dg/lto/20081120-2_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20081120-2_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20081120-2_0.C   (working copy)
> @@ -1,5 +1,6 @@
>  // { dg-lto-do link }
>  // { dg-lto-options {{-flto -r -nostdlib}} }
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  template < typename > struct Foo
>  {
>   inline void rdstate() {
> Index: gcc/testsuite/g++.dg/lto/20081123_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20081123_0.C     (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20081123_0.C     (working copy)
> @@ -1,6 +1,7 @@
>  // { dg-lto-do link }
>  // { dg-require-effective-target fpic }
>  // { dg-lto-options {{-flto -flto-partition=1to1 -r -nostdlib -fPIC}} }
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  int
>  f(void)
> Index: gcc/testsuite/g++.dg/lto/20090313_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20090313_0.C     (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20090313_0.C     (working copy)
> @@ -1,6 +1,6 @@
>  // { dg-lto-do link }
>  // { dg-require-effective-target fpic }
>  // { dg-lto-options {{-flto -flto-partition=1to1 -fPIC}} }
> -// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib" }
> +// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib 
> -flinker-output=nolto-rel" }
>  
>  int X;
> Index: gcc/testsuite/g++.dg/lto/pr54625-1_0.c
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/pr54625-1_0.c    (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/pr54625-1_0.c    (working copy)
> @@ -1,5 +1,5 @@
>  /* { dg-lto-do link } */
> -/* { dg-extra-ld-options { -r -nostdlib } } */
> +/* { dg-extra-ld-options { -r -nostdlib -flinker-output=nolto-rel } } */
>  
>  float a;
>  double sin ();
> Index: gcc/testsuite/g++.dg/lto/pr48354-1_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/pr48354-1_0.C    (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/pr48354-1_0.C    (working copy)
> @@ -1,6 +1,6 @@
>  // { dg-lto-do link }
>  // { dg-lto-options { { -g -flto } } }
> -// { dg-extra-ld-options "-r -nostdlib" }
> +// { dg-extra-ld-options "-r -nostdlib -flinker-output=nolto-rel" }
>  
>  template<typename T> struct Identity { typedef T type; };
>  struct S {
> Index: gcc/testsuite/g++.dg/lto/20081219_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20081219_0.C     (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20081219_0.C     (working copy)
> @@ -1,7 +1,7 @@
>  // { dg-lto-do link }
>  // { dg-require-effective-target fpic }
>  // { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -O2}} }
> -// { dg-extra-ld-options "-O2 -fPIC -flto -flto-partition=1to1 -r -nostdlib" 
> }
> +// { dg-extra-ld-options "-O2 -fPIC -flto -flto-partition=1to1 -r -nostdlib 
> -flinker-output=nolto-rel" }
>  
>  typedef long int ptrdiff_t;
>  extern "C"
> Index: gcc/testsuite/g++.dg/lto/pr48042_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/pr48042_0.C      (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/pr48042_0.C      (working copy)
> @@ -1,5 +1,5 @@
>  // { dg-lto-do link }
> -// { dg-extra-ld-options "-r -nostdlib -g" }
> +// { dg-extra-ld-options "-r -nostdlib -g -flinker-output=nolto-rel" }
>  
>  class A {
>      virtual int x() = 0;
> Index: gcc/testsuite/g++.dg/lto/20101015-2_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20101015-2_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20101015-2_0.C   (working copy)
> @@ -1,6 +1,6 @@
>  // { dg-lto-do link }
>  // { dg-lto-options { { -flto } { -g -flto } } }
> -// { dg-extra-ld-options "-r -nostdlib" }
> +// { dg-extra-ld-options "-r -nostdlib -flinker-output=nolto-rel" }
>  
>  struct Base { ~Base (); };
>  void fun(void) { struct Deriv : Base { } x; }
> Index: gcc/testsuite/g++.dg/lto/pr45679-1_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/pr45679-1_0.C    (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/pr45679-1_0.C    (working copy)
> @@ -1,6 +1,6 @@
>  // { dg-lto-do link }
>  // { dg-lto-options {{-O3 -Wno-multichar}} } 
> -// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib" }
> +// { dg-extra-ld-options "-flto -flto-partition=1to1 -r -nostdlib 
> -flinker-output=nolto-rel" }
>  
>       extern "C" {
>     typedef struct __locale_struct {
> Index: gcc/testsuite/g++.dg/lto/20091026-1_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20091026-1_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20091026-1_0.C   (working copy)
> @@ -1,5 +1,5 @@
>  // { dg-lto-do link }
> -// { dg-extra-ld-options "-r -nostdlib" }
> +// { dg-extra-ld-options "-r -nostdlib -flinker-output=nolto-rel" }
>  
>  #include "20091026-1_a.h"
>  cObject *cHead::find(const char *objname) const
> Index: gcc/testsuite/g++.dg/lto/pr45621_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/pr45621_0.C      (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/pr45621_0.C      (working copy)
> @@ -1,5 +1,5 @@
>  // { dg-lto-do assemble }
> -// { dg-extra-ld-options "-O2 -fipa-cp-clone -flto -nostdlib -r" }
> +// { dg-extra-ld-options "-O2 -fipa-cp-clone -flto -nostdlib -r 
> -flinker-output=nolto-rel" }
>  #include "pr45621.h"
>  
>  void
> Index: gcc/testsuite/g++.dg/lto/20081119-1_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20081119-1_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20081119-1_0.C   (working copy)
> @@ -1,6 +1,7 @@
>  /* { dg-lto-do link } */
>  /* { dg-require-effective-target fpic } */
>  /* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r -nostdlib}} } */
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  #include "20081119-1.h"
>  
> Index: gcc/testsuite/g++.dg/lto/20101010-4_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20101010-4_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20101010-4_0.C   (working copy)
> @@ -1,5 +1,6 @@
>  // { dg-lto-do link }
>  // { dg-lto-options { { -std=c++0x -flto -r -nostdlib } { -std=c++0x -flto 
> -g -r -nostdlib } } }
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  
>  typedef decltype(nullptr) nullptr_t;
>  class shared_ptr {
> Index: gcc/testsuite/g++.dg/lto/20081120-1_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20081120-1_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20081120-1_0.C   (working copy)
> @@ -1,5 +1,6 @@
>  // { dg-lto-do link }
>  // { dg-lto-options {{-flto -r -nostdlib}} }
> +/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */
>  extern "C"
>  {
>   extern __inline __attribute__((__gnu_inline__)) int pthread_equal(int, int)
> Index: gcc/testsuite/g++.dg/lto/20091002-1_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20091002-1_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20091002-1_0.C   (working copy)
> @@ -1,7 +1,7 @@
>  // { dg-lto-do link }
>  // { dg-require-effective-target fpic }
>  // { dg-lto-options {{-fPIC -flto}} }
> -// { dg-extra-ld-options "-fPIC -r -nostdlib" }
> +// { dg-extra-ld-options "-fPIC -r -nostdlib -flinker-output=nolto-rel" }
>  
>  namespace std __attribute__ ((__visibility__ ("default")))
>  {
> Index: gcc/testsuite/g++.dg/lto/20091002-3_0.C
> ===================================================================
> --- gcc/testsuite/g++.dg/lto/20091002-3_0.C   (revision 231081)
> +++ gcc/testsuite/g++.dg/lto/20091002-3_0.C   (working copy)
> @@ -1,7 +1,7 @@
>  // { dg-lto-do link }
>  // { dg-require-effective-target fpic }
>  // { dg-lto-options {{-fPIC}} }
> -// { dg-extra-ld-options "-fPIC -r -nostdlib" }
> +// { dg-extra-ld-options "-fPIC -r -nostdlib -flinker-output=nolto-rel" }
>  
>  template < class T > 
>  class DataArray {
> Index: gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90
> ===================================================================
> --- gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90    (revision 231081)
> +++ gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90    (working copy)
> @@ -1,5 +1,6 @@
>  ! { dg-lto-do link }
>  ! { dg-lto-options {{-flto -g -fPIC -r -nostdlib} {-O -flto -g -fPIC -r 
> -nostdlib}} }
> +! { dg-extra-ld-options "-flinker-output=nolto-rel" }
>  
>        FUNCTION makenumberstring(x)
>        IMPLICIT NONE
> Index: gcc/testsuite/gfortran.dg/lto/pr47839_0.f90
> ===================================================================
> --- gcc/testsuite/gfortran.dg/lto/pr47839_0.f90       (revision 231081)
> +++ gcc/testsuite/gfortran.dg/lto/pr47839_0.f90       (working copy)
> @@ -1,6 +1,6 @@
>  ! { dg-lto-do link }
>  ! { dg-lto-options {{ -g -flto }} }
> -! { dg-extra-ld-options "-r -nostdlib" }
> +! { dg-extra-ld-options "-r -nostdlib -flinker-output=nolto-rel" }
>  
>  MODULE globalvar_mod
>  integer        :: xstop
> Index: gcc/testsuite/gfortran.dg/lto/pr46911_0.f
> ===================================================================
> --- gcc/testsuite/gfortran.dg/lto/pr46911_0.f (revision 231081)
> +++ gcc/testsuite/gfortran.dg/lto/pr46911_0.f (working copy)
> @@ -1,6 +1,6 @@
>  ! { dg-lto-do link }
>  ! { dg-lto-options {{ -O2 -flto -g }} }
> -! { dg-extra-ld-options "-r -nostdlib" }
> +! { dg-extra-ld-options "-r -nostdlib -flinker-output=nolto-rel" }
>        common/main1/ eps(2)
>        call dalie6s(iqmod6,1,wx,cor6d)
>        end
> Index: gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90
> ===================================================================
> --- gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90    (revision 231081)
> +++ gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90    (working copy)
> @@ -1,5 +1,5 @@
>  ! { dg-lto-do link }
> -! { dg-extra-ld-options "-r -nostdlib -finline-functions" }
> +! { dg-extra-ld-options "-r -nostdlib -finline-functions 
> -flinker-output=nolto-rel" }
>  
>  SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, &
>                                DataHandle, Element, VarName, Data, code )
> Index: gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90
> ===================================================================
> --- gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90    (revision 231081)
> +++ gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90    (working copy)
> @@ -1,5 +1,5 @@
>  ! { dg-lto-do link }
> -! { dg-extra-ld-options "-r -nostdlib -finline-functions" }
> +! { dg-extra-ld-options "-r -nostdlib -finline-functions 
> -flinker-output=nolto-rel" }
>  
>  SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, &
>                                DataHandle, Element, VarName, Data, code )

Reply via email to