Message ID | 41109217-1bf5-b112-e783-8040196fd410@suse.cz |
---|---|
State | New |
Headers | show |
On Thu, May 25, 2017 at 11:23 AM, Martin Liška <mliska@suse.cz> wrote: > Hello. > > After a discussion with Richi, using adding "-O2" to STAGE1 cflags with a recent > enough compiler can significantly speed up bootstrap. Thus I'm suggesting to > introduce --with-stage1-cflags where one can provide such options. I don't think this is necessary -- you can always override with STAGE1_CFLAGS. > Apart from that, maybe it would be handy to automatically enable "-O2" when > one has a recent compiler? Do we have an example where we detect host compiler > and it's version? Don't know about version but configury already detects that we use GCC, so that knowledge should be readily available. Richard. > > Martin
On Fri, May 26, 2017 at 01:46:47PM +0200, Richard Biener wrote: > On Thu, May 25, 2017 at 11:23 AM, Martin Liška <mliska@suse.cz> wrote: > > Hello. > > > > After a discussion with Richi, using adding "-O2" to STAGE1 cflags with a recent > > enough compiler can significantly speed up bootstrap. Thus I'm suggesting to > > introduce --with-stage1-cflags where one can provide such options. > > I don't think this is necessary -- you can always override with STAGE1_CFLAGS. > > > Apart from that, maybe it would be handy to automatically enable "-O2" when > > one has a recent compiler? Do we have an example where we detect host compiler > > and it's version? > > Don't know about version but configury already detects that we use GCC, so that > knowledge should be readily available. Well, it certainly shouldn't be -O2 by default for any system GCC, more something like if it is major of the configured configure minus 1 or newer (or minus 2?), then use -O2, otherwise default to -O0 as before. Jakub
On Fri, May 26, 2017 at 1:51 PM, Jakub Jelinek <jakub@redhat.com> wrote: > On Fri, May 26, 2017 at 01:46:47PM +0200, Richard Biener wrote: >> On Thu, May 25, 2017 at 11:23 AM, Martin Liška <mliska@suse.cz> wrote: >> > Hello. >> > >> > After a discussion with Richi, using adding "-O2" to STAGE1 cflags with a recent >> > enough compiler can significantly speed up bootstrap. Thus I'm suggesting to >> > introduce --with-stage1-cflags where one can provide such options. >> >> I don't think this is necessary -- you can always override with STAGE1_CFLAGS. >> >> > Apart from that, maybe it would be handy to automatically enable "-O2" when >> > one has a recent compiler? Do we have an example where we detect host compiler >> > and it's version? >> >> Don't know about version but configury already detects that we use GCC, so that >> knowledge should be readily available. > > Well, it certainly shouldn't be -O2 by default for any system GCC, more > something like if it is major of the configured configure minus 1 or newer > (or minus 2?), then use -O2, otherwise default to -O0 as before. I'd still default to -O0 on release branches regardless of version and then for development we can probably simply use "any GCC" when people have the chance to override. At least for me host GCC 4.8 works quite well with -O2. Richard. > Jakub
> After a discussion with Richi, using adding "-O2" to STAGE1 cflags with a > recent enough compiler can significantly speed up bootstrap. Thus I'm > suggesting to introduce --with-stage1-cflags where one can provide such > options. -O1 is sufficient in my experience and far less risky than -O2 in this case.
On Mon, May 29, 2017 at 1:13 PM, Eric Botcazou <ebotcazou@adacore.com> wrote: >> After a discussion with Richi, using adding "-O2" to STAGE1 cflags with a >> recent enough compiler can significantly speed up bootstrap. Thus I'm >> suggesting to introduce --with-stage1-cflags where one can provide such >> options. > > -O1 is sufficient in my experience and far less risky than -O2 in this case. Are you sure? In my experience -O2 gets the most test coverage during lifetime of a particular release. Richard. > -- > Eric Botcazou
> Are you sure? In my experience -O2 gets the most test coverage during > lifetime of a particular release. Yes, some older GCC releases have aliasing issues that are exposed at -O2 only because of -fstrict-aliasing and -fschedule-insns.
On 05/30/2017 11:43 AM, Eric Botcazou wrote: >> Are you sure? In my experience -O2 gets the most test coverage during >> lifetime of a particular release. > > Yes, some older GCC releases have aliasing issues that are exposed at -O2 only > because of -fstrict-aliasing and -fschedule-insns. > That's why we decided to enable -O2 just with GCC 4.8+. Martin
> That's why we decided to enable -O2 just with GCC 4.8+.
IMO it's too dangerous on non-x86 platforms and -O1 would be much safer.
From 5c44f79237125ad2bc29fcd1fb06a249c05b277d Mon Sep 17 00:00:00 2001 From: marxin <mliska@suse.cz> Date: Thu, 25 May 2017 11:17:29 +0200 Subject: [PATCH] Introduce configure flag --with-stage1-cflags. ChangeLog: 2017-05-25 Martin Liska <mliska@suse.cz> * configure.ac: Introduce configure flag --with-stage1-cflags. * configure: Regenerate. --- configure | 40 +++++++++++++++++++++++++++------------- configure.ac | 31 +++++++++++++++++++------------ 2 files changed, 46 insertions(+), 25 deletions(-) diff --git a/configure b/configure index 2c2fe644cfa..442f78d9565 100755 --- a/configure +++ b/configure @@ -559,7 +559,6 @@ compare_exclusions host_shared stage2_werror_flag stage1_checking -stage1_cflags MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE @@ -652,6 +651,7 @@ isllibs poststage1_ldflags poststage1_libs stage1_ldflags +stage1_cflags stage1_libs extra_isl_gmp_configure_flags extra_mpc_mpfr_configure_flags @@ -771,6 +771,7 @@ with_gmp with_gmp_include with_gmp_lib with_stage1_libs +with_stage1_cflags with_stage1_ldflags with_boot_libs with_boot_ldflags @@ -1542,6 +1543,8 @@ Optional Packages: --with-gmp-include=PATH specify directory for installed GMP include files --with-gmp-lib=PATH specify directory for the installed GMP library --with-stage1-libs=LIBS libraries for stage1 + --with-stage1-cflags=FLAGS + compiler flags for stage1 --with-stage1-ldflags=FLAGS linker flags for stage1 --with-boot-libs=LIBS libraries for stage2 and later @@ -5804,6 +5807,29 @@ fi +# Compiler flags to use for stage1 or when not bootstrapping. + +# Check whether --with-stage1-cflags was given. +if test "${with_stage1_cflags+set}" = set; then : + withval=$with_stage1_cflags; if test "$withval" = "no" -o "$withval" = "yes"; then + stage1_cflags= + else + stage1_cflags=$withval + fi +else + stage1_cflags="-g" + case $build in + vax-*-*) + case ${GCC} in + yes) stage1_cflags="-g -Wa,-J" ;; + *) stage1_cflags="-g -J" ;; + esac ;; + esac +fi + + + + # Linker flags to use for stage1 or when not bootstrapping. # Check whether --with-stage1-ldflags was given. @@ -14544,18 +14570,6 @@ MAINT=$MAINTAINER_MODE_TRUE # GCC bootstrap support # --------------------- -# Stage specific cflags for build. -stage1_cflags="-g" -case $build in - vax-*-*) - case ${GCC} in - yes) stage1_cflags="-g -Wa,-J" ;; - *) stage1_cflags="-g -J" ;; - esac ;; -esac - - - # Enable --enable-checking in stage1 of the compiler. # Check whether --enable-stage1-checking was given. if test "${enable_stage1_checking+set}" = set; then : diff --git a/configure.ac b/configure.ac index 865dd543fa3..7b7902240c3 100644 --- a/configure.ac +++ b/configure.ac @@ -1637,6 +1637,25 @@ AC_ARG_WITH(stage1-libs, [stage1_libs=]) AC_SUBST(stage1_libs) +# Compiler flags to use for stage1 or when not bootstrapping. +AC_ARG_WITH(stage1-cflags, +[AS_HELP_STRING([--with-stage1-cflags=FLAGS], [compiler flags for stage1])], +[if test "$withval" = "no" -o "$withval" = "yes"; then + stage1_cflags= + else + stage1_cflags=$withval + fi], +[stage1_cflags="-g" + case $build in + vax-*-*) + case ${GCC} in + yes) stage1_cflags="-g -Wa,-J" ;; + *) stage1_cflags="-g -J" ;; + esac ;; + esac]) + +AC_SUBST(stage1_cflags) + # Linker flags to use for stage1 or when not bootstrapping. AC_ARG_WITH(stage1-ldflags, [AS_HELP_STRING([--with-stage1-ldflags=FLAGS], [linker flags for stage1])], @@ -3421,18 +3440,6 @@ AC_SUBST(MAINT)dnl # GCC bootstrap support # --------------------- -# Stage specific cflags for build. -stage1_cflags="-g" -case $build in - vax-*-*) - case ${GCC} in - yes) stage1_cflags="-g -Wa,-J" ;; - *) stage1_cflags="-g -J" ;; - esac ;; -esac - -AC_SUBST(stage1_cflags) - # Enable --enable-checking in stage1 of the compiler. AC_ARG_ENABLE(stage1-checking, [AS_HELP_STRING([[--enable-stage1-checking[=all]]], -- 2.12.2