https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88974
David Binderman <dcb314 at hotmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dcb314 at hotmail dot com --- Comment #4 from David Binderman <dcb314 at hotmail dot com> --- Interestingly, a valgrind enabled version of recent gcc trunk does this: ./c-c++-common/cpp/pr88974.c:4:31: error: missing terminating > character 4 | #if __has_include (<pr88974.h) | ^ ./c-c++-common/cpp/pr88974.c:4:31: error: missing ')' after "__has_include" operand ==48268== Conditional jump or move depends on uninitialised value(s) ==48268== at 0x165057A: cpp_get_token_1(cpp_reader*, unsigned int*) (macro.c:2918) ==48268== by 0x163CA9C: _cpp_parse_expr (expr.c:1308) ==48268== by 0x1635B41: do_if(cpp_reader*) (directives.c:2018) ==48268== by 0x163780A: _cpp_handle_directive (directives.c:541) Maybe the fix could be tidied up a bit ?