https://gcc.gnu.org/g:32f99225bcaae9b792aec143239d17f2b7e2c54b

commit r15-927-g32f99225bcaae9b792aec143239d17f2b7e2c54b
Author: Rainer Orth <r...@cebitec.uni-bielefeld.de>
Date:   Thu May 30 15:00:59 2024 +0200

    ggc: Reduce GGC_QUIRE_SIZE on Solaris/SPARC [PR115031]
    
    g++.dg/modules/pr99023_b.X currently FAILs on 32-bit Solaris/SPARC:
    
    FAIL: g++.dg/modules/pr99023_b.X -std=c++2a  1 blank line(s) in output
    FAIL: g++.dg/modules/pr99023_b.X -std=c++2a (test for excess errors)
    
    Excess errors:
    cc1plus: out of memory allocating 1048344 bytes after a total of 7913472 
bytes
    
    It turns out that this exhaustion of the 32-bit address space happens
    due to a combination of three issues:
    
    * the SPARC pagesize of 8 kB,
    
    * ggc-page.cc's chunk size of 512 * pagesize, i.e. 4 MB, and
    
    * mmap adding two 8 kB unmapped red-zone pages to each mapping
    
    which result in the 4 MB mappings to actually consume 4.5 MB of address
    space.
    
    To avoid this, this patch reduces the chunk size so it remains at 4 MB
    even when combined with the red-zone pages, as recommended by mmap(2).
    
    Tested on sparc-sun-solaris2.11 and sparcv9-sun-solaris2.11.
    
    2024-05-29  Rainer Orth  <r...@cebitec.uni-bielefeld.de>
    
            gcc:
            PR c++/115031
            * config/sparc/sol2.h (GGC_QUIRE_SIZE): Define as 510.

Diff:
---
 gcc/config/sparc/sol2.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h
index 552f58b2cc8..530e681aaee 100644
--- a/gcc/config/sparc/sol2.h
+++ b/gcc/config/sparc/sol2.h
@@ -38,6 +38,9 @@ along with GCC; see the file COPYING3.  If not see
 #undef SPARC_DEFAULT_CMODEL
 #define SPARC_DEFAULT_CMODEL CM_MEDMID
 
+/* Redue ggc-page.cc's chunk size to account for mmap red-zone pages.  */
+#define GGC_QUIRE_SIZE 510
+
 /* Select a format to encode pointers in exception handling data.  CODE
    is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
    true if the symbol may be affected by dynamic relocations.

Reply via email to