Jan Hubicka <hubi...@ucw.cz> wrote:
>Hi,
>this patch switches the default for fat-lto-objects as was documented
>for a while.
>-ffat-lto-objects doubles compilation time and often makes users to not
>notice that
>LTO was not used at all (because they forgot to use gcc-ar/gcc-nm
>plugins).
>
>Sadly I had to add -ffat-lto-objects to bootstrap. This is because I do
>not know
>how to convince our build machinery to use gcc-ar/gcc-nm during the
>stage2+
>
>ltobootstrapped/regtested ppc64-linux, OK?

Ok with...

>Honza
>
>       * config/bootstrap-lto.mk: Use -ffat-lto-objects.
>       * common.opt (ffat-lto-objects): Disable by default.
>       * doc/invoke.texi (fat-lto-objects): Update documentation.
>       * opts.c: Enable fat-lto-objects on lto plugin disable setups.
>Index: config/bootstrap-lto.mk
>===================================================================
>*** config/bootstrap-lto.mk    (revision 204971)
>--- config/bootstrap-lto.mk    (working copy)
>***************
>*** 1,5 ****
>  # This option enables LTO for stage2 and stage3.
>  
>! STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1
>! STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1
>  STAGEprofile_CFLAGS += -fno-lto
>--- 1,7 ----
>  # This option enables LTO for stage2 and stage3.
>+ # FIXME: Our build system is not yet able to use gcc-ar wrapper, so
>we need
>+ # to go with -ffat-lto-objects. 
>  
>! STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
>! STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1 -ffat-lto-objects
>  STAGEprofile_CFLAGS += -fno-lto
>Index: gcc/common.opt
>===================================================================
>*** gcc/common.opt     (revision 204971)
>--- gcc/common.opt     (working copy)
>*************** ffast-math
>*** 1156,1162 ****
>  Common
>  
>  ffat-lto-objects
>! Common Var(flag_fat_lto_objects) Init(1)
>Output lto objects containing both the intermediate language and binary
>output.
>  
>  ffinite-math-only
>--- 1156,1162 ----
>  Common
>  
>  ffat-lto-objects
>! Common Var(flag_fat_lto_objects)
>Output lto objects containing both the intermediate language and binary
>output.
>  
>  ffinite-math-only
>Index: gcc/doc/invoke.texi
>===================================================================
>*** gcc/doc/invoke.texi        (revision 204971)
>--- gcc/doc/invoke.texi        (working copy)
>*************** need to support linker plugins to allow
>*** 8588,8596 ****
>@command{gcc-nm}, @command{gcc-ranlib} wrappers to pass the right
>options
>to these tools. With non fat LTO makefiles need to be modified to use
>them.
>  
>! The default is @option{-ffat-lto-objects} but this default is
>intended to
>! change in future releases when linker plugin enabled environments
>become more
>! common.
>  
>  @item -fcompare-elim
>  @opindex fcompare-elim
>--- 8588,8595 ----
>@command{gcc-nm}, @command{gcc-ranlib} wrappers to pass the right
>options
>to these tools. With non fat LTO makefiles need to be modified to use
>them.
>  
>! The default is @option{-fno-fat-lto-objects} on targets with linker
>plugin
>! support.
>  
>  @item -fcompare-elim
>  @opindex fcompare-elim
>Index: gcc/opts.c
>===================================================================
>*** gcc/opts.c (revision 204971)
>--- gcc/opts.c (working copy)
>*************** finish_options (struct gcc_options *opts
>*** 806,813 ****
>error_at (loc, "LTO support has not been enabled in this
>configuration");
>  #endif
>        if (!opts->x_flag_fat_lto_objects && !HAVE_LTO_PLUGIN)
>!         error_at (loc, "-fno-fat-lto-objects are supported only with
>linker plugin.");

Fullstop removed.  Can you update changes.html with lto changes?

Thanks,
Richard.

>! }
>if ((opts->x_flag_lto_partition_balanced != 0) +
>(opts->x_flag_lto_partition_1to1 != 0)
>         + (opts->x_flag_lto_partition_none != 0) >= 1)
>      {
>--- 806,817 ----
>error_at (loc, "LTO support has not been enabled in this
>configuration");
>  #endif
>        if (!opts->x_flag_fat_lto_objects && !HAVE_LTO_PLUGIN)
>!      {
>!        if (opts_set->x_flag_fat_lto_objects)
>!             error_at (loc, "-fno-fat-lto-objects are supported only
>with linker plugin.");
>!        opts->x_flag_fat_lto_objects = 1;
>!      }
>!     }
>if ((opts->x_flag_lto_partition_balanced != 0) +
>(opts->x_flag_lto_partition_1to1 != 0)
>         + (opts->x_flag_lto_partition_none != 0) >= 1)
>      {


Reply via email to