public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH 0/2] cpp: fix __has_include in traditional mode
@ 2020-07-28  7:28 Tiziano Müller
  2020-07-28  7:28 ` [PATCH 1/2] libcpp: fix __has_include handling with traditional-cpp Tiziano Müller
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Tiziano Müller @ 2020-07-28  7:28 UTC (permalink / raw)
  To: gcc-patches; +Cc: Tiziano Müller

Hi there,

this patch intends to fix the regression introduced in gcc 10 with __has_include,
see also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95889

Best,
Tiziano

Tiziano Müller (2):
  libcpp: fix __has_include handling with traditional-cpp
  [testsuite] add tests for __has_include with traditional-cpp

 gcc/testsuite/ChangeLog                       |  4 ++
 .../cpp/has-include-1-traditional.c           | 38 +++++++++++++++++++
 libcpp/init.c                                 |  3 ++
 libcpp/traditional.c                          |  4 +-
 4 files changed, 48 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/c-c++-common/cpp/has-include-1-traditional.c

-- 
2.26.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] libcpp: fix __has_include handling with traditional-cpp
  2020-07-28  7:28 [PATCH 0/2] cpp: fix __has_include in traditional mode Tiziano Müller
@ 2020-07-28  7:28 ` Tiziano Müller
  2020-07-28  7:28 ` [PATCH 2/2] [testsuite] add tests for __has_include " Tiziano Müller
  2020-07-29 12:52 ` [PATCH 0/2] cpp: fix __has_include in traditional mode Nathan Sidwell
  2 siblings, 0 replies; 5+ messages in thread
From: Tiziano Müller @ 2020-07-28  7:28 UTC (permalink / raw)
  To: gcc-patches; +Cc: Tiziano Müller

fixes #95889
---
 libcpp/init.c        | 3 +++
 libcpp/traditional.c | 4 +++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/libcpp/init.c b/libcpp/init.c
index 0aac5acd0a3..b0cf7119258 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 77adb3bf595..b087072c9b4 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;
 }
 
-- 
2.26.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/2] [testsuite] add tests for __has_include with traditional-cpp
  2020-07-28  7:28 [PATCH 0/2] cpp: fix __has_include in traditional mode Tiziano Müller
  2020-07-28  7:28 ` [PATCH 1/2] libcpp: fix __has_include handling with traditional-cpp Tiziano Müller
@ 2020-07-28  7:28 ` Tiziano Müller
  2020-07-29 12:52 ` [PATCH 0/2] cpp: fix __has_include in traditional mode Nathan Sidwell
  2 siblings, 0 replies; 5+ messages in thread
From: Tiziano Müller @ 2020-07-28  7:28 UTC (permalink / raw)
  To: gcc-patches; +Cc: Tiziano Müller

---
 gcc/testsuite/ChangeLog                       |  4 ++
 .../cpp/has-include-1-traditional.c           | 38 +++++++++++++++++++
 2 files changed, 42 insertions(+)
 create mode 100644 gcc/testsuite/c-c++-common/cpp/has-include-1-traditional.c

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 477804eec9b..18f81e1befa 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2020-07-27  Tiziano Müller <tiziano.mueller@chem.uzh.ch>
+
+	* c-c++-common/cpp/has-include-1-traditional.c: New test.
+
 2020-07-27  Hans-Peter Nilsson  <hp@bitrange.com>
 
 	* gcc.dg/tree-ssa/reassoc-20.c: Adjust for mmix.
diff --git a/gcc/testsuite/c-c++-common/cpp/has-include-1-traditional.c b/gcc/testsuite/c-c++-common/cpp/has-include-1-traditional.c
new file mode 100644
index 00000000000..b0acdbece4d
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/cpp/has-include-1-traditional.c
@@ -0,0 +1,38 @@
+/* { dg-do preprocess { target c } } */
+/* { dg-options "-traditional-cpp" } */
+
+#if __has_include ("stdlib.h")
+#else
+#error error 1
+#endif
+#if __has_include (<stdlib.h>)
+#else
+#error error 2
+#endif
+#if !__has_include ("stdlib.h")
+#error error 3
+#elif !__has_include (<stdlib.h>)
+#error error 4
+#endif
+#if __has_include ("stdlib.h") && __has_include (<stdlib.h>)
+#else
+#error error 5
+#endif
+#if !defined(__has_include)
+#error error 6
+#endif
+#ifndef __has_include
+#error error 7
+#endif
+#ifdef __has_include
+#else
+#error error 8
+#endif
+#define m1 __has_include("stdlib.h")
+#define m2 <stdlib.h>
+#if !m1
+#error error 9
+#endif
+#if !__has_include (m2)
+#error error 13
+#endif
-- 
2.26.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/2] cpp: fix __has_include in traditional mode
  2020-07-28  7:28 [PATCH 0/2] cpp: fix __has_include in traditional mode Tiziano Müller
  2020-07-28  7:28 ` [PATCH 1/2] libcpp: fix __has_include handling with traditional-cpp Tiziano Müller
  2020-07-28  7:28 ` [PATCH 2/2] [testsuite] add tests for __has_include " Tiziano Müller
@ 2020-07-29 12:52 ` Nathan Sidwell
  2020-07-29 13:15   ` Tiziano Müller
  2 siblings, 1 reply; 5+ messages in thread
From: Nathan Sidwell @ 2020-07-29 12:52 UTC (permalink / raw)
  To: Tiziano Müller, gcc-patches

On 7/28/20 3:28 AM, Tiziano Müller wrote:
> Hi there,
> 
> this patch intends to fix the regression introduced in gcc 10 with __has_include,
> see also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95889

Thanks, do you have write access?  I don't see your name in MAINTAINERS.

[for avoidance of doubt, this is sufficiently restricted I'm not 
concerned with copyright assignment, there is only one way to write this 
change]

nathan
> 
> Best,
> Tiziano
> 
> Tiziano Müller (2):
>    libcpp: fix __has_include handling with traditional-cpp
>    [testsuite] add tests for __has_include with traditional-cpp
> 
>   gcc/testsuite/ChangeLog                       |  4 ++
>   .../cpp/has-include-1-traditional.c           | 38 +++++++++++++++++++
>   libcpp/init.c                                 |  3 ++
>   libcpp/traditional.c                          |  4 +-
>   4 files changed, 48 insertions(+), 1 deletion(-)
>   create mode 100644 gcc/testsuite/c-c++-common/cpp/has-include-1-traditional.c
> 


-- 
Nathan Sidwell

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/2] cpp: fix __has_include in traditional mode
  2020-07-29 12:52 ` [PATCH 0/2] cpp: fix __has_include in traditional mode Nathan Sidwell
@ 2020-07-29 13:15   ` Tiziano Müller
  0 siblings, 0 replies; 5+ messages in thread
From: Tiziano Müller @ 2020-07-29 13:15 UTC (permalink / raw)
  To: Nathan Sidwell; +Cc: gcc-patches

Hi Nathan,

On 29.07.20 14:52, Nathan Sidwell wrote:
> On 7/28/20 3:28 AM, Tiziano Müller wrote:
>> Hi there,
>>
>> this patch intends to fix the regression introduced in gcc 10 with 
>> __has_include,
>> see also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95889
> 
> Thanks, do you have write access?  I don't see your name in MAINTAINERS.

No, I don't.

> [for avoidance of doubt, this is sufficiently restricted I'm not 
> concerned with copyright assignment, there is only one way to write this 
> change]

Me neither, just glad to get this fixed ;-)

Best,
Tiziano

-- 
Tiziano Müller
University of Zurich
Department of Chemistry
Winterthurerstrasse 190
CH-8057 Zürich

Tel: +41 44 63 54234
www.chem.uzh.ch
tiziano.mueller@chem.uzh.ch

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-07-29 13:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-28  7:28 [PATCH 0/2] cpp: fix __has_include in traditional mode Tiziano Müller
2020-07-28  7:28 ` [PATCH 1/2] libcpp: fix __has_include handling with traditional-cpp Tiziano Müller
2020-07-28  7:28 ` [PATCH 2/2] [testsuite] add tests for __has_include " Tiziano Müller
2020-07-29 12:52 ` [PATCH 0/2] cpp: fix __has_include in traditional mode Nathan Sidwell
2020-07-29 13:15   ` Tiziano Müller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).