http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57653
--- Comment #14 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to Allan McRae from comment #13) > The file "/usr/include/stdc-predef.h" is from glibc (v2.17 on Arch) and is > specifically mentioned as being preincluded in > http://gcc.gnu.org/gcc-4.8/porting_to.html. In fact, using -ffreestanding > "solves" the issue. So when you use -ffreestanding, is stdc-predef.h still included? You could put a break in push_command_line_include and check if -include foo.h still includes stdc-predef.h and whether it shows also the problem. If the file is included but there is no bug, then my guess is that the code executed before or after the pre-include stdc-predef.h is missing something for the -imacros case. If it shows the bug, then the code for pre-including stuff must be wrong somehow, perhaps cpp_push_default_include is doing something wrong when compared to cpp_push_include.