diff options
author | Tiziano Müller <tiziano.mueller@chem.uzh.ch> | 2020-07-29 07:28:23 -0700 |
---|---|---|
committer | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-17 13:20:05 -0300 |
commit | efacf79b2a3a6a3fe32e33d65584f3223e62ac70 (patch) | |
tree | b3eb9f903491fbd4a80f9fc5cfd59ae222182475 /libcpp | |
parent | fea6942f5b748ff9fa442aaf147da3c35e4b4b96 (diff) | |
download | gcc-efacf79b2a3a6a3fe32e33d65584f3223e62ac70.zip gcc-efacf79b2a3a6a3fe32e33d65584f3223e62ac70.tar.gz gcc-efacf79b2a3a6a3fe32e33d65584f3223e62ac70.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.c | 3 | ||||
-rw-r--r-- | libcpp/traditional.c | 4 |
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; } |