From f769d22ab685671095525d09ef29eeeed0ae3cee Mon Sep 17 00:00:00 2001 From: LIU Hao Date: Tue, 10 May 2022 13:19:07 +0800 Subject: [PATCH] gcc: Remove size limit of PCH for *-*-mingw32 hosts PCHs can now be relocated, so the size limit makes no sense any more. This patch was submited to MSYS2 9 months ago for GCC 12. No issue has been reported so far. Reference: https://github.com/msys2/MINGW-packages/blob/717d5a5a09e2370e3bd7e12b393a26dbfbe48921/mingw-w64-gcc/0010-Fix-using-large-PCH.patch Signed-off-by: LIU Hao gcc/ChangeLog: PR pch/14940 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address): Remove the size limit `pch_VA_max_size` Signed-off-by: Jonathan Yong <10walls@gmail.com> --- gcc/config/i386/host-mingw32.cc | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/gcc/config/i386/host-mingw32.cc b/gcc/config/i386/host-mingw32.cc index aeee956..acff613 100644 --- a/gcc/config/i386/host-mingw32.cc +++ b/gcc/config/i386/host-mingw32.cc @@ -44,9 +44,6 @@ static size_t mingw32_gt_pch_alloc_granularity (void); static inline void w32_error(const char*, const char*, int, const char*); -/* FIXME: Is this big enough? */ -static const size_t pch_VA_max_size = 128 * 1024 * 1024; - /* Granularity for reserving address space. */ static size_t va_granularity = 0x10000; @@ -88,9 +85,6 @@ static void * mingw32_gt_pch_get_address (size_t size, int) { void* res; - size = (size + va_granularity - 1) & ~(va_granularity - 1); - if (size > pch_VA_max_size) - return NULL; /* FIXME: We let system determine base by setting first arg to NULL. Allocating at top of available address space avoids unnecessary @@ -100,7 +94,7 @@ mingw32_gt_pch_get_address (size_t size, int) If we allocate at bottom we need to reserve the address as early as possible and at the same point in each invocation. */ - res = VirtualAlloc (NULL, pch_VA_max_size, + res = VirtualAlloc (NULL, size, MEM_RESERVE | MEM_TOP_DOWN, PAGE_NOACCESS); if (!res) @@ -150,7 +144,7 @@ mingw32_gt_pch_use_address (void *&addr, size_t size, int fd, /* Offset must be also be a multiple of allocation granularity for this to work. We can't change the offset. */ - if ((offset & (va_granularity - 1)) != 0 || size > pch_VA_max_size) + if ((offset & (va_granularity - 1)) != 0) return -1; -- 2.7.4