This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[committed] PR/29544, stage1 not built with checking on release branches
- From: Paolo Bonzini <paolo dot bonzini at lu dot unisi dot ch>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 19 Dec 2006 11:43:07 +0100
- Subject: [committed] PR/29544, stage1 not built with checking on release branches
This was never noticed as toplevel bootstrap was never on a release
branch so far, so --enable-checking was used for all stages.
We can actually do better with about the same code, and add a
--enable-stage1-checking flag. This way you can have a gcac bootstrap
only for the stage1 compiler (to be used in compilation of stage2); it's
already slow enough!
In order to not break old style bootstrap, I've renamed the
STAGE1_CHECKING variable in the gcc makefile. It is not mentioned
anywhere in the documentation.
Applied to mainline, will apply soon to 4.2 branch and src.
Paolo
2006-12-19 Paolo Bonzini <bonzini@gnu.org>
PR bootstrap/29544
* Makefile.def (flags_to_pass): Add STAGE1_CHECKING.
(bootstrap_stage): Add STAGE1_CHECKING to stage1 configure flags,
move here comment from Makefile.tpl.
* Makefile.tpl: Move some definitions higher in the file.
(STAGE1_CHECKING): New.
* configure.in: Add --enable-stage1-checking.
* configure: Regenerate.
* Makefile.in: Regenerate.
gcc:
2006-12-19 Paolo Bonzini <bonzini@gnu.org>
* gcc/Makefile.in (STAGE1_CHECKING): Rename to...
(STAGE1_CHECKING_CFLAGS): ... this.
Index: Makefile.def
===================================================================
--- Makefile.def (revision 120002)
+++ Makefile.def (working copy)
@@ -226,6 +226,7 @@ flags_to_pass = { flag= LDFLAGS ; };
flags_to_pass = { flag= LIBCFLAGS ; };
flags_to_pass = { flag= LIBCXXFLAGS ; };
flags_to_pass = { flag= STAGE1_CFLAGS ; };
+flags_to_pass = { flag= STAGE1_CHECKING ; };
flags_to_pass = { flag= STAGE1_LANGUAGES ; };
// Target tools
@@ -487,7 +488,14 @@ dependencies = { module=all-target-winsu
// Toplevel bootstrap
bootstrap_stage = {
id=1 ;
- stage_configure_flags='--disable-intermodule \
+
+ // * We force-disable intermodule optimizations, even if
+ // --enable-intermodule was passed, since the installed compiler
+ // probably can't handle them. Luckily, autoconf always respects
+ // the last argument when conflicting --enable arguments are passed.
+ // * Likewise, we force-disable coverage flags, since the installed
+ // compiler probably has never heard of them.
+ stage_configure_flags='--disable-intermodule $(STAGE1_CHECKING) \
--disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"' ;
stage_make_flags='CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)"' ; };
bootstrap_stage = {
Index: Makefile.tpl
===================================================================
--- Makefile.tpl (revision 120002)
+++ Makefile.tpl (working copy)
@@ -300,6 +300,16 @@ CXXFLAGS = @CXXFLAGS@
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
PICFLAG =
+# Only build the C compiler for stage1, because that is the only one that
+# we can guarantee will build with the native compiler, and also it is the
+# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS),
+# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
+# overrideable (for a bootstrap build stage1 also builds gcc.info).
+
+STAGE1_CFLAGS=@stage1_cflags@
+STAGE1_CHECKING=@stage1_checking@
+STAGE1_LANGUAGES=@stage1_languages@
+
# -----------------------------------------------
# Programs producing files for the TARGET machine
# -----------------------------------------------
@@ -431,6 +441,16 @@ X11_FLAGS_TO_PASS = \
'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \
'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)'
+# Flags to pass to stage2 and later makes.
+
+POSTSTAGE1_FLAGS_TO_PASS = \
+ CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
+ STAGE_PREFIX="$$r/$(HOST_SUBDIR)/prev-gcc/" \
+ CFLAGS="$(BOOT_CFLAGS)" \
+ LIBCFLAGS="$(BOOT_CFLAGS)" \
+ LDFLAGS="$(BOOT_LDFLAGS)" \
+ "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
+
# Flags to pass down to makes which are built with the target environment.
# The double $ decreases the length of the command line; those variables
# are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. The
@@ -1246,36 +1266,9 @@ LEAN = false
# 'touch' doesn't work right on some platforms.
STAMP = echo timestamp >
-# Only build the C compiler for stage1, because that is the only one that
-# we can guarantee will build with the native compiler, and also it is the
-# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS),
-# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
-# overrideable (for a bootstrap build stage1 also builds gcc.info).
-
-STAGE1_CFLAGS=@stage1_cflags@
-STAGE1_LANGUAGES=@stage1_languages@
-
# We only want to compare .o files, so set this!
objext = .o
-# Flags to pass to stage2 and later makes.
-POSTSTAGE1_FLAGS_TO_PASS = \
- CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
- STAGE_PREFIX="$$r/$(HOST_SUBDIR)/prev-gcc/" \
- CFLAGS="$(BOOT_CFLAGS)" \
- LIBCFLAGS="$(BOOT_CFLAGS)" \
- LDFLAGS="$(BOOT_LDFLAGS)" \
- "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
-
-# For stage 1:
-# * We force-disable intermodule optimizations, even if
-# --enable-intermodule was passed, since the installed compiler probably
-# can't handle them. Luckily, autoconf always respects
-# the last argument when conflicting --enable arguments are passed.
-# * Likewise, we force-disable coverage flags, since the installed compiler
-# probably has never heard of them.
-# * We build only C (and possibly Ada).
-
[+ FOR bootstrap-stage +]
.PHONY: stage[+id+]-start stage[+id+]-end
Index: configure.in
===================================================================
--- configure.in (revision 120002)
+++ configure.in (working copy)
@@ -2428,6 +2464,18 @@ fi
AC_SUBST(stage1_cflags)
+# Enable --enable-checking in stage1 of the compiler.
+AC_ARG_ENABLE(stage1-checking,
+[ --enable-stage1-checking[=all] choose additional checking for stage1
+ of the compiler.],
+[stage1_checking=--enable-checking=${enable_stage1_checking}],
+[if test "x$enable_checking" = xno; then
+ stage1_checking=--enable-checking
+else
+ stage1_checking=--enable-checking${enable_checking+=}$enable_checking
+fi])
+AC_SUBST(stage1_checking)
+
# Enable -Werror in bootstrap stage2 and later.
# Change the default to "no" on release branches.
AC_ARG_ENABLE(werror,
Index: gcc/Makefile.in
===================================================================
--- gcc/Makefile.in (revision 119247)
+++ gcc/Makefile.in (working copy)
@@ -155,7 +155,7 @@ TCFLAGS =
CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
STAGE1_CFLAGS = -g @stage1_cflags@
-STAGE1_CHECKING = -DENABLE_CHECKING -DENABLE_ASSERT_CHECKING
+STAGE1_CHECKING_CFLAGS = -DENABLE_CHECKING -DENABLE_ASSERT_CHECKING
BOOT_CFLAGS = -g -O2
# Flags to determine code coverage. When coverage is disabled, this will
@@ -4201,7 +4201,7 @@ STAGEFEEDBACK_FLAGS_TO_PASS = \
# The stage1 compiler is always built with checking enabled.
stage1_build:
$(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)" \
- CFLAGS="$(STAGE1_CFLAGS) $(STAGE1_CHECKING)" \
+ CFLAGS="$(STAGE1_CFLAGS) $(STAGE1_CHECKING_CFLAGS)" \
MAKEINFO="$(MAKEINFO)" MAKEINFOFLAGS="$(MAKEINFOFLAGS)" \
COVERAGE_FLAGS= OBJS-onestep="$(OBJS)"
$(STAMP) stage1_build