This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Work around PR bootstrap/62077
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Richard Biener <rguenther at suse dot de>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 17 Apr 2015 14:37:08 +0200
- Subject: [PATCH] Work around PR bootstrap/62077
- Authentication-results: sourceware.org; auth=none
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
Hi!
As discussed in the PR, during LTO bootstrap we have some hard to debug
issues where different gc checking values between stage1 and stage2 result
in different GC collections and occassionally we generate different code for
that. The stated workaround is --enable-stage1-checking=release,
I've narrowed it down to just the gc checking that should if possible for
lto bootstraps match between stage1 and later checking, and
--enable-checking=yes,types that we want to use by default for stage1
minus gc checking is --enable-checking=release,misc,gimple,rtlflag,tree,types
This patch arranges to do that by default, i.e. for e.g.
--disable-checking --with-build-config=bootstrap-lto
--with-build-config=bootstrap-lto-noplugin
(the latter only on the release branches). When --enable-checking is used
explicitly, gc matches between the stages, as we use then
--enable-checking=$enable_checking,types
and for explicit --enable-stage1-checking of course we should honor whatever
the user asked for.
Bootstrapped/regtested on x86_64-linux on the GCC 5 branch
with
--with-build-config=bootstrap-lto
and tested with just running configure and inspecting config.status on both
GCC 5 branch and trunk for
default
--with-build-config=bootstrap-lto
--disable-checking
--disable-checking --with-build-config=bootstrap-lto
--enable-checking=release
--enable-checking=release --with-build-config=bootstrap-lto
--enable-checking=yes
--enable-checking=yes --with-build-config=bootstrap-lto
--enable-checking=misc
--enable-checking=misc --with-build-config=bootstrap-lto
Ok for trunk/5.1?
2015-04-17 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/62077
* configure.ac (--enable-stage1-checking): Default to
release,misc,gimple,rtlflag,tree,types if --disable-checking
or --enable-checking is not specified and DEV-PHASE is not
experimental.
* configure: Regenerated.
--- configure.ac.jj 2015-04-12 21:48:10.891076088 +0200
+++ configure.ac 2015-04-17 13:48:00.591972993 +0200
@@ -3482,7 +3482,19 @@ AC_ARG_ENABLE(stage1-checking,
[choose additional checking for stage1 of the compiler])],
[stage1_checking=--enable-checking=${enable_stage1_checking}],
[if test "x$enable_checking" = xno || test "x$enable_checking" = x; then
- stage1_checking=--enable-checking=yes,types
+ # For --disable-checking or implicit --enable-checking=release, avoid
+ # setting --enable-checking=gc in the default stage1 checking for LTO
+ # bootstraps. See PR62077.
+ stage1_checking=--enable-checking=release,misc,gimple,rtlflag,tree,types
+ case $BUILD_CONFIG in
+ *lto*)
+ if test "x$enable_checking" = x && \
+ test -d ${srcdir}/gcc && \
+ test x"`cat ${srcdir}/gcc/DEV-PHASE`" = xexperimental; then
+ stage1_checking=--enable-checking=yes,types
+ fi;;
+ *) stage1_checking=--enable-checking=yes,types;;
+ esac
else
stage1_checking=--enable-checking=$enable_checking,types
fi])
--- configure.jj 2015-04-12 21:48:53.000000000 +0200
+++ configure 2015-04-17 13:48:14.674745554 +0200
@@ -14761,7 +14761,19 @@ if test "${enable_stage1_checking+set}"
enableval=$enable_stage1_checking; stage1_checking=--enable-checking=${enable_stage1_checking}
else
if test "x$enable_checking" = xno || test "x$enable_checking" = x; then
- stage1_checking=--enable-checking=yes,types
+ # For --disable-checking or implicit --enable-checking=release, avoid
+ # setting --enable-checking=gc in the default stage1 checking for LTO
+ # bootstraps. See PR62077.
+ stage1_checking=--enable-checking=release,misc,gimple,rtlflag,tree,types
+ case $BUILD_CONFIG in
+ *lto*)
+ if test "x$enable_checking" = x && \
+ test -d ${srcdir}/gcc && \
+ test x"`cat ${srcdir}/gcc/DEV-PHASE`" = xexperimental; then
+ stage1_checking=--enable-checking=yes,types
+ fi;;
+ *) stage1_checking=--enable-checking=yes,types;;
+ esac
else
stage1_checking=--enable-checking=$enable_checking,types
fi
Jakub