On 4/8/19 2:18 PM, Richard Biener wrote: > On Mon, Apr 8, 2019 at 1:30 PM Martin Liška <mli...@suse.cz> wrote: >> >> On 4/8/19 12:08 PM, Richard Biener wrote: >>> On Fri, Apr 5, 2019 at 12:42 PM Martin Liška <mli...@suse.cz> wrote: >>>> >>>> Hi. >>>> >>>> The patch adds a new config that makes LTO+PGO bootstrap faster by >>>> using LTO only in stage4. In stage3, generators are build with LTO >>>> in order to collect a reasonable profile for LTO FE. >>>> >>>> Ready for trunk? >>> >>> I wonder if you need the >>> >>> +AC_SUBST(GENERATOR_CFLAGS) >>> >>> at all, can't you just use >>> >>> +BUILD_CFLAGS= @BUILD_CFLAGS@ $(GENERATOR_CFLAGS) -DGENERATOR_FILE >>> +BUILD_CXXFLAGS = @BUILD_CXXFLAGS@ $(GENERATOR_CFLAGS) -DGENERATOR_FILE >>> >>> ? >> >> I've just tested that and it does not work for me. > > Ah, you probably need to move the > > @@ -1124,6 +1125,7 @@ configure-stage[+id+]-[+prefix+][+module+]: > CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ > LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;[+ ELSE > prefix +] \ > CFLAGS="$(STAGE[+id+]_CFLAGS)"; export CFLAGS; \ > + GENERATOR_CFLAGS="$(STAGE[+id+]_GENERATOR_CFLAGS)"; export > GENERATOR_CFLAGS; \ > CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"; export CXXFLAGS;[+ IF prev +] \ > > change to the respective build targets.
Can you please point me to a location in Makefile.tpl where is the target? It's all Greek to me :) Martin > >>> >>> Please mention in both bootstrap-lto-lean.mk and the documentation >>> that the intended make target for this config is profiledbootstrap >>> since for non-profiledbootstrap it ends up not using LTO at all. A "lean" >>> mode for non-profiledbootstrap would need to set up things to >>> use LTO only for stage3 which means not doing a bootstrap comparison >>> which means we could "skip" stage2 as well here. So partial support >>> for that would be to have >>> >>> STAGE2_CFLAGS += -frandom-seed=1 >>> STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1 >>> ... >>> do-compare = true >> >> Changed to tihs. >> >>> >>> So if this works for non-profiledbootstrap the docs could be >>> changed to say "but is intended for faster build by only >>> using LTO in the final bootstrap stage. With @samp{...} >>> the LTO frontend is trained only on generator files." >> >> Likewise. >> >>> >>> (why do we need -frandom-seed=1? IIRC that was only for the >>> comparison step which is elided in all cases for -lean.mk). >> >> Yep, it's not neded now. > > I see it still on STAGE[23]_CFLAGS? I think you can drop > STAGE2_CFLAGS adjustment completely. > > Otherwise looks OK - mind trying one more time with the > above suggestion for GENERATOR_CFLAGS? > > Thanks, > Richard. > >> Martin >> >>> >>> Richard. >>> >>>> Thanks, >>>> Martin >>>> >>>> ChangeLog: >>>> >>>> 2019-04-05 Martin Liska <mli...@suse.cz> >>>> >>>> * Makefile.in: Regenerate. >>>> * Makefile.tpl: Pass GENERATOR_CFLAGS >>>> in all stages. >>>> >>>> config/ChangeLog: >>>> >>>> 2019-04-05 Martin Liska <mli...@suse.cz> >>>> >>>> * bootstrap-lto-lean.mk: New file. >>>> >>>> gcc/ChangeLog: >>>> >>>> 2019-04-05 Martin Liska <mli...@suse.cz> >>>> >>>> * Makefile.in: Use GENERATOR_CFLAGS for all generators. >>>> * configure: Regenerate. >>>> * configure.ac: Pass GENERATOR_CFLAGS. >>>> * doc/install.texi: Document the new config. >>>> --- >>>> Makefile.in | 207 +++++++++++++++++++++++++++++++++++ >>>> Makefile.tpl | 2 + >>>> config/bootstrap-lto-lean.mk | 19 ++++ >>>> gcc/Makefile.in | 4 +- >>>> gcc/configure | 6 +- >>>> gcc/configure.ac | 1 + >>>> gcc/doc/install.texi | 6 + >>>> 7 files changed, 241 insertions(+), 4 deletions(-) >>>> create mode 100644 config/bootstrap-lto-lean.mk >>>> >>>> >>