public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PR100127] Test for coroutine header in clang-compatible tests
@ 2023-02-17  6:42 Alexandre Oliva
  2023-02-17 13:17 ` Iain Sandoe
  0 siblings, 1 reply; 4+ messages in thread
From: Alexandre Oliva @ 2023-02-17  6:42 UTC (permalink / raw)
  To: gcc-patches; +Cc: ro, mikestump, jason, nathan


The test is compatible with clang as well as gcc, but ISTM that
testing for the __clang__ macro is just as potentially error-prone as
macros that used to be GCC-specific are now defined in compilers that
aim for GCC compatibility.  Use a __has_include feature test instead.

Regstrapped on x86_64-linux-gnu.
Tested on arm-vxworks7 (gcc-12) and arm-eabi (trunk).  Ok to install?

for  gcc/testsuite/ChangeLog

	PR c++/100127
	* g++.dg/coroutines/pr100127.C: Test for header rather than
	compiler macro.
---
 gcc/testsuite/g++.dg/coroutines/pr100127.C   |    2 +-
 gcc/testsuite/g++.dg/coroutines/pr100772-a.C |    2 +-
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/gcc/testsuite/g++.dg/coroutines/pr100127.C b/gcc/testsuite/g++.dg/coroutines/pr100127.C
index 374cd710077af..1eaa72ff0acdd 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100127.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100127.C
@@ -1,4 +1,4 @@
-#ifdef __clang__
+#if __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
 namespace std {
   using namespace std::experimental;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-a.C b/gcc/testsuite/g++.dg/coroutines/pr100772-a.C
index a325d384fc390..724c377c82e5b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-a.C
@@ -1,5 +1,5 @@
 //  { dg-additional-options "-fsyntax-only " }
-#ifdef __clang__
+#if __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
 namespace std {
   using namespace std::experimental;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 6cdf8d1e529e5..4cf31e5f9e0c2 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,4 +1,4 @@
-#ifdef __clang__
+#if __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
 namespace std {
   using namespace std::experimental;

-- 
Alexandre Oliva, happy hacker                https://FSFLA.org/blogs/lxo/
   Free Software Activist                       GNU Toolchain Engineer
Disinformation flourishes because many people care deeply about injustice
but very few check the facts.  Ask me about <https://stallmansupport.org>

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

* Re: [PR100127] Test for coroutine header in clang-compatible tests
  2023-02-17  6:42 [PR100127] Test for coroutine header in clang-compatible tests Alexandre Oliva
@ 2023-02-17 13:17 ` Iain Sandoe
  2023-02-22 20:04   ` Alexandre Oliva
  0 siblings, 1 reply; 4+ messages in thread
From: Iain Sandoe @ 2023-02-17 13:17 UTC (permalink / raw)
  To: Alexandre Oliva
  Cc: GCC Patches, ro@cebitec.uni-bielefeld.de, Mike Stump,
	Jason Merrill, Nathan Sidwell

Hi,

> On 17 Feb 2023, at 06:42, Alexandre Oliva via Gcc-patches <gcc-patches@gcc.gnu.org> wrote:
> 
> 
> The test is compatible with clang as well as gcc, but ISTM that
> testing for the __clang__ macro is just as potentially error-prone as
> macros that used to be GCC-specific are now defined in compilers that
> aim for GCC compatibility.

It remains useful to be able to check tests on both compilers.

As a matter of interest, do you know of any other compiler claiming “__clang__” (I have
treated that as safe so far).

>  Use a __has_include feature test instead.

I think we need to do

#if __has_include(<coroutine>)
…
#elif __has_include(<experimental/coroutine>)
…

because newer clang has the include in the standard place.
Iain

> 
> Regstrapped on x86_64-linux-gnu.
> Tested on arm-vxworks7 (gcc-12) and arm-eabi (trunk).  Ok to install?
> 
> for  gcc/testsuite/ChangeLog
> 
> 	PR c++/100127
> 	* g++.dg/coroutines/pr100127.C: Test for header rather than
> 	compiler macro.
> ---
> gcc/testsuite/g++.dg/coroutines/pr100127.C   |    2 +-
> gcc/testsuite/g++.dg/coroutines/pr100772-a.C |    2 +-
> gcc/testsuite/g++.dg/coroutines/pr100772-b.C |    2 +-
> 3 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/gcc/testsuite/g++.dg/coroutines/pr100127.C b/gcc/testsuite/g++.dg/coroutines/pr100127.C
> index 374cd710077af..1eaa72ff0acdd 100644
> --- a/gcc/testsuite/g++.dg/coroutines/pr100127.C
> +++ b/gcc/testsuite/g++.dg/coroutines/pr100127.C
> @@ -1,4 +1,4 @@
> -#ifdef __clang__
> +#if __has_include(<experimental/coroutine>) // for __clang__
> #include <experimental/coroutine>
> namespace std {
>   using namespace std::experimental;
> diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-a.C b/gcc/testsuite/g++.dg/coroutines/pr100772-a.C
> index a325d384fc390..724c377c82e5b 100644
> --- a/gcc/testsuite/g++.dg/coroutines/pr100772-a.C
> +++ b/gcc/testsuite/g++.dg/coroutines/pr100772-a.C
> @@ -1,5 +1,5 @@
> //  { dg-additional-options "-fsyntax-only " }
> -#ifdef __clang__
> +#if __has_include(<experimental/coroutine>) // for __clang__
> #include <experimental/coroutine>
> namespace std {
>   using namespace std::experimental;
> diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
> index 6cdf8d1e529e5..4cf31e5f9e0c2 100644
> --- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
> +++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
> @@ -1,4 +1,4 @@
> -#ifdef __clang__
> +#if __has_include(<experimental/coroutine>) // for __clang__
> #include <experimental/coroutine>
> namespace std {
>   using namespace std::experimental;
> 
> -- 
> Alexandre Oliva, happy hacker                https://FSFLA.org/blogs/lxo/
>   Free Software Activist                       GNU Toolchain Engineer
> Disinformation flourishes because many people care deeply about injustice
> but very few check the facts.  Ask me about <https://stallmansupport.org>


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

* Re: [PR100127] Test for coroutine header in clang-compatible tests
  2023-02-17 13:17 ` Iain Sandoe
@ 2023-02-22 20:04   ` Alexandre Oliva
  2023-02-27 18:44     ` Mike Stump
  0 siblings, 1 reply; 4+ messages in thread
From: Alexandre Oliva @ 2023-02-22 20:04 UTC (permalink / raw)
  To: Iain Sandoe
  Cc: GCC Patches, ro@cebitec.uni-bielefeld.de, Mike Stump,
	Jason Merrill, Nathan Sidwell

On Feb 17, 2023, Iain Sandoe <idsandoe@googlemail.com> wrote:

> As a matter of interest, do you know of any other compiler claiming “__clang__” (I have
> treated that as safe so far).

We've had (or found it more convenient, not sure) to do that to gcc on
some recent combinations of version and target of vxworks, for one.

>> Use a __has_include feature test instead.

> I think we need to do

> #if __has_include(<coroutine>)
> …
> #elif __has_include(<experimental/coroutine>)
> …

> because newer clang has the include in the standard place.

That would change what gets tested with clang, I suppose, but I hope
that's for the better.  I wondered what to do at the #else above, and
decided to spell it a little differently.  Retested on x86_64-linux-gnu
(trunk) and arm-vxworks7r2 (gcc-12), ok to install?


[PR100127] Test for coroutine header in clang-compatible tests

From: Alexandre Oliva <oliva@adacore.com>

The test is compatible with clang as well as gcc, but ISTM that
testing for the __clang__ macro is just as potentially error-prone as
macros that used to be GCC-specific are now defined in compilers that
aim for GCC compatibility.  Use a __has_include feature test instead.


for  gcc/testsuite/ChangeLog

	PR c++/100127
	* g++.dg/coroutines/pr100127.C: Test for header rather than
	compiler macro.
---
 gcc/testsuite/g++.dg/coroutines/pr100127.C   |    3 ++-
 gcc/testsuite/g++.dg/coroutines/pr100772-a.C |    3 ++-
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C |    3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/gcc/testsuite/g++.dg/coroutines/pr100127.C b/gcc/testsuite/g++.dg/coroutines/pr100127.C
index 374cd710077af..5879fd0bcc595 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100127.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100127.C
@@ -1,4 +1,5 @@
-#ifdef __clang__
+#if !__has_include(<coroutine>) \
+  && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
 namespace std {
   using namespace std::experimental;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-a.C b/gcc/testsuite/g++.dg/coroutines/pr100772-a.C
index a325d384fc390..06e705b0c65a0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-a.C
@@ -1,5 +1,6 @@
 //  { dg-additional-options "-fsyntax-only " }
-#ifdef __clang__
+#if !__has_include(<coroutine>) \
+  && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
 namespace std {
   using namespace std::experimental;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 6cdf8d1e529e5..4ef80a9959490 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,4 +1,5 @@
-#ifdef __clang__
+#if !__has_include(<coroutine>) \
+  && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
 namespace std {
   using namespace std::experimental;


-- 
Alexandre Oliva, happy hacker                https://FSFLA.org/blogs/lxo/
   Free Software Activist                       GNU Toolchain Engineer
Disinformation flourishes because many people care deeply about injustice
but very few check the facts.  Ask me about <https://stallmansupport.org>

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

* Re: [PR100127] Test for coroutine header in clang-compatible tests
  2023-02-22 20:04   ` Alexandre Oliva
@ 2023-02-27 18:44     ` Mike Stump
  0 siblings, 0 replies; 4+ messages in thread
From: Mike Stump @ 2023-02-27 18:44 UTC (permalink / raw)
  To: Alexandre Oliva
  Cc: Iain Sandoe, GCC Patches, ro@cebitec.uni-bielefeld.de,
	Jason Merrill, Nathan Sidwell

On Feb 22, 2023, at 12:04 PM, Alexandre Oliva <oliva@adacore.com> wrote:
> 
> That would change what gets tested with clang, I suppose, but I hope
> that's for the better.  I wondered what to do at the #else above, and
> decided to spell it a little differently.  Retested on x86_64-linux-gnu
> (trunk) and arm-vxworks7r2 (gcc-12), ok to install?

Ok.

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

end of thread, other threads:[~2023-02-27 18:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-17  6:42 [PR100127] Test for coroutine header in clang-compatible tests Alexandre Oliva
2023-02-17 13:17 ` Iain Sandoe
2023-02-22 20:04   ` Alexandre Oliva
2023-02-27 18:44     ` Mike Stump

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).