From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rock.gnat.com (rock.gnat.com [205.232.38.15]) by sourceware.org (Postfix) with ESMTPS id A4AE73858D33 for ; Wed, 22 Feb 2023 20:04:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A4AE73858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 6F063116129; Wed, 22 Feb 2023 15:04:15 -0500 (EST) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id qY3Dld-w83ov; Wed, 22 Feb 2023 15:04:15 -0500 (EST) Received: from free.home (tron.gnat.com [IPv6:2620:20:4000:0:46a8:42ff:fe0e:e294]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by rock.gnat.com (Postfix) with ESMTPS id 02045116121; Wed, 22 Feb 2023 15:04:14 -0500 (EST) Received: from livre (livre.home [172.31.160.2]) by free.home (8.15.2/8.15.2) with ESMTPS id 31MK401a301054 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 22 Feb 2023 17:04:00 -0300 From: Alexandre Oliva To: Iain Sandoe Cc: GCC Patches , "ro\@cebitec.uni-bielefeld.de" , Mike Stump , Jason Merrill , Nathan Sidwell Subject: Re: [PR100127] Test for coroutine header in clang-compatible tests Organization: Free thinker, does not speak for AdaCore References: Errors-To: aoliva@lxoliva.fsfla.org Date: Wed, 22 Feb 2023 17:04:00 -0300 In-Reply-To: (Iain Sandoe's message of "Fri, 17 Feb 2023 13:17:33 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.84 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Feb 17, 2023, Iain Sandoe wrote: > As a matter of interest, do you know of any other compiler claiming =E2= =80=9C__clang__=E2=80=9D (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() > =E2=80=A6 > #elif __has_include() > =E2=80=A6 > 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 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() \ + && __has_include() // for __clang__ #include 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() \ + && __has_include() // for __clang__ #include 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() \ + && __has_include() // for __clang__ #include namespace std { using namespace std::experimental; --=20 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