From f6fe3bbf9f6c0b7249933e19b94560b6b26bf269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiziano=20M=C3=BCller?= Date: Wed, 29 Jul 2020 07:28:23 -0700 Subject: 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. --- libcpp/init.c | 3 +++ libcpp/traditional.c | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'libcpp') 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; } -- cgit v1.1