aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorTiziano Müller <tiziano.mueller@chem.uzh.ch>2020-07-29 07:28:23 -0700
committerNathan Sidwell <nathan@acm.org>2020-07-29 07:47:21 -0700
commitf6fe3bbf9f6c0b7249933e19b94560b6b26bf269 (patch)
tree92e81c82505a9d23ed95b53c521f8dc1a40dd14d /libcpp
parent55ede0bb87e74463c5b89fbfd501e85e9e683048 (diff)
downloadgcc-f6fe3bbf9f6c0b7249933e19b94560b6b26bf269.zip
gcc-f6fe3bbf9f6c0b7249933e19b94560b6b26bf269.tar.gz
gcc-f6fe3bbf9f6c0b7249933e19b94560b6b26bf269.tar.bz2
preprocessor: Teach traditional about has_include [PR95889]
Traditional cpp (used by fortran) didn;t know about the new __has_include__ implementation. Hey, since when did traditional cpp grow __has_include__? That wasn't in knr! libcpp/ * init.c (builtin_array): Add xref comment. * traditional.c (fun_like_macro): Add HAS_INCLUDE codes. gcc/testsuite/ * c-c++-common/cpp/has-include-1-traditional.c: New.
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/init.c3
-rw-r--r--libcpp/traditional.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/libcpp/init.c b/libcpp/init.c
index f9f1fb2..aba5854 100644
--- a/libcpp/init.c
+++ b/libcpp/init.c
@@ -400,6 +400,9 @@ static const struct builtin_macro builtin_array[] =
B("__LINE__", BT_SPECLINE, true),
B("__INCLUDE_LEVEL__", BT_INCLUDE_LEVEL, true),
B("__COUNTER__", BT_COUNTER, true),
+ /* Make sure to update the list of built-in
+ function-like macros in traditional.c:
+ fun_like_macro() when adding more following */
B("__has_attribute", BT_HAS_ATTRIBUTE, true),
B("__has_cpp_attribute", BT_HAS_ATTRIBUTE, true),
B("__has_builtin", BT_HAS_BUILTIN, true),
diff --git a/libcpp/traditional.c b/libcpp/traditional.c
index 77adb3b..b087072 100644
--- a/libcpp/traditional.c
+++ b/libcpp/traditional.c
@@ -330,7 +330,9 @@ fun_like_macro (cpp_hashnode *node)
{
if (cpp_builtin_macro_p (node))
return (node->value.builtin == BT_HAS_ATTRIBUTE
- || node->value.builtin == BT_HAS_BUILTIN);
+ || node->value.builtin == BT_HAS_BUILTIN
+ || node->value.builtin == BT_HAS_INCLUDE
+ || node->value.builtin == BT_HAS_INCLUDE_NEXT);
return node->value.macro->fun_like;
}