This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]