https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100462
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED --- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> --- And that is documented to behave that way. The PCH header must be the first header that contains any tokens. PCH works by dumping the compiler state after compiling the header, and at #include line if found restores that state from the *.gch file. So, there can't be any state before that, it would be lost. And the macros and important options need to match.