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) > {