aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog3
-rw-r--r--libcpp/macro.c5
2 files changed, 8 insertions, 0 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 11c0773..cc5c575 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,5 +1,8 @@
2020-02-04 Jakub Jelinek <jakub@redhat.com>
+ * macro.c (builtin_has_include): Diagnose __has_include* use outside
+ of preprocessing directives.
+
PR preprocessor/93545
* macro.c (cpp_get_token_no_padding): New function.
(builtin_has_include): Use it instead of cpp_get_token. Don't check
diff --git a/libcpp/macro.c b/libcpp/macro.c
index 9f9f831..ec00307 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -359,6 +359,11 @@ builtin_has_include (cpp_reader *pfile, cpp_hashnode *op, bool has_next)
{
int result = 0;
+ if (!pfile->state.in_directive)
+ cpp_error (pfile, CPP_DL_ERROR,
+ "\"%s\" used outside of preprocessing directive",
+ NODE_NAME (op));
+
pfile->state.angled_headers = true;
const cpp_token *token = cpp_get_token_no_padding (pfile);
bool paren = token->type == CPP_OPEN_PAREN;