[PATCH] Skip libstdc++ debug build in early bootstrap stages

Jonathan Wakely jwakely@redhat.com
Thu Jun 20 14:23:00 GMT 2019


As mentioned in PR 90770, this is a patch that Debian have been carrying
for some time. The additional unoptimized copies of libstdc++ libs that
get built during each stage are never going to be used, so don't bother
building them.

For a profiled bootstrap this means we won't train the compiler on the
unoptimized library code with assertions enabled, but that doesn't seem
like a big problem, as the same code has already been compiled once for
the main libstdc++ library.

	* acinclude.m4 (GLIBCXX_ENABLE_DEBUG): Only do debug build for final
	stage of bootstrap.
	* configure: Regenerate.

Tested x86_64-linux, committed to trunk.


-------------- next part --------------
commit 6473c6e506298bba6111df73fc9810642113a321
Author: redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Thu Jun 20 14:17:57 2019 +0000

    Skip libstdc++ debug build in early bootstrap stages
    
    As mentioned in PR 90770, this is a patch that Debian have been carrying
    for some time. The additional unoptimized copies of libstdc++ libs that
    get built during each stage are never going to be used, so don't bother
    building them.
    
    For a profiled bootstrap this means we won't train the compiler on the
    unoptimized library code with assertions enabled, but that doesn't seem
    like a big problem, as the same code has already been compiled once for
    the main libstdc++ library.
    
            * acinclude.m4 (GLIBCXX_ENABLE_DEBUG): Only do debug build for final
            stage of bootstrap.
            * configure: Regenerate.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272509 138bc75d-0d04-0410-961f-82ee72b054a4

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 19e9f14b0f5..fad390ba322 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -2899,8 +2899,20 @@ dnl       Where DEFAULT is either `yes' or `no'.
 dnl
 AC_DEFUN([GLIBCXX_ENABLE_DEBUG], [
   AC_MSG_CHECKING([for additional debug build])
+  skip_debug_build=
   GLIBCXX_ENABLE(libstdcxx-debug,$1,,[build extra debug library])
-  AC_MSG_RESULT($enable_libstdcxx_debug)
+  if test x$enable_libstdcxx_debug = xyes; then
+    if test -f $toplevel_builddir/../stage_final \
+      && test -f $toplevel_builddir/../stage_current; then
+      stage_final=`cat $toplevel_builddir/../stage_final`
+      stage_current=`cat $toplevel_builddir/../stage_current`
+      if test x$stage_current != x$stage_final ; then
+	skip_debug_build=" (skipped for bootstrap stage $stage_current)"
+	enable_libstdcxx_debug=no
+      fi
+    fi
+  fi
+  AC_MSG_RESULT($enable_libstdcxx_debug$skip_debug_build)
   GLIBCXX_CONDITIONAL(GLIBCXX_BUILD_DEBUG, test $enable_libstdcxx_debug = yes)
 ])
 


More information about the Libstdc++ mailing list