On 3/25/26 7:55 PM, Iain Sandoe wrote:
The tests for the cxx2a version of contracts disabled run variants for
non-hosted platforms.  This patch does the same for the c++26 version.
Tested on x86-64-darwin and x86_64, powerpc64le-linux.
OK for trunk?

OK.

--- 8< ---

These, in general, require hosted support.

gcc/testsuite/ChangeLog:

        * g++.dg/contracts/cpp26/basic.contract.eval.p11-observe.C: Skip
        for non-hosted.
        * g++.dg/contracts/cpp26/basic.contract.eval.p17-2.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p17-3.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p17-4.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p17-5.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-post.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-pre.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF2.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF3.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF4.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p17.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p4.C: Likewise.
        * g++.dg/contracts/cpp26/basic.contract.eval.p6.observe.C: Likewise.
        * g++.dg/contracts/cpp26/callerside-checks/callerside-checks-all.C: 
Likewise.
        * g++.dg/contracts/cpp26/callerside-checks/callerside-checks-none.C: 
Likewise.
        * g++.dg/contracts/cpp26/callerside-checks/callerside-checks-pre.C: 
Likewise.
        * g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-post.C: 
Likewise.
        * g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-pre.C: 
Likewise.
        * g++.dg/contracts/cpp26/contract-assert-run.C: Likewise.
        * g++.dg/contracts/cpp26/contract-violation-noexcept2.C: Likewise.
        * g++.dg/contracts/cpp26/debug-and-opt.C: Likewise.
        * g++.dg/contracts/cpp26/deferred1.C: Likewise.
        * 
g++.dg/contracts/cpp26/definition-checks/contract-assert-no-def-check.C: 
Likewise.
        * g++.dg/contracts/cpp26/dependent_contract.C: Likewise.
        * g++.dg/contracts/cpp26/empty-nt-param.C: Likewise.
        * g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-3.C: Likewise.
        * g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-4.C: Likewise.
        * g++.dg/contracts/cpp26/function-contract-specifier-seq.C: Likewise.
        * g++.dg/contracts/cpp26/name_mangling.C: Likewise.
        * g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-post.C: 
Likewise.
        * g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-pre.C: 
Likewise.
        * g++.dg/contracts/cpp26/outline-checks/func-noexcept-assert.C: 
Likewise.
        * g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-post.C: 
Likewise.
        * g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-pre.C: 
Likewise.
        * g++.dg/contracts/cpp26/src-loc-0.C: Likewise.
        * g++.dg/contracts/cpp26/src-loc-1.C: Likewise.
        * g++.dg/contracts/cpp26/src-loc-2.C: Likewise.
        * g++.dg/contracts/cpp26/throwing-violation-handler.cc: Likewise.
        * g++.dg/contracts/cpp26/vaargs.C: Likewise.

Signed-off-by: Iain Sandoe <[email protected]>
---
  .../g++.dg/contracts/cpp26/basic.contract.eval.p11-observe.C   | 1 +
  .../g++.dg/contracts/cpp26/basic.contract.eval.p17-2.C         | 1 +
  .../g++.dg/contracts/cpp26/basic.contract.eval.p17-3.C         | 1 +
  .../g++.dg/contracts/cpp26/basic.contract.eval.p17-4.C         | 1 +
  .../g++.dg/contracts/cpp26/basic.contract.eval.p17-5.C         | 1 +
  .../g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-post.C  | 1 +
  .../g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-pre.C   | 1 +
  .../g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF2.C      | 1 +
  .../g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF3.C      | 1 +
  .../g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF4.C      | 1 +
  gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17.C | 1 +
  gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p4.C  | 1 +
  .../g++.dg/contracts/cpp26/basic.contract.eval.p6.observe.C    | 1 -
  .../contracts/cpp26/callerside-checks/callerside-checks-all.C  | 2 +-
  .../contracts/cpp26/callerside-checks/callerside-checks-none.C | 2 ++
  .../contracts/cpp26/callerside-checks/callerside-checks-pre.C  | 1 +
  .../contracts/cpp26/callerside-checks/freefunc-noexcept-post.C | 1 +
  .../contracts/cpp26/callerside-checks/freefunc-noexcept-pre.C  | 1 +
  gcc/testsuite/g++.dg/contracts/cpp26/contract-assert-run.C     | 1 +
  .../g++.dg/contracts/cpp26/contract-violation-noexcept2.C      | 1 +
  gcc/testsuite/g++.dg/contracts/cpp26/debug-and-opt.C           | 2 +-
  gcc/testsuite/g++.dg/contracts/cpp26/deferred1.C               | 1 +
  .../cpp26/definition-checks/contract-assert-no-def-check.C     | 1 +
  gcc/testsuite/g++.dg/contracts/cpp26/dependent_contract.C      | 1 +
  gcc/testsuite/g++.dg/contracts/cpp26/empty-nt-param.C          | 1 +
  .../g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-3.C          | 1 +
  .../g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-4.C          | 1 +
  .../g++.dg/contracts/cpp26/function-contract-specifier-seq.C   | 1 -
  gcc/testsuite/g++.dg/contracts/cpp26/name_mangling.C           | 2 +-
  .../contracts/cpp26/outline-checks/freefunc-noexcept-post.C    | 1 +
  .../contracts/cpp26/outline-checks/freefunc-noexcept-pre.C     | 1 +
  .../contracts/cpp26/outline-checks/func-noexcept-assert.C      | 1 +
  .../contracts/cpp26/outline-checks/memberfunc-noexcept-post.C  | 1 +
  .../contracts/cpp26/outline-checks/memberfunc-noexcept-pre.C   | 1 +
  gcc/testsuite/g++.dg/contracts/cpp26/src-loc-0.C               | 2 +-
  gcc/testsuite/g++.dg/contracts/cpp26/src-loc-1.C               | 3 ++-
  gcc/testsuite/g++.dg/contracts/cpp26/src-loc-2.C               | 3 ++-
  .../g++.dg/contracts/cpp26/throwing-violation-handler.cc       | 1 +
  gcc/testsuite/g++.dg/contracts/cpp26/vaargs.C                  | 1 +
  39 files changed, 40 insertions(+), 8 deletions(-)

diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p11-observe.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p11-observe.C
index e97f1200c09..7ca6199ef4c 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p11-observe.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p11-observe.C
@@ -10,6 +10,7 @@
  //
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts 
-fcontract-evaluation-semantic=observe" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
int f(int i, int j = 1) pre(i > 0) post(r: r < 5)
  {
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-2.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-2.C
index 19144b6b857..a643cc7d29d 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-2.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-2.C
@@ -7,6 +7,7 @@
  // invoked (14.6.2). — end note]
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-3.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-3.C
index 682e55ac18c..cc0c0e7f5e9 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-3.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-3.C
@@ -6,6 +6,7 @@
  // for a handler continues from the execution of that statement. — end note]
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-4.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-4.C
index 50a59b90b2e..5ac94e29f5f 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-4.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-4.C
@@ -10,6 +10,7 @@
  //
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-5.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-5.C
index b48151f1195..aca89a819cd 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-5.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-5.C
@@ -10,6 +10,7 @@
  //
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-post.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-post.C
index 39fc55ad3cc..2aaf13781f8 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-post.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-post.C
@@ -11,6 +11,7 @@
  //
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-pre.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-pre.C
index 6297571fdb4..378b93d2bbc 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-pre.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF-pre.C
@@ -11,6 +11,7 @@
  //
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF2.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF2.C
index 1f55f4cca26..eccef309f4b 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF2.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF2.C
@@ -10,6 +10,7 @@
  //
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF3.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF3.C
index 605cbc277b4..6a364eb1ffd 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF3.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF3.C
@@ -10,6 +10,7 @@
  //
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF4.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF4.C
index 2b787753cab..0f4991cda3e 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF4.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17-SMF4.C
@@ -11,6 +11,7 @@
  //
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17.C
index 0f33722248c..01db74ee4fd 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p17.C
@@ -7,6 +7,7 @@
  // invoked (14.6.2). — end note]
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p4.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p4.C
index eb8f2d85ce6..386c98502f0 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p4.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p4.C
@@ -4,6 +4,7 @@
  // [Note 2 : The predicate is potentially evaluated (6.3), but not evaluated. 
— end note]
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts 
-fcontract-evaluation-semantic=ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts> diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p6.observe.C b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p6.observe.C
index 7f05fd8be1a..a3ee0a5a029 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p6.observe.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/basic.contract.eval.p6.observe.C
@@ -6,7 +6,6 @@
  // { dg-do compile { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
-fdump-tree-gimple " }
-
  int main(int ac, char *av[])
  {
     int i = ac;
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-all.C
 
b/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-all.C
index 07c09321c40..43805721b07 100644
--- 
a/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-all.C
+++ 
b/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-all.C
@@ -1,6 +1,6 @@
  // { dg-do run { target c++20 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
-fcontracts-client-check=all" }
-
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
int f(const int a, const int b) pre (a > 2) post(r : r > 2){ return b; }
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-none.C
 
b/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-none.C
index 22e0ded4241..ae3acac6079 100644
--- 
a/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-none.C
+++ 
b/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-none.C
@@ -1,5 +1,7 @@
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontracts-client-check=none" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
+
  static int pre_check = 0;
  bool fpre()
  {
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-pre.C
 
b/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-pre.C
index 1a3a693e3ab..14453870f08 100644
--- 
a/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-pre.C
+++ 
b/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/callerside-checks-pre.C
@@ -1,5 +1,6 @@
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontracts-client-check=pre" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
static int pre_check = 0;
  bool fpre()
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-post.C
 
b/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-post.C
index 99c080f52db..bc944b5c65c 100644
--- 
a/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-post.C
+++ 
b/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-post.C
@@ -4,6 +4,7 @@
  // with caller side checks.
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
-fcontracts-client-check=all " }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <iostream>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-pre.C
 
b/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-pre.C
index 7e3968b453b..25d7ec0bbe3 100644
--- 
a/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-pre.C
+++ 
b/gcc/testsuite/g++.dg/contracts/cpp26/callerside-checks/freefunc-noexcept-pre.C
@@ -4,6 +4,7 @@
  // with caller side checks.
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
-fcontracts-client-check=all " }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <iostream>
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/contract-assert-run.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/contract-assert-run.C
index 760bd36c275..6295d932dac 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/contract-assert-run.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/contract-assert-run.C
@@ -9,6 +9,7 @@
  //   ensure that a missing colon after contract role errors
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts 
-fcontract-evaluation-semantic=observe" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <iostream>
  #include <contracts>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/contract-violation-noexcept2.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/contract-violation-noexcept2.C
index 8f41a4f8e46..42739db0263 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/contract-violation-noexcept2.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/contract-violation-noexcept2.C
@@ -2,6 +2,7 @@
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts" }
  // { dg-additional-sources "throwing-violation-handler.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <exception> diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/debug-and-opt.C b/gcc/testsuite/g++.dg/contracts/cpp26/debug-and-opt.C
index 0d6fa197895..fbc7b11c3f9 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/debug-and-opt.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/debug-and-opt.C
@@ -1,7 +1,7 @@
  // Check that we do not ICE with debug + optimisation.
  // { dg-do run { target c++23 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe -O 
-g" }
-
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
int foo (const int i)
    pre (i > 3)
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/deferred1.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/deferred1.C
index 165f8eded78..2a8d26e600d 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/deferred1.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/deferred1.C
@@ -2,6 +2,7 @@
  // For now, diagnose that we at least don't accidentally merge the contracts
  // { dg-do run { target c++23 } }
  // { dg-additional-options "-fcontracts -g3" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
  #include <cassert>
  struct contract
  {
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/definition-checks/contract-assert-no-def-check.C
 
b/gcc/testsuite/g++.dg/contracts/cpp26/definition-checks/contract-assert-no-def-check.C
index 74d743b38e1..75b1888e262 100644
--- 
a/gcc/testsuite/g++.dg/contracts/cpp26/definition-checks/contract-assert-no-def-check.C
+++ 
b/gcc/testsuite/g++.dg/contracts/cpp26/definition-checks/contract-assert-no-def-check.C
@@ -2,6 +2,7 @@
  // are turned off
  // { dg-do run { target c++26 } }
  // { dg-options "-fcontracts -fcontracts-definition-check=off 
-fcontract-evaluation-semantic=observe" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <cstdlib> diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/dependent_contract.C b/gcc/testsuite/g++.dg/contracts/cpp26/dependent_contract.C
index e4f35c13b8d..73d880afc3c 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/dependent_contract.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/dependent_contract.C
@@ -1,6 +1,7 @@
  // check that dependent contract check does not cause an ICE
  // { dg-do run { target c++23 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
  template <typename ST>
  struct S{
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/empty-nt-param.C b/gcc/testsuite/g++.dg/contracts/cpp26/empty-nt-param.C
index ab92144eacd..44392eb1934 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/empty-nt-param.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/empty-nt-param.C
@@ -1,6 +1,7 @@
  // check that we do not ICE with an empty nontrivial parameter
  // { dg-do run { target c++23 } }
  // { dg-additional-options "-fcontracts -fcontract-checks-outlined" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
struct NTClass {
    NTClass(){};
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-3.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-3.C
index 93ab26e13a4..6e8d23d4368 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-3.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-3.C
@@ -8,6 +8,7 @@
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-checks-outlined" }
  // { dg-xfail-run-if "PRXXXXXX" { *-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
struct S{
    S(){};
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-4.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-4.C
index c9cdbe51702..45c9fdbf210 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-4.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/expr.prim.id.unqual.p7-4.C
@@ -8,6 +8,7 @@
  // { dg-do run { target c++23 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe -O2 
-g" }
  // { dg-xfail-run-if "PRXXXXXX" { *-*-* } { "-fcontract-checks-outlined" } "" 
}
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <cassert> diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/function-contract-specifier-seq.C b/gcc/testsuite/g++.dg/contracts/cpp26/function-contract-specifier-seq.C
index 51560268f23..f6bbe638742 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/function-contract-specifier-seq.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/function-contract-specifier-seq.C
@@ -10,7 +10,6 @@
  //    post attribute-specifier-seq opt ( result-name-introducer opt 
conditional-expression )
  // { dg-do compile { target c++23 } }
  // { dg-additional-options "-fcontracts" }
-// { dg-additional-options "-fcontracts" }
static_assert (__cpp_contracts >= 202502L); diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/name_mangling.C b/gcc/testsuite/g++.dg/contracts/cpp26/name_mangling.C
index 1e81c1247a1..3df9112eb25 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/name_mangling.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/name_mangling.C
@@ -3,7 +3,7 @@
  // additional parameter that matches the returen value of the first function
  // { dg-do run { target c++23 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
-
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
int f() post(r:r>1){ return 2;}
  void f(int i) post(true){ }
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-post.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-post.C
index 48b752bcefa..5fe807dee55 100644
--- 
a/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-post.C
+++ 
b/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-post.C
@@ -3,6 +3,7 @@
  // This tests the behaviour of a pre condition on a member function
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
-fcontract-checks-outlined" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-pre.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-pre.C
index a662734d62d..ea94369a7df 100644
--- 
a/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-pre.C
+++ 
b/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/freefunc-noexcept-pre.C
@@ -3,6 +3,7 @@
  // This tests the behaviour of a pre condition on a member function
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
-fcontract-checks-outlined" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/func-noexcept-assert.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/func-noexcept-assert.C
index f2bc62c432c..a4a5a5c88bf 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/func-noexcept-assert.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/func-noexcept-assert.C
@@ -2,6 +2,7 @@
  // can be caught by the function.
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
-fcontract-checks-outlined" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-post.C
 
b/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-post.C
index 536f7095f4c..e689f4c33bb 100644
--- 
a/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-post.C
+++ 
b/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-post.C
@@ -3,6 +3,7 @@
  // This tests the behaviour of a post condition on a member function
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
-fcontract-checks-outlined" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git 
a/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-pre.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-pre.C
index f629587ae26..787cc506fd4 100644
--- 
a/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-pre.C
+++ 
b/gcc/testsuite/g++.dg/contracts/cpp26/outline-checks/memberfunc-noexcept-pre.C
@@ -3,6 +3,7 @@
  // This tests the behaviour of a pre condition on a member function
  // { dg-do run { target c++26 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
-fcontract-checks-outlined" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
#include <contracts>
  #include <exception>
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-0.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-0.C
index 025a8fac459..e3a722fa2e1 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-0.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-0.C
@@ -1,6 +1,6 @@
  // { dg-do run { target c++23 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
-
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
  // Test source location without including <source_location>
int
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-1.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-1.C
index 0987d0e62dd..dcde9f84be3 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-1.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-1.C
@@ -1,5 +1,6 @@
  // { dg-do run { target c++23 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
  // Test source location with #include <source_location>
  #include <source_location>
@@ -15,4 +16,4 @@ int main ()
    foo (9);
  }
-// { dg-output "contract violation in function int foo.int. at .*:8: x > 10.*(\n|\r\n|\r)" }
+// { dg-output "contract violation in function int foo.int. at .*:9: x > 
10.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-2.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-2.C
index c1ff148f92f..fa67fb80c65 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-2.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/src-loc-2.C
@@ -1,5 +1,6 @@
  // { dg-do run { target c++23 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=observe 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
// Test source location with a late inclusion of <source_location> @@ -17,4 +18,4 @@ int main ()
    foo (9);
  }
-// { dg-output "contract violation in function int foo.int. at .*:8: x > 10.*(\n|\r\n|\r)" }
+// { dg-output "contract violation in function int foo.int. at .*:9: x > 
10.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/throwing-violation-handler.cc 
b/gcc/testsuite/g++.dg/contracts/cpp26/throwing-violation-handler.cc
index da0686ebc71..06c4ba4801c 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/throwing-violation-handler.cc
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/throwing-violation-handler.cc
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
  #include <contracts>
void handle_contract_violation(const std::contracts::contract_violation&)
diff --git a/gcc/testsuite/g++.dg/contracts/cpp26/vaargs.C 
b/gcc/testsuite/g++.dg/contracts/cpp26/vaargs.C
index abb3ded7c07..c7438eb9f11 100644
--- a/gcc/testsuite/g++.dg/contracts/cpp26/vaargs.C
+++ b/gcc/testsuite/g++.dg/contracts/cpp26/vaargs.C
@@ -1,6 +1,7 @@
  // Check contract assertion on a vaarg function
  // { dg-do run { target c++23 } }
  // { dg-additional-options "-fcontracts -fcontract-evaluation-semantic=enforce 
" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
  #include <stdio.h>
  #include <stdarg.h>
  int simple_printf(const char* fmt, ...) pre (fmt != 0) post (r: r > 0)


Reply via email to