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

Reply via email to