On Mon, Apr 8, 2019 at 3:53 PM Martin Liška <mli...@suse.cz> wrote:
>
> On 4/8/19 3:50 PM, Martin Liška wrote:
> > On 4/8/19 2:42 PM, Richard Biener wrote:
> >> 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
> >>>>>>>
> >>>>>>>
> >>>>>
> >>>
> >
> > Works for me. There's the update patch that also removes the usage
> > of 'frandom-seed=1'.
> >
> > Ready for trunk?
> > Thanks,
> > Martin
> >
>
> ENOPATCH fix.

@@ -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 +] \
        LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \
        LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +]; export LIBCFLAGS;[+

you can drop this hunk now.

@@ -1193,6 +1195,7 @@ all-stage[+id+]-[+prefix+][+module+]:
configure-stage[+id+]-[+prefix+][+module+]
                CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
                LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"[+ ELSE prefix +] \
                CFLAGS="$(STAGE[+id+]_CFLAGS)" \
+    GENERATOR_CFLAGS="$(STAGE[+id+]_GENERATOR_CFLAGS)" \
                CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"[+ IF prev +] \
                LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \
                LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +][+ ENDIF prefix +] \

please use tabs according to surrounding cases.

OK with that changes.
Richard.

> Martin

Reply via email to