On Mon, Apr 8, 2019 at 2:26 PM Martin Liška <mli...@suse.cz> wrote: > > 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 :)
I think it's all-stage[+id+]-[+prefix+][+module+]: configure-stage[+id+]-[+prefix+][+module+] @[ $(current_stage) = stage[+id+] ] || $(MAKE) stage[+id+]-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ [+exports+][+ IF prev +] \ [+poststage1_exports+][+ ENDIF prev +] [+extra_exports+] \ cd [+subdir+]/[+module+] && \ [+autoprofile+] \ $(MAKE) $(BASE_FLAGS_TO_PASS)[+ IF prefix +] \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"[+ ELSE prefix +] \ CFLAGS="$(STAGE[+id+]_CFLAGS)" \ CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"[+ IF prev +] \ LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \ LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +][+ ENDIF prefix +] \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ [+args+] [+IF prev +][+poststage1_args+][+ ELSE prev +] \ [+stage1_args+][+ ENDIF prev +] [+extra_make_flags+] \ TFLAGS="$(STAGE[+id+]_TFLAGS)" [+profile_data+] \ $(TARGET-stage[+id+]-[+prefix+][+module+]) where you maybe can simply add a GENERATOR_CFLAGS="$(STAGE[+id+]_GENERATOR_CFLAGS) Richard. > 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 > >>>> > >>>> > >> >