https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56926
--- Comment #14 from asmwarrior <asmwarrior at gmail dot com> --- The bug can be seen when "-E" and "-fpch-preprocess" is used together to generate a preprocessed file. If I have a small pch file named "spch.h" and "spch.h.gch"(note the spch.h.gch size is about 47M), and if I have a test.cpp like below: ------ #include "spch.h" int main() { int a; int b; int c; a++; b++; } ------ Then, run the command: g++.exe -v -E -Wall -fexceptions -g -march=core2 -Wall -ID:\mingw-builds\boost_1_55_0 -Winvalid-pch -include spch.h test.cpp -fpch-preprocess -o xxx.ii -ftime-report I will get a xxx.ii containing such contents: ------ # 1 "test.cpp" # 1 "D:\\mingw-builds\\test-51//" # 1 "<built-in>" # 1 "<command-line>" #pragma GCC pch_preprocess "./spch.h.gch" # 1 "test.cpp" # 1 "spch.h" 1 # 2 "test.cpp" 2 int main() { int a; int b; int c; a++; b++; } ------ You see, the line "#pragma GCC pch_preprocess "./spch.h.gch"" is generated correctly, which means G++ load the pch file correctly. (That's what the -fpch-preprocess option used for, see: https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html) But if I use a big pch file "pch.h.gch", and run the similar command line like above, I don't see any .ii file generated, which means G++ crashed before log out the line "#pragma GCC pch_preprocess ...". By reading the source code, I see that in gcc-4.9.2\gcc\c-family\c-ppoutput.c, there is a function: /* Load in the PCH file NAME, open on FD. It was originally searched for by ORIG_NAME. Also, print out a #include command so that the PCH file can be loaded when the preprocessed output is compiled. */ static void cb_read_pch (cpp_reader *pfile, const char *name, int fd, const char *orig_name ATTRIBUTE_UNUSED) { c_common_read_pch (pfile, name, fd, orig_name); fprintf (print.outf, "#pragma GCC pch_preprocess \"%s\"\n", name); print.src_line++; } So, the bug happens before the fprintf() function, maybe inside the c_common_read_pch function call. I would like to see anyone can supply a debug version of 32bit cc1plus.exe, so that I can hunt the bug further under GDB, because building the whole gcc tool chain is too difficult for me.