Skip a number of C++ test cases for '-fno-exceptions' testing
commitfe65f4a2a39b389a4240dc59d856b082c0b5ad96
authorThomas Schwinge <thomas@codesourcery.com>
Wed, 7 Jun 2023 12:14:44 +0000 (7 14:14 +0200)
committerThomas Schwinge <thomas@codesourcery.com>
Fri, 3 Nov 2023 10:59:15 +0000 (3 11:59 +0100)
tree8d8d1cc3f6982c4e57adea421c31fca78d63b1ce
parent2266f7cbc78dfcf7c0739466644e0a6b9966553c
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.
46 files changed:
gcc/testsuite/g++.dg/cpp0x/catch1.C
gcc/testsuite/g++.dg/cpp0x/constexpr-throw.C
gcc/testsuite/g++.dg/cpp1y/constexpr-89785-2.C
gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C
gcc/testsuite/g++.dg/cpp1y/pr79393-3.C
gcc/testsuite/g++.dg/cpp2a/consteval-memfn1.C
gcc/testsuite/g++.dg/cpp2a/consteval11.C
gcc/testsuite/g++.dg/cpp2a/consteval34.C
gcc/testsuite/g++.dg/cpp2a/consteval9.C
gcc/testsuite/g++.dg/cpp2a/explicit1.C
gcc/testsuite/g++.dg/cpp2a/explicit2.C
gcc/testsuite/g++.dg/cpp2a/explicit5.C
gcc/testsuite/g++.dg/eh/builtin10.C
gcc/testsuite/g++.dg/eh/builtin11.C
gcc/testsuite/g++.dg/eh/builtin6.C
gcc/testsuite/g++.dg/eh/builtin7.C
gcc/testsuite/g++.dg/eh/builtin9.C
gcc/testsuite/g++.dg/eh/dtor4.C
gcc/testsuite/g++.dg/eh/pr42859.C
gcc/testsuite/g++.dg/ext/stmtexpr25.C
gcc/testsuite/g++.dg/ext/vla4.C
gcc/testsuite/g++.dg/init/placement4.C
gcc/testsuite/g++.dg/other/error32.C
gcc/testsuite/g++.dg/parse/crash55.C
gcc/testsuite/g++.dg/parse/pr31952-2.C
gcc/testsuite/g++.dg/parse/pr31952-3.C
gcc/testsuite/g++.dg/tm/noexcept-7.C
gcc/testsuite/g++.dg/torture/pr43257.C
gcc/testsuite/g++.dg/torture/pr56694.C
gcc/testsuite/g++.dg/torture/pr81659.C
gcc/testsuite/g++.dg/warn/Wcatch-value-1.C
gcc/testsuite/g++.dg/warn/Wcatch-value-2.C
gcc/testsuite/g++.dg/warn/Wcatch-value-3.C
gcc/testsuite/g++.dg/warn/Wcatch-value-3b.C
gcc/testsuite/g++.dg/warn/Wexceptions1.C
gcc/testsuite/g++.dg/warn/Wexceptions3.C
gcc/testsuite/g++.dg/warn/Winfinite-recursion-3.C
gcc/testsuite/g++.dg/warn/Wreturn-6.C
gcc/testsuite/g++.dg/warn/Wstringop-truncation-2.C
gcc/testsuite/g++.dg/warn/Wterminate1.C
gcc/testsuite/g++.old-deja/g++.eh/catch1.C
gcc/testsuite/g++.old-deja/g++.eh/catch10.C
gcc/testsuite/g++.old-deja/g++.eh/cond1.C
gcc/testsuite/g++.old-deja/g++.eh/ctor1.C
gcc/testsuite/g++.old-deja/g++.eh/throw2.C
gcc/testsuite/g++.old-deja/g++.other/cond5.C