https://gcc.gnu.org/g:da50e9a7936a8a8226b4c3b7d8624074d014beef

commit r16-7279-gda50e9a7936a8a8226b4c3b7d8624074d014beef
Author: Jakub Jelinek <[email protected]>
Date:   Wed Feb 4 11:49:01 2026 +0100

    toplevel: Build stage1/stage2/stageprofile libstdc++ with 
--disable-libstdcxx-pch when bootstrapping
    
    The following patch saves ~ 2.4GiB of disk space in x86_64-linux
    bootstrapped object directory:
    find obj80 -name \*.gch -a -type f | xargs du -shc | grep total
    3.7G    total
    find obj82 -name \*.gch -a -type f | xargs du -shc | grep total
    1.3G    total
    and ~ 800MiB for i686-linux:
    find obj81 -name \*.gch -a -type f | xargs du -shc | grep total
    1.2G    total
    find obj83 -name \*.gch -a -type f | xargs du -shc | grep total
    409M    total
    by disabling PCH in stage1/stage2/stageprofile builds, so only
    building it in stage3/stagefeedback etc.
    I think in stage1/stage2 it is a pure waste of bootstrap time and disk
    space, for profiledbootstrap I'd say PCH isn't used commonly enough
    in the wild that it is worth training GCC on that (but if you disagree,
    I can surely take out that single line in there).
    
    2026-02-04  Jakub Jelinek  <[email protected]>
    
            * Makefile.tpl (STAGE1_CONFIGURE_FLAGS, STAGE2_CONFIGURE_FLAGS,
            STAGEprofile_CONFIGURE_FLAGS): Append --disable-libstdcxx-pch if
            target-libstdc++-v3-bootstrap.
            * Makefile.in: Regenerate.

Diff:
---
 Makefile.in  | 6 ++++++
 Makefile.tpl | 6 ++++++
 2 files changed, 12 insertions(+)

diff --git a/Makefile.in b/Makefile.in
index ae0892e79337..e0e8a872f40a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -633,6 +633,12 @@ STAGE1_CONFIGURE_FLAGS = $(STAGE1_CHECKING) \
          --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" \
          --disable-build-format-warnings
 
+@if target-libstdc++-v3-bootstrap
+STAGE1_CONFIGURE_FLAGS += --disable-libstdcxx-pch
+STAGE2_CONFIGURE_FLAGS += --disable-libstdcxx-pch
+STAGEprofile_CONFIGURE_FLAGS += --disable-libstdcxx-pch
+@endif target-libstdc++-v3-bootstrap
+
 @if target-libphobos-bootstrap
 STAGE1_CONFIGURE_FLAGS += --with-libphobos-druntime-only
 STAGE2_CONFIGURE_FLAGS += --with-libphobos-druntime-only
diff --git a/Makefile.tpl b/Makefile.tpl
index 7e8016416619..e634d17aa578 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -556,6 +556,12 @@ STAGE1_CONFIGURE_FLAGS = $(STAGE1_CHECKING) \
          --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" \
          --disable-build-format-warnings
 
+@if target-libstdc++-v3-bootstrap
+STAGE1_CONFIGURE_FLAGS += --disable-libstdcxx-pch
+STAGE2_CONFIGURE_FLAGS += --disable-libstdcxx-pch
+STAGEprofile_CONFIGURE_FLAGS += --disable-libstdcxx-pch
+@endif target-libstdc++-v3-bootstrap
+
 @if target-libphobos-bootstrap
 STAGE1_CONFIGURE_FLAGS += --with-libphobos-druntime-only
 STAGE2_CONFIGURE_FLAGS += --with-libphobos-druntime-only

Reply via email to