From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id A20303858D28; Fri, 3 Nov 2023 11:03:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A20303858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A20303858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=68.232.137.180 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699009443; cv=none; b=xx2upyPx5nHrdICuY/j9jrKJlRZVQvzjJ+gzcDLQmXaD5ODlp0aDqpmUDa3C/Egts0Dq8EgMz9zo6SWmZ5WBoKX3BBCshPJCAvoA/8zEFzHlx0Mjn8XGnTS/LzOCdIBErZzSVKdFSa1nP540wlZxU+Gj4lDn2ppzeR6kq4uqaYs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699009443; c=relaxed/simple; bh=jatOfwphkNIMYsrXlNJjRK29WQLAVd7gGs+xhLUd1mQ=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=gogj2603WNb5NZHralDqHfITmgRdyZ3PbCjyMwEKFDgAPwuIvluZkf9RcNG3Lwo2br29IdjUSYQunZlpaOb2RpE2xmWdt7FU6sZeGvhn+bbaR3DuOxIxUrk/UxgmyE99tfvTDuEGwym+8vsMLm5jURyV9fIG/k9uD3jghE5sRJ0= ARC-Authentication-Results: i=1; server2.sourceware.org X-CSE-ConnectionGUID: sClXM9h4SR2jEtawhJl+HA== X-CSE-MsgGUID: eAErdeBHRfygfTvnjcLTzw== X-IronPort-AV: E=Sophos;i="6.03,273,1694764800"; d="scan'208,223";a="21757478" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 03 Nov 2023 03:03:47 -0800 IronPort-SDR: jGFFWk/fpDO4hXJofxMPfM/rACA7QKINU9dJxbyGnuG25VbI7nBMnlm55u+nowKt/Z80bzvoCp NSUrxQ8JOunrWcdoUL+IEitIOyW3yVredRJX78Ok1xNubD5do7QTKTxJjATYIewvgos24uX3iK mCKkUI0wG1DC8XAbDpGfzNBlz3J3GXm3yPYipFkJySW/VjBJaCR0903hdC8R7aoiVaZ4IWP02v Qe0pFR57zFWeflbMg5ohVzITvjXbWZpvOOwEmYnRBop1ex4gxBF/HGX810rPQR3I87ern0NFS7 3B0= From: Thomas Schwinge To: Jason Merrill , CC: , Jonathan Wakely , "Nathan Sidwell" Subject: Skip a number of C++ test cases for '-fno-exceptions' testing (was: Support in the GCC(/C++) test suites for '-fno-exceptions') In-Reply-To: <87pm2sbxmd.fsf@euler.schwinge.homeip.net> References: <873534qu9e.fsf@euler.schwinge.homeip.net> <87wn04eoyd.fsf@euler.schwinge.homeip.net> <87pm2sbxmd.fsf@euler.schwinge.homeip.net> User-Agent: Notmuch/0.29.3+94~g74c3f1b (https://notmuchmail.org) Emacs/28.2 (x86_64-pc-linux-gnu) Date: Fri, 3 Nov 2023 12:03:06 +0100 Message-ID: <87msvvt7yt.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) To svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: --=-=-= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi! On 2023-09-08T15:30:50+0200, I wrote: > GCC/C++ front end maintainers, please provide input on the overall > approach here: Jason verbally ACKed this at the GNU Tools Cauldron 2023. > On 2023-06-15T17:15:54+0200, I wrote: >> On 2023-06-06T20:31:21+0100, Jonathan Wakely wrote: >>> On Tue, 6 Jun 2023 at 20:14, Thomas Schwinge = wrote: >>>> This issue comes up in context of me working on C++ support for GCN an= d >>>> nvptx target. Those targets shall default to '-fno-exceptions' -- or, >>>> "in other words", '-fexceptions' is not supported. (Details omitted >>>> here.) >>>> >>>> It did seem clear to me that with such a configuration it'll be hard t= o >>>> get clean test results. Then I found code in >>>> 'gcc/testsuite/lib/gcc-dg.exp:gcc-dg-prune': >>>> >>>> # If exceptions are disabled, mark tests expecting exceptions to b= e enabled >>>> # as unsupported. >>>> if { ![check_effective_target_exceptions_enabled] } { >>>> if [regexp "(^|\n)\[^\n\]*: error: exception handling disabled= " $text] { >>>> return "::unsupported::exception handling disabled" >>>> } >>>> >>>> ..., which, in a way, sounds as if the test suite generally is meant t= o >>>> produce useful results for '-fno-exceptions', nice surprise! >>>> >>>> Running x86_64-pc-linux-gnu (not yet GCN, nvptx) 'make check' with: >>>> >>>> RUNTESTFLAGS=3D'--target_board=3Dunix/-fno-exceptions\{,-m32\}' >>>> >>>> ..., I find that indeed this does work for a lot of test cases, where = we >>>> then get (random example): >>>> >>>> PASS: g++.dg/coroutines/pr99710.C (test for errors, line 23) >>>> -PASS: g++.dg/coroutines/pr99710.C (test for excess errors) >>>> +UNSUPPORTED: g++.dg/coroutines/pr99710.C: exception handling disa= bled >>>> >>>> ..., due to: >>>> >>>> [...]/g++.dg/coroutines/pr99710.C: In function 'task my_coro()': >>>> +[...]/g++.dg/coroutines/pr99710.C:18:10: error: exception handlin= g disabled, use '-fexceptions' to enable >>>> [...]/g++.dg/coroutines/pr99710.C:23:7: error: await expressions = are not permitted in handlers >>>> compiler exited with status 1 >>>> >>>> But, we're nowhere near clean test results: PASS -> FAIL as well as >>>> XFAIL -> XPASS regressions, due to 'error: exception handling disabled= ' >>>> precluding other diagnostics seems to be one major issue. >>>> >>>> Is there interest in me producing the obvious (?) changes to those tes= t >>>> cases, such that compiler g++ as well as target library libstdc++ test >>>> results are reasonably clean? (If you think that's all "wasted effort= ", >>>> then I suppose I'll just locally ignore any FAILs/XPASSes/UNRESOLVEDs >>>> that appear in combination with >>>> 'UNSUPPORTED: [...]: exception handling disabled'.) >>> >>> I would welcome that for libstdc++. [...] > >> Per your and my changes a few days ago, we've already got libstdc++ >> covered, [...] > >> Not having heard anything contrary regarding the compiler side of things= , >> I've now been working on that, see below. >> >>> We already have a handful of tests that use #if __cpp_exceptions to mak= e >>> those parts conditional on exception support. >> >> Yes, that's an option not for all but certainly for some test cases. >> (I'm not looking into that now -- but this may in fact be a good >> beginner-level task, will add to ). Done: "Improve test suite coverage for '-fno-exceptions' configurations". >>>> Otherwise, a number of test cases need DejaGnu directives >>>> conditionalized on 'target exceptions_enabled'. >> >> Before I get to such things, even simpler: OK to push the attached >> "Skip a number of C++ test cases for '-fno-exceptions' testing"? > > I've re-attached my patch from a few months ago: > "Skip a number of C++ test cases for '-fno-exceptions' testing". > (I'd obviously re-check for current master branch before 'git push'.) Pushed to master branch commit fe65f4a2a39b389a4240dc59d856b082c0b5ad96 "Skip a number of C++ test cases for '-fno-exceptions' testing", see attached. Gr=C3=BC=C3=9Fe Thomas > If there is interest in this at all, I'd then later complete and submit > my more or less WIP patches for the slightly more involved test case > scenarios. > > > Gr=C3=BC=C3=9Fe > Thomas > > >>>> (Or, >>>> 'error: exception handling disabled' made a "really late" diagnostic, = so >>>> that it doesn't preclude other diagnostics? I'll have a look. Well, >>>> maybe something like: in fact do not default to '-fno-exceptions', but >>>> instead emit 'error: exception handling disabled' only if in a "really >>>> late" pass we run into exceptions-related constructs that we cannot >>>> support. That'd also avoid PASS -> UNSUPPORTED "regressions" when >>>> exception handling in fact gets optimized away, for example. I like t= hat >>>> idea, conceptually -- but is it feasible to implement..?) >>> >>> IMHO just [...] using [an effective target keyword] in test >>> selectors seems simpler, and doesn't require changes to the compiler, j= ust >>> the tests. >> >> I still like the idea, but yes, I've mentally put it on file "for later" >> (ha, ha, ha...) -- it doesn't seem obvious to implement. >> >> >> Gr=C3=BC=C3=9Fe >> Thomas ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename="0001-Skip-a-number-of-C-test-cases-for-fno-exceptions-tes.patch" >From fe65f4a2a39b389a4240dc59d856b082c0b5ad96 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 7 Jun 2023 14:14:44 +0200 Subject: [PATCH] Skip a number of C++ test cases for '-fno-exceptions' testing Running 'make check' with: 'RUNTESTFLAGS=--target_board=unix/-fno-exceptions', 'error: exception handling disabled' is triggered for C++ 'throw' etc. usage, and per 'gcc/testsuite/lib/gcc-dg.exp:gcc-dg-prune': # If exceptions are disabled, mark tests expecting exceptions to be enabled # as unsupported. if { ![check_effective_target_exceptions_enabled] } { if [regexp "(^|\n)\[^\n\]*: error: exception handling disabled" $text] { return "::unsupported::exception handling disabled" } ..., which generally means: -PASS: [...] (test for excess errors) +UNSUPPORTED: [...]: exception handling disabled However, if there are additional 'dg-error' etc. directives, these may regress PASS -> FAIL (or similar) -- if their associated diagnostics are precluded by 'error: exception handling disabled'. For example: PASS: g++.dg/cpp2a/explicit1.C (test for errors, line 43) PASS: g++.dg/cpp2a/explicit1.C (test for errors, line 47) [-PASS:-]{+FAIL:+} g++.dg/cpp2a/explicit1.C (test for errors, line 50) [-PASS:-]{+FAIL:+} g++.dg/cpp2a/explicit1.C (test for errors, line 51) PASS: g++.dg/cpp2a/explicit1.C (test for errors, line 52) PASS: g++.dg/cpp2a/explicit1.C (test for errors, line 53) PASS: g++.dg/cpp2a/explicit1.C (test for errors, line 59) [-PASS:-]{+UNSUPPORTED:+} g++.dg/cpp2a/explicit1.C [-(test for excess errors)-]{+: exception handling disabled+} Specify 'dg-require-effective-target exceptions_enabled' for those test cases. gcc/testsuite/ * g++.dg/cpp0x/catch1.C: Specify 'dg-require-effective-target exceptions_enabled'. * g++.dg/cpp0x/constexpr-throw.C: Likewise. * g++.dg/cpp1y/constexpr-89785-2.C: Likewise. * g++.dg/cpp1y/constexpr-throw.C: Likewise. * g++.dg/cpp1y/pr79393-3.C: Likewise. * g++.dg/cpp2a/consteval-memfn1.C: Likewise. * g++.dg/cpp2a/consteval11.C: Likewise. * g++.dg/cpp2a/consteval34.C: Likewise. * g++.dg/cpp2a/consteval9.C: Likewise. * g++.dg/cpp2a/explicit1.C: Likewise. * g++.dg/cpp2a/explicit2.C: Likewise. * g++.dg/cpp2a/explicit5.C: Likewise. * g++.dg/eh/builtin10.C: Likewise. * g++.dg/eh/builtin11.C: Likewise. * g++.dg/eh/builtin6.C: Likewise. * g++.dg/eh/builtin7.C: Likewise. * g++.dg/eh/builtin9.C: Likewise. * g++.dg/eh/dtor4.C: Likewise. * g++.dg/eh/pr42859.C: Likewise. * g++.dg/ext/stmtexpr25.C: Likewise. * g++.dg/ext/vla4.C: Likewise. * g++.dg/init/placement4.C: Likewise. * g++.dg/other/error32.C: Likewise. * g++.dg/parse/crash55.C: Likewise. * g++.dg/parse/pr31952-2.C: Likewise. * g++.dg/parse/pr31952-3.C: Likewise. * g++.dg/tm/noexcept-7.C: Likewise. * g++.dg/torture/pr43257.C: Likewise. * g++.dg/torture/pr56694.C: Likewise. * g++.dg/torture/pr81659.C: Likewise. * g++.dg/warn/Wcatch-value-1.C: Likewise. * g++.dg/warn/Wcatch-value-2.C: Likewise. * g++.dg/warn/Wcatch-value-3.C: Likewise. * g++.dg/warn/Wcatch-value-3b.C: Likewise. * g++.dg/warn/Wexceptions1.C: Likewise. * g++.dg/warn/Wexceptions3.C: Likewise. * g++.dg/warn/Winfinite-recursion-3.C: Likewise. * g++.dg/warn/Wreturn-6.C: Likewise. * g++.dg/warn/Wstringop-truncation-2.C: Likewise. * g++.dg/warn/Wterminate1.C: Likewise. * g++.old-deja/g++.eh/catch1.C: Likewise. * g++.old-deja/g++.eh/catch10.C: Likewise. * g++.old-deja/g++.eh/cond1.C: Likewise. * g++.old-deja/g++.eh/ctor1.C: Likewise. * g++.old-deja/g++.eh/throw2.C: Likewise. * g++.old-deja/g++.other/cond5.C: Likewise. --- gcc/testsuite/g++.dg/cpp0x/catch1.C | 1 + gcc/testsuite/g++.dg/cpp0x/constexpr-throw.C | 1 + gcc/testsuite/g++.dg/cpp1y/constexpr-89785-2.C | 1 + gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C | 1 + gcc/testsuite/g++.dg/cpp1y/pr79393-3.C | 1 + gcc/testsuite/g++.dg/cpp2a/consteval-memfn1.C | 1 + gcc/testsuite/g++.dg/cpp2a/consteval11.C | 1 + gcc/testsuite/g++.dg/cpp2a/consteval34.C | 1 + gcc/testsuite/g++.dg/cpp2a/consteval9.C | 1 + gcc/testsuite/g++.dg/cpp2a/explicit1.C | 1 + gcc/testsuite/g++.dg/cpp2a/explicit2.C | 1 + gcc/testsuite/g++.dg/cpp2a/explicit5.C | 1 + gcc/testsuite/g++.dg/eh/builtin10.C | 1 + gcc/testsuite/g++.dg/eh/builtin11.C | 1 + gcc/testsuite/g++.dg/eh/builtin6.C | 1 + gcc/testsuite/g++.dg/eh/builtin7.C | 1 + gcc/testsuite/g++.dg/eh/builtin9.C | 1 + gcc/testsuite/g++.dg/eh/dtor4.C | 2 ++ gcc/testsuite/g++.dg/eh/pr42859.C | 1 + gcc/testsuite/g++.dg/ext/stmtexpr25.C | 1 + gcc/testsuite/g++.dg/ext/vla4.C | 1 + gcc/testsuite/g++.dg/init/placement4.C | 2 ++ gcc/testsuite/g++.dg/other/error32.C | 1 + gcc/testsuite/g++.dg/parse/crash55.C | 2 ++ gcc/testsuite/g++.dg/parse/pr31952-2.C | 2 ++ gcc/testsuite/g++.dg/parse/pr31952-3.C | 2 ++ gcc/testsuite/g++.dg/tm/noexcept-7.C | 1 + gcc/testsuite/g++.dg/torture/pr43257.C | 1 + gcc/testsuite/g++.dg/torture/pr56694.C | 1 + gcc/testsuite/g++.dg/torture/pr81659.C | 1 + gcc/testsuite/g++.dg/warn/Wcatch-value-1.C | 1 + gcc/testsuite/g++.dg/warn/Wcatch-value-2.C | 1 + gcc/testsuite/g++.dg/warn/Wcatch-value-3.C | 1 + gcc/testsuite/g++.dg/warn/Wcatch-value-3b.C | 1 + gcc/testsuite/g++.dg/warn/Wexceptions1.C | 2 ++ gcc/testsuite/g++.dg/warn/Wexceptions3.C | 2 ++ gcc/testsuite/g++.dg/warn/Winfinite-recursion-3.C | 1 + gcc/testsuite/g++.dg/warn/Wreturn-6.C | 2 ++ gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C | 1 + gcc/testsuite/g++.dg/warn/Wterminate1.C | 1 + gcc/testsuite/g++.old-deja/g++.eh/catch1.C | 1 + gcc/testsuite/g++.old-deja/g++.eh/catch10.C | 1 + gcc/testsuite/g++.old-deja/g++.eh/cond1.C | 1 + gcc/testsuite/g++.old-deja/g++.eh/ctor1.C | 2 ++ gcc/testsuite/g++.old-deja/g++.eh/throw2.C | 1 + gcc/testsuite/g++.old-deja/g++.other/cond5.C | 1 + 46 files changed, 55 insertions(+) diff --git a/gcc/testsuite/g++.dg/cpp0x/catch1.C b/gcc/testsuite/g++.dg/cpp0x/catch1.C index 81778ea7807..733bd560180 100644 --- a/gcc/testsuite/g++.dg/cpp0x/catch1.C +++ b/gcc/testsuite/g++.dg/cpp0x/catch1.C @@ -1,5 +1,6 @@ // PR c++/53371 // { dg-do compile { target c++11 } } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. struct Abs { diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-throw.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-throw.C index 5666629acae..9c49fa4e9e8 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-throw.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-throw.C @@ -1,4 +1,5 @@ // { dg-do compile { target c++11 } } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. constexpr int may_throw(bool decide) { return decide ? 42 : throw -1; // { dg-error "throw" } diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-89785-2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-89785-2.C index 7afd9d24e98..47c0d4daa60 100644 --- a/gcc/testsuite/g++.dg/cpp1y/constexpr-89785-2.C +++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-89785-2.C @@ -1,5 +1,6 @@ // PR c++/89785 // { dg-do compile { target c++14 } } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. constexpr int foo (int x) diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C index 35928744686..b5fa6caeb57 100644 --- a/gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C +++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C @@ -1,4 +1,5 @@ // { dg-do compile { target c++14 } } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. constexpr void f1() { if (false) diff --git a/gcc/testsuite/g++.dg/cpp1y/pr79393-3.C b/gcc/testsuite/g++.dg/cpp1y/pr79393-3.C index 3c73cbbb659..6d9b77ae946 100644 --- a/gcc/testsuite/g++.dg/cpp1y/pr79393-3.C +++ b/gcc/testsuite/g++.dg/cpp1y/pr79393-3.C @@ -1,5 +1,6 @@ // pr c++/79393 // { dg-do compile { target c++14 } } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. struct A { diff --git a/gcc/testsuite/g++.dg/cpp2a/consteval-memfn1.C b/gcc/testsuite/g++.dg/cpp2a/consteval-memfn1.C index 63f4f1d526a..46eed13446d 100644 --- a/gcc/testsuite/g++.dg/cpp2a/consteval-memfn1.C +++ b/gcc/testsuite/g++.dg/cpp2a/consteval-memfn1.C @@ -1,5 +1,6 @@ // PR c++/99895 // { dg-do compile { target c++20 } } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. struct fixed_string { consteval int size(int n) const { diff --git a/gcc/testsuite/g++.dg/cpp2a/consteval11.C b/gcc/testsuite/g++.dg/cpp2a/consteval11.C index 091127eabbf..05cecea4502 100644 --- a/gcc/testsuite/g++.dg/cpp2a/consteval11.C +++ b/gcc/testsuite/g++.dg/cpp2a/consteval11.C @@ -1,4 +1,5 @@ // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-std=c++2a" } consteval int bar (int i) { if (i != 1) throw 1; return 0; } // { dg-error "is not a constant expression" } diff --git a/gcc/testsuite/g++.dg/cpp2a/consteval34.C b/gcc/testsuite/g++.dg/cpp2a/consteval34.C index d5e2d1dc5d2..068827ba516 100644 --- a/gcc/testsuite/g++.dg/cpp2a/consteval34.C +++ b/gcc/testsuite/g++.dg/cpp2a/consteval34.C @@ -1,4 +1,5 @@ // { dg-do compile { target c++20 } } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. consteval int bar (int i) { if (i != 1) throw 1; return 0; } // { dg-error "is not a constant expression" } diff --git a/gcc/testsuite/g++.dg/cpp2a/consteval9.C b/gcc/testsuite/g++.dg/cpp2a/consteval9.C index aa75ba37849..051a3d4e355 100644 --- a/gcc/testsuite/g++.dg/cpp2a/consteval9.C +++ b/gcc/testsuite/g++.dg/cpp2a/consteval9.C @@ -1,4 +1,5 @@ // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-std=c++2a" } consteval int bar (int i) { if (i != 1) throw 1; return 0; } // { dg-error "is not a constant expression" } diff --git a/gcc/testsuite/g++.dg/cpp2a/explicit1.C b/gcc/testsuite/g++.dg/cpp2a/explicit1.C index b39f90f3397..290f16c2b7f 100644 --- a/gcc/testsuite/g++.dg/cpp2a/explicit1.C +++ b/gcc/testsuite/g++.dg/cpp2a/explicit1.C @@ -1,5 +1,6 @@ // P0892R2 // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-std=c++2a" } constexpr int fn0 () { return 0; } diff --git a/gcc/testsuite/g++.dg/cpp2a/explicit2.C b/gcc/testsuite/g++.dg/cpp2a/explicit2.C index 7d1748c0f5e..95651436eb7 100644 --- a/gcc/testsuite/g++.dg/cpp2a/explicit2.C +++ b/gcc/testsuite/g++.dg/cpp2a/explicit2.C @@ -1,5 +1,6 @@ // P0892R2 // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-std=c++2a" } int foo() { return 42; } diff --git a/gcc/testsuite/g++.dg/cpp2a/explicit5.C b/gcc/testsuite/g++.dg/cpp2a/explicit5.C index 70a106f1fcb..00d3372bfed 100644 --- a/gcc/testsuite/g++.dg/cpp2a/explicit5.C +++ b/gcc/testsuite/g++.dg/cpp2a/explicit5.C @@ -1,5 +1,6 @@ // P0892R2 // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-std=c++2a" } constexpr int fn0 () { return 0; } diff --git a/gcc/testsuite/g++.dg/eh/builtin10.C b/gcc/testsuite/g++.dg/eh/builtin10.C index 6c34f1f6d5c..6148e65e35a 100644 --- a/gcc/testsuite/g++.dg/eh/builtin10.C +++ b/gcc/testsuite/g++.dg/eh/builtin10.C @@ -1,5 +1,6 @@ // PR c++/88482 // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. extern "C" void __cxa_throw (void *, void *, void (*) (void *)); extern "C" float __cxa_get_exception_ptr (void *) throw (); // { dg-message "previous declaration" } diff --git a/gcc/testsuite/g++.dg/eh/builtin11.C b/gcc/testsuite/g++.dg/eh/builtin11.C index abc8c1af535..10cf0859b46 100644 --- a/gcc/testsuite/g++.dg/eh/builtin11.C +++ b/gcc/testsuite/g++.dg/eh/builtin11.C @@ -1,5 +1,6 @@ // PR c++/88482 // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. extern "C" void __cxa_throw (float, void *, void (*) (void *)); // { dg-message "previous declaration" } extern "C" void *__cxa_get_exception_ptr (void *) throw (); diff --git a/gcc/testsuite/g++.dg/eh/builtin6.C b/gcc/testsuite/g++.dg/eh/builtin6.C index c05abdc8f51..b3b52065065 100644 --- a/gcc/testsuite/g++.dg/eh/builtin6.C +++ b/gcc/testsuite/g++.dg/eh/builtin6.C @@ -1,5 +1,6 @@ // PR c++/88482 // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. float __cxa_throw; // { dg-message "previous declaration" } extern "C" void *__cxa_get_exception_ptr (void *); diff --git a/gcc/testsuite/g++.dg/eh/builtin7.C b/gcc/testsuite/g++.dg/eh/builtin7.C index 0ef279d09c1..118e145ed38 100644 --- a/gcc/testsuite/g++.dg/eh/builtin7.C +++ b/gcc/testsuite/g++.dg/eh/builtin7.C @@ -1,5 +1,6 @@ // PR c++/88482 // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. extern "C" void __cxa_throw (void *, void *, void (*) (void *)); int __cxa_get_exception_ptr; // { dg-message "previous declaration" } diff --git a/gcc/testsuite/g++.dg/eh/builtin9.C b/gcc/testsuite/g++.dg/eh/builtin9.C index 591a622630c..a24d248003b 100644 --- a/gcc/testsuite/g++.dg/eh/builtin9.C +++ b/gcc/testsuite/g++.dg/eh/builtin9.C @@ -1,5 +1,6 @@ // PR c++/88482 // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. extern "C" int __cxa_throw (void *, void *, void (*) (void *)); // { dg-message "previous declaration" } extern "C" void *__cxa_get_exception_ptr (void *) throw (); diff --git a/gcc/testsuite/g++.dg/eh/dtor4.C b/gcc/testsuite/g++.dg/eh/dtor4.C index 6c0e804fe8a..daf6d926324 100644 --- a/gcc/testsuite/g++.dg/eh/dtor4.C +++ b/gcc/testsuite/g++.dg/eh/dtor4.C @@ -1,5 +1,7 @@ // PR c++/109172 +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. + class Demo { ~Demo(); diff --git a/gcc/testsuite/g++.dg/eh/pr42859.C b/gcc/testsuite/g++.dg/eh/pr42859.C index 0de91409c83..5533869190b 100644 --- a/gcc/testsuite/g++.dg/eh/pr42859.C +++ b/gcc/testsuite/g++.dg/eh/pr42859.C @@ -1,4 +1,5 @@ // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. void start (void); void diff --git a/gcc/testsuite/g++.dg/ext/stmtexpr25.C b/gcc/testsuite/g++.dg/ext/stmtexpr25.C index 79c40fc61c4..7326571dddf 100644 --- a/gcc/testsuite/g++.dg/ext/stmtexpr25.C +++ b/gcc/testsuite/g++.dg/ext/stmtexpr25.C @@ -1,6 +1,7 @@ // PR c++/81073 // { dg-options "" } // { dg-do compile { target c++11 } } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. struct test { const int *addr; }; diff --git a/gcc/testsuite/g++.dg/ext/vla4.C b/gcc/testsuite/g++.dg/ext/vla4.C index e96f2735f8a..d4686d450ad 100644 --- a/gcc/testsuite/g++.dg/ext/vla4.C +++ b/gcc/testsuite/g++.dg/ext/vla4.C @@ -1,4 +1,5 @@ // PR c++/29318 +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "" } #include diff --git a/gcc/testsuite/g++.dg/init/placement4.C b/gcc/testsuite/g++.dg/init/placement4.C index 3cfe27d63e6..6e755f93d21 100644 --- a/gcc/testsuite/g++.dg/init/placement4.C +++ b/gcc/testsuite/g++.dg/init/placement4.C @@ -1,5 +1,7 @@ // PR c++/34158 +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. + typedef __SIZE_TYPE__ size_t; extern "C" void* malloc (size_t); extern "C" void free (void *); diff --git a/gcc/testsuite/g++.dg/other/error32.C b/gcc/testsuite/g++.dg/other/error32.C index 56d3b7aec8b..4af7f777e5a 100644 --- a/gcc/testsuite/g++.dg/other/error32.C +++ b/gcc/testsuite/g++.dg/other/error32.C @@ -1,4 +1,5 @@ // PR c++/33492 +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "" } void foo() diff --git a/gcc/testsuite/g++.dg/parse/crash55.C b/gcc/testsuite/g++.dg/parse/crash55.C index 2e88c476fc7..c7b7de041ac 100644 --- a/gcc/testsuite/g++.dg/parse/crash55.C +++ b/gcc/testsuite/g++.dg/parse/crash55.C @@ -1,5 +1,7 @@ // PR c++/42038 +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. + extern int __cxa_begin_catch; // { dg-message "previous declaration" } void f(void) diff --git a/gcc/testsuite/g++.dg/parse/pr31952-2.C b/gcc/testsuite/g++.dg/parse/pr31952-2.C index f09bcab1b85..bf666b7ca3e 100644 --- a/gcc/testsuite/g++.dg/parse/pr31952-2.C +++ b/gcc/testsuite/g++.dg/parse/pr31952-2.C @@ -1,5 +1,7 @@ // PR c++/31952 +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. + void f0() { diff --git a/gcc/testsuite/g++.dg/parse/pr31952-3.C b/gcc/testsuite/g++.dg/parse/pr31952-3.C index b589097d36d..d57c92611fd 100644 --- a/gcc/testsuite/g++.dg/parse/pr31952-3.C +++ b/gcc/testsuite/g++.dg/parse/pr31952-3.C @@ -1,5 +1,7 @@ // PR c++/31952 +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. + int f0 (int bar) // { dg-message "previously" } try diff --git a/gcc/testsuite/g++.dg/tm/noexcept-7.C b/gcc/testsuite/g++.dg/tm/noexcept-7.C index bfa675c987f..f21eaf5c8e7 100644 --- a/gcc/testsuite/g++.dg/tm/noexcept-7.C +++ b/gcc/testsuite/g++.dg/tm/noexcept-7.C @@ -1,4 +1,5 @@ // FIXME the TS says atomic_noexcept calls abort, not terminate. +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-fgnu-tm" } void f() diff --git a/gcc/testsuite/g++.dg/torture/pr43257.C b/gcc/testsuite/g++.dg/torture/pr43257.C index fab5f09c31a..b58cf097caa 100644 --- a/gcc/testsuite/g++.dg/torture/pr43257.C +++ b/gcc/testsuite/g++.dg/torture/pr43257.C @@ -1,4 +1,5 @@ /* { dg-do assemble } */ +/* Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. */ class A {}; class B {}; diff --git a/gcc/testsuite/g++.dg/torture/pr56694.C b/gcc/testsuite/g++.dg/torture/pr56694.C index 774bac4c615..dc4dd905afd 100644 --- a/gcc/testsuite/g++.dg/torture/pr56694.C +++ b/gcc/testsuite/g++.dg/torture/pr56694.C @@ -1,4 +1,5 @@ // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-fopenmp" } // { dg-require-effective-target fopenmp } diff --git a/gcc/testsuite/g++.dg/torture/pr81659.C b/gcc/testsuite/g++.dg/torture/pr81659.C index 074099be6fc..cfaa56fd868 100644 --- a/gcc/testsuite/g++.dg/torture/pr81659.C +++ b/gcc/testsuite/g++.dg/torture/pr81659.C @@ -1,4 +1,5 @@ // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. void a (int b) diff --git a/gcc/testsuite/g++.dg/warn/Wcatch-value-1.C b/gcc/testsuite/g++.dg/warn/Wcatch-value-1.C index a84b337b939..835b2c7417e 100644 --- a/gcc/testsuite/g++.dg/warn/Wcatch-value-1.C +++ b/gcc/testsuite/g++.dg/warn/Wcatch-value-1.C @@ -1,3 +1,4 @@ +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-Wcatch-value=1" } struct A { virtual ~A() {} }; diff --git a/gcc/testsuite/g++.dg/warn/Wcatch-value-2.C b/gcc/testsuite/g++.dg/warn/Wcatch-value-2.C index e20719c155b..9c6e93cfa5f 100644 --- a/gcc/testsuite/g++.dg/warn/Wcatch-value-2.C +++ b/gcc/testsuite/g++.dg/warn/Wcatch-value-2.C @@ -1,3 +1,4 @@ +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-Wcatch-value=2" } struct A { virtual ~A() {} }; diff --git a/gcc/testsuite/g++.dg/warn/Wcatch-value-3.C b/gcc/testsuite/g++.dg/warn/Wcatch-value-3.C index c91a3c08590..62881025b71 100644 --- a/gcc/testsuite/g++.dg/warn/Wcatch-value-3.C +++ b/gcc/testsuite/g++.dg/warn/Wcatch-value-3.C @@ -1,3 +1,4 @@ +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-Wcatch-value=3" } struct A { virtual ~A() {} }; diff --git a/gcc/testsuite/g++.dg/warn/Wcatch-value-3b.C b/gcc/testsuite/g++.dg/warn/Wcatch-value-3b.C index cb9af4a6019..2d37f89acfe 100644 --- a/gcc/testsuite/g++.dg/warn/Wcatch-value-3b.C +++ b/gcc/testsuite/g++.dg/warn/Wcatch-value-3b.C @@ -1,3 +1,4 @@ +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-Wcatch-value=3" } struct A { virtual ~A() {} }; diff --git a/gcc/testsuite/g++.dg/warn/Wexceptions1.C b/gcc/testsuite/g++.dg/warn/Wexceptions1.C index af140fd0dc2..557f01b3c7a 100644 --- a/gcc/testsuite/g++.dg/warn/Wexceptions1.C +++ b/gcc/testsuite/g++.dg/warn/Wexceptions1.C @@ -1,5 +1,7 @@ // PR c++/97675 +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. + struct Base { }; struct Child : Base { }; int main() { diff --git a/gcc/testsuite/g++.dg/warn/Wexceptions3.C b/gcc/testsuite/g++.dg/warn/Wexceptions3.C index 97fda9dbd91..08d40bbf96a 100644 --- a/gcc/testsuite/g++.dg/warn/Wexceptions3.C +++ b/gcc/testsuite/g++.dg/warn/Wexceptions3.C @@ -1,5 +1,7 @@ // PR c++/81660 +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. + void bar (int); void diff --git a/gcc/testsuite/g++.dg/warn/Winfinite-recursion-3.C b/gcc/testsuite/g++.dg/warn/Winfinite-recursion-3.C index 166e6d5790d..ee0be59d723 100644 --- a/gcc/testsuite/g++.dg/warn/Winfinite-recursion-3.C +++ b/gcc/testsuite/g++.dg/warn/Winfinite-recursion-3.C @@ -1,5 +1,6 @@ /* PR middle-end/88232 - Please implement -Winfinite-recursion { dg-do compile } + Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. { dg-options "-Wall -Winfinite-recursion" } */ typedef __SIZE_TYPE__ size_t; diff --git a/gcc/testsuite/g++.dg/warn/Wreturn-6.C b/gcc/testsuite/g++.dg/warn/Wreturn-6.C index 85fef0e16df..7372e88e8ca 100644 --- a/gcc/testsuite/g++.dg/warn/Wreturn-6.C +++ b/gcc/testsuite/g++.dg/warn/Wreturn-6.C @@ -1,5 +1,7 @@ // PR c++/107310 +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. + struct f { ~f(); diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C b/gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C index ebbd44307d9..39827a2acee 100644 --- a/gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C +++ b/gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C @@ -3,6 +3,7 @@ // Compile with -g to verify the warning deals properly with debug // statements. // { dg-do compile } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-O2 -Wstringop-truncation -g" } extern "C" char* strncpy (char*, const char*, __SIZE_TYPE__); diff --git a/gcc/testsuite/g++.dg/warn/Wterminate1.C b/gcc/testsuite/g++.dg/warn/Wterminate1.C index affb48d3e8a..ec0a67b60ad 100644 --- a/gcc/testsuite/g++.dg/warn/Wterminate1.C +++ b/gcc/testsuite/g++.dg/warn/Wterminate1.C @@ -1,6 +1,7 @@ // In C++98 mode this gets a -Wc++11-compat warning, in C++11 mode a // -Wterminate warning. +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-Wall" } struct A diff --git a/gcc/testsuite/g++.old-deja/g++.eh/catch1.C b/gcc/testsuite/g++.old-deja/g++.eh/catch1.C index 67779d945ea..a9a26d54437 100644 --- a/gcc/testsuite/g++.old-deja/g++.eh/catch1.C +++ b/gcc/testsuite/g++.old-deja/g++.eh/catch1.C @@ -1,4 +1,5 @@ // { dg-do assemble } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // // Copyright (C) 1999 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 6 Jun 1999 diff --git a/gcc/testsuite/g++.old-deja/g++.eh/catch10.C b/gcc/testsuite/g++.old-deja/g++.eh/catch10.C index 7cc609645a2..19dfd87430b 100644 --- a/gcc/testsuite/g++.old-deja/g++.eh/catch10.C +++ b/gcc/testsuite/g++.old-deja/g++.eh/catch10.C @@ -1,4 +1,5 @@ // { dg-do assemble } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // Test that we notice unfortunate handler ordering. struct A { }; diff --git a/gcc/testsuite/g++.old-deja/g++.eh/cond1.C b/gcc/testsuite/g++.old-deja/g++.eh/cond1.C index fe6d4296ab5..18c024d29f9 100644 --- a/gcc/testsuite/g++.old-deja/g++.eh/cond1.C +++ b/gcc/testsuite/g++.old-deja/g++.eh/cond1.C @@ -1,4 +1,5 @@ // { dg-do assemble } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // Copyright (C) 1999, 2000 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 11 Apr 1999 diff --git a/gcc/testsuite/g++.old-deja/g++.eh/ctor1.C b/gcc/testsuite/g++.old-deja/g++.eh/ctor1.C index cc39ac3953f..1a14f7178be 100644 --- a/gcc/testsuite/g++.old-deja/g++.eh/ctor1.C +++ b/gcc/testsuite/g++.old-deja/g++.eh/ctor1.C @@ -1,4 +1,6 @@ // { dg-do assemble } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. + struct A { A(); diff --git a/gcc/testsuite/g++.old-deja/g++.eh/throw2.C b/gcc/testsuite/g++.old-deja/g++.eh/throw2.C index 957c200f8af..7302dac6078 100644 --- a/gcc/testsuite/g++.old-deja/g++.eh/throw2.C +++ b/gcc/testsuite/g++.old-deja/g++.eh/throw2.C @@ -1,4 +1,5 @@ // { dg-do assemble } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // Submitted by Sebastian Ritterbusch diff --git a/gcc/testsuite/g++.old-deja/g++.other/cond5.C b/gcc/testsuite/g++.old-deja/g++.other/cond5.C index 0d2baf9edf7..6e9ac1bfc1d 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/cond5.C +++ b/gcc/testsuite/g++.old-deja/g++.other/cond5.C @@ -1,4 +1,5 @@ // { dg-do assemble } +// Explicit { dg-require-effective-target exceptions_enabled } to avoid verify compiler messages FAILs for '-fno-exceptions'. // { dg-options "-W -pedantic -ansi" } // Copyright (C) 1999, 2000 Free Software Foundation, Inc. -- 2.34.1 --=-=-=--