From: Alexandre Oliva Date: Wed, 21 Jan 2026 03:29:54 +0000 (-0300) Subject: testsuite: add hostedlib requirements to multiple C++ tests X-Git-Tag: basepoints/gcc-17~1859 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dd55243e3506903fa976967bc6d573edcb8eb43d;p=thirdparty%2Fgcc.git testsuite: add hostedlib requirements to multiple C++ tests Various C++ tests added in the gcc-15 cycle require features that are only available when libstdc++-v3 is built in hosted mode, so they fail when this is not the case. Skip them if ! hostedlib. for gcc/testsuite/ChangeLog * g++.dg/DRs/dr2836.C: Skip if ! hostedlib. * g++.dg/alias-checks.C: Likewise. * g++.dg/contracts/pr116490.C: Likewise. * g++.dg/coroutines/torture/pr121219.C: Likewise. * g++.dg/cpp2a/constexpr-vector1.C: Likewise. * g++.dg/ext/is_virtual_base_of.C: Likewise. * g++.dg/modules/contracts-5_b.C: Likewise. * g++.dg/modules/gmf-xtreme.C: Likewise. * g++.dg/modules/lto-3_a.H: Likewise. * g++.dg/modules/lto-3_b.C: Likewise. * g++.dg/modules/xtreme-header-8.C: Likewise. * g++.dg/opt/pr119274.C: Likewise. * g++.dg/pr117222.C: Likewise. * g++.dg/torture/pr105769-1.C: Likewise. * g++.dg/torture/pr118521.C: Likewise. * g++.dg/tree-ssa/deque-1.C: Likewise. * g++.dg/tree-ssa/deque-2.C: Likewise. * g++.dg/tree-ssa/pr109442.C: Likewise. * g++.dg/tree-ssa/pr110819.C: Likewise. * g++.dg/tree-ssa/pr116868.C: Likewise. * g++.dg/tree-ssa/pr58483.C: Likewise. * g++.dg/tree-ssa/pr80331.C: Likewise. * g++.dg/tree-ssa/pr87502.C: Likewise. * g++.dg/tree-ssa/pr96945.C: Likewise. * g++.dg/tree-ssa/string-1.C: Likewise. --- diff --git a/gcc/testsuite/g++.dg/DRs/dr2836.C b/gcc/testsuite/g++.dg/DRs/dr2836.C index 88e35a7f305..c96c6da919b 100644 --- a/gcc/testsuite/g++.dg/DRs/dr2836.C +++ b/gcc/testsuite/g++.dg/DRs/dr2836.C @@ -1,6 +1,7 @@ // DR 2836 - Conversion rank of long double and extended floating-point types // { dg-do compile { target c++23 } } // { dg-additional-options "-mlong-double-64" { target powerpc*-*-* s390*-*-* } } +// { dg-skip-if "required hosted libstdc++ for stdfloat" { ! hostedlib } } #include diff --git a/gcc/testsuite/g++.dg/alias-checks.C b/gcc/testsuite/g++.dg/alias-checks.C index ee0ac535399..b8ff3ad605c 100644 --- a/gcc/testsuite/g++.dg/alias-checks.C +++ b/gcc/testsuite/g++.dg/alias-checks.C @@ -3,6 +3,7 @@ // { dg-require-effective-target c++17 } // { dg-require-effective-target vect_double } // { dg-options "-O3 -fdump-tree-vect-all" } +// { dg-skip-if "required hosted libstdc++ for cmath and iostream" { ! hostedlib } } #include #include diff --git a/gcc/testsuite/g++.dg/contracts/pr116490.C b/gcc/testsuite/g++.dg/contracts/pr116490.C index e3a5d77bafd..6e66c2afb62 100644 --- a/gcc/testsuite/g++.dg/contracts/pr116490.C +++ b/gcc/testsuite/g++.dg/contracts/pr116490.C @@ -1,6 +1,7 @@ // ICE in explicit instantiation of a function with contracts // { dg-do run } // { dg-options "-std=c++20 -fcontracts -fcontract-continuation-mode=on" } +// { dg-skip-if "required hosted libstdc++ for stdc++exp" { ! hostedlib } } template void foo(T t) diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr121219.C b/gcc/testsuite/g++.dg/coroutines/torture/pr121219.C index d1e7cb1e022..1748dcaf2be 100644 --- a/gcc/testsuite/g++.dg/coroutines/torture/pr121219.C +++ b/gcc/testsuite/g++.dg/coroutines/torture/pr121219.C @@ -1,5 +1,6 @@ // PR c++/121219 // { dg-do run } +// { dg-skip-if "required hosted libstdc++ for stdexcept" { ! hostedlib } } #include #ifdef OUTPUT diff --git a/gcc/testsuite/g++.dg/cpp2a/constexpr-vector1.C b/gcc/testsuite/g++.dg/cpp2a/constexpr-vector1.C index 196c6ec51fc..1d6a059615a 100644 --- a/gcc/testsuite/g++.dg/cpp2a/constexpr-vector1.C +++ b/gcc/testsuite/g++.dg/cpp2a/constexpr-vector1.C @@ -1,6 +1,7 @@ // PR c++/113835 // { dg-timeout-factor 0.05 } // { dg-do compile { target c++20_only } } +// { dg-skip-if "required hosted libstdc++ for vector" { ! hostedlib } } #include const std::size_t N = 1'000'000; diff --git a/gcc/testsuite/g++.dg/ext/is_virtual_base_of.C b/gcc/testsuite/g++.dg/ext/is_virtual_base_of.C index 775a3539388..1c3049d847a 100644 --- a/gcc/testsuite/g++.dg/ext/is_virtual_base_of.C +++ b/gcc/testsuite/g++.dg/ext/is_virtual_base_of.C @@ -1,4 +1,6 @@ // { dg-do run } +// { dg-skip-if "required hosted libstdc++ for cassert" { ! hostedlib } } + #include class A1 diff --git a/gcc/testsuite/g++.dg/modules/contracts-5_b.C b/gcc/testsuite/g++.dg/modules/contracts-5_b.C index 0e794b8ae45..96651fd5c75 100644 --- a/gcc/testsuite/g++.dg/modules/contracts-5_b.C +++ b/gcc/testsuite/g++.dg/modules/contracts-5_b.C @@ -1,6 +1,7 @@ // PR c++/108205 // { dg-module-do run } // { dg-additional-options "-fmodules -fcontracts -fcontract-continuation-mode=on" } +// { dg-skip-if "required hosted libstdc++ for experimental/contract" { ! hostedlib } } #include import test; diff --git a/gcc/testsuite/g++.dg/modules/gmf-xtreme.C b/gcc/testsuite/g++.dg/modules/gmf-xtreme.C index 0a01c405291..a9bee60001c 100644 --- a/gcc/testsuite/g++.dg/modules/gmf-xtreme.C +++ b/gcc/testsuite/g++.dg/modules/gmf-xtreme.C @@ -1,6 +1,7 @@ // PR c++/114630 // { dg-additional-options "-fmodules-ts -fdump-lang-module" } // { dg-module-cmi empty } +// { dg-skip-if "required hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } } module; #include "xtreme-header.h" diff --git a/gcc/testsuite/g++.dg/modules/lto-3_a.H b/gcc/testsuite/g++.dg/modules/lto-3_a.H index be63699e66f..95fb738e919 100644 --- a/gcc/testsuite/g++.dg/modules/lto-3_a.H +++ b/gcc/testsuite/g++.dg/modules/lto-3_a.H @@ -1,6 +1,7 @@ // PR c++/118961 // { dg-additional-options "-fmodule-header -std=c++20" } // { dg-module-cmi {} } +// { dg-skip-if "required hosted libstdc++ for string" { ! hostedlib } } // We shouldn't ICE when linking against the standard library. #include diff --git a/gcc/testsuite/g++.dg/modules/lto-3_b.C b/gcc/testsuite/g++.dg/modules/lto-3_b.C index f459596f730..6b5854f1f1c 100644 --- a/gcc/testsuite/g++.dg/modules/lto-3_b.C +++ b/gcc/testsuite/g++.dg/modules/lto-3_b.C @@ -2,6 +2,7 @@ // { dg-module-do link } // { dg-require-effective-target lto } // { dg-additional-options "-fmodules -flto -static -std=c++20" } +// { dg-skip-if "required hosted libstdc++ for string in lto-3_a.H" { ! hostedlib } } import "lto-3_a.H"; diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-8.C b/gcc/testsuite/g++.dg/modules/xtreme-header-8.C index 82c0b59fefe..dc8ae240ffe 100644 --- a/gcc/testsuite/g++.dg/modules/xtreme-header-8.C +++ b/gcc/testsuite/g++.dg/modules/xtreme-header-8.C @@ -1,6 +1,7 @@ // PR c++/115126 // { dg-additional-options "-fmodules-ts -Wtemplate-names-tu-local" } // { dg-module-cmi xstd } +// { dg-skip-if "required hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } } export module xstd; extern "C++" { diff --git a/gcc/testsuite/g++.dg/opt/pr119274.C b/gcc/testsuite/g++.dg/opt/pr119274.C index 79b406162db..75503d3683d 100644 --- a/gcc/testsuite/g++.dg/opt/pr119274.C +++ b/gcc/testsuite/g++.dg/opt/pr119274.C @@ -1,5 +1,6 @@ // { dg-do compile { target c++11 } } // { dg-options "-O2 -Wall" } +// { dg-skip-if "required hosted libstdc++ for vector" { ! hostedlib } } #include #include diff --git a/gcc/testsuite/g++.dg/pr117222.C b/gcc/testsuite/g++.dg/pr117222.C index 60cf6e30ed5..70dc8a1eef1 100644 --- a/gcc/testsuite/g++.dg/pr117222.C +++ b/gcc/testsuite/g++.dg/pr117222.C @@ -1,6 +1,7 @@ // { dg-do compile } // { dg-require-effective-target c++11 } // { dg-options "-O3 -fdump-tree-evrp" } +// { dg-skip-if "required hosted libstdc++ for vector" { ! hostedlib } } #include int main() diff --git a/gcc/testsuite/g++.dg/torture/pr105769-1.C b/gcc/testsuite/g++.dg/torture/pr105769-1.C index 3fe973656b8..d176bdccf47 100644 --- a/gcc/testsuite/g++.dg/torture/pr105769-1.C +++ b/gcc/testsuite/g++.dg/torture/pr105769-1.C @@ -1,4 +1,5 @@ // { dg-do run } +// { dg-skip-if "required hosted libstdc++ for functional function" { ! hostedlib } } // PR tree-optimization/105769 diff --git a/gcc/testsuite/g++.dg/torture/pr118521.C b/gcc/testsuite/g++.dg/torture/pr118521.C index 08836bd5f0e..e432f99220d 100644 --- a/gcc/testsuite/g++.dg/torture/pr118521.C +++ b/gcc/testsuite/g++.dg/torture/pr118521.C @@ -1,5 +1,6 @@ // { dg-do compile } // { dg-additional-options "-Wall" } +// { dg-skip-if "required hosted libstdc++ for vector" { ! hostedlib } } #include // { dg-bogus "writing 1 byte into a region of size 0" "" { target *-*-* } 0 } diff --git a/gcc/testsuite/g++.dg/tree-ssa/deque-1.C b/gcc/testsuite/g++.dg/tree-ssa/deque-1.C index c639ebb1a5f..04b1dbb9c8a 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/deque-1.C +++ b/gcc/testsuite/g++.dg/tree-ssa/deque-1.C @@ -1,5 +1,7 @@ // { dg-do compile } // { dg-options "-O1 -fdump-tree-optimized" } +// { dg-skip-if "required hosted libstdc++ for deque" { ! hostedlib } } + #include void test(std::deque &q, int v) diff --git a/gcc/testsuite/g++.dg/tree-ssa/deque-2.C b/gcc/testsuite/g++.dg/tree-ssa/deque-2.C index 7e268b3f018..c1534f65b80 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/deque-2.C +++ b/gcc/testsuite/g++.dg/tree-ssa/deque-2.C @@ -1,5 +1,7 @@ // { dg-do compile } // { dg-options "-O3 -fdump-tree-optimized" } +// { dg-skip-if "required hosted libstdc++ for deque" { ! hostedlib } } + #include std::deque test2(std::deque &q) diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr109442.C b/gcc/testsuite/g++.dg/tree-ssa/pr109442.C index dc335d13656..6753bb947e9 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr109442.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr109442.C @@ -1,5 +1,7 @@ // { dg-do compile { target c++11 } } // { dg-options "-O2 -fdump-tree-optimized" } +// { dg-skip-if "required hosted libstdc++ for vector" { ! hostedlib } } + #include #define T int T vat1(std::vector v1) { diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr110819.C b/gcc/testsuite/g++.dg/tree-ssa/pr110819.C index 8305589a19d..90bbe916f63 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr110819.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr110819.C @@ -1,5 +1,7 @@ // { dg-do compile { target c++11 } } // { dg-options "-O1 -fdump-tree-optimized" } +// { dg-skip-if "required hosted libstdc++ for vector" { ! hostedlib } } + #include void f(int); diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr116868.C b/gcc/testsuite/g++.dg/tree-ssa/pr116868.C index 8580661d35c..55337b2219b 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr116868.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr116868.C @@ -1,5 +1,7 @@ // { dg-do compile { target c++11 } } // { dg-options "-O2 -fdump-tree-optimized" } +// { dg-skip-if "required hosted libstdc++ for vector" { ! hostedlib } } + #include int sumVector() { const std::vector vec = {1}; diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr58483.C b/gcc/testsuite/g++.dg/tree-ssa/pr58483.C index 8305589a19d..90bbe916f63 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr58483.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr58483.C @@ -1,5 +1,7 @@ // { dg-do compile { target c++11 } } // { dg-options "-O1 -fdump-tree-optimized" } +// { dg-skip-if "required hosted libstdc++ for vector" { ! hostedlib } } + #include void f(int); diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr80331.C b/gcc/testsuite/g++.dg/tree-ssa/pr80331.C index 85034504f2f..fd556ed7407 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr80331.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr80331.C @@ -1,5 +1,7 @@ // { dg-do compile } // { dg-additional-options "-O2 -fdump-tree-optimized" } +// { dg-skip-if "required hosted libstdc++ for string" { ! hostedlib } } + #include int sain() { const std::string remove_me("remove_me"); diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr87502.C b/gcc/testsuite/g++.dg/tree-ssa/pr87502.C index e8e0cd388fb..8b4b5d8c78f 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr87502.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr87502.C @@ -1,5 +1,7 @@ // { dg-do compile } // { dg-additional-options "-O2 -fdump-tree-optimized" } +// { dg-skip-if "required hosted libstdc++ for string" { ! hostedlib } } + #include diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr96945.C b/gcc/testsuite/g++.dg/tree-ssa/pr96945.C index 07c141340c0..e4ea022d665 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr96945.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr96945.C @@ -1,5 +1,7 @@ // { dg-do compile { target c++11 } } // { dg-options "-O1 -fdump-tree-optimized" } +// { dg-skip-if "required hosted libstdc++ for vector" { ! hostedlib } } + #include struct c { c() = default; diff --git a/gcc/testsuite/g++.dg/tree-ssa/string-1.C b/gcc/testsuite/g++.dg/tree-ssa/string-1.C index d38c23a7628..ff65bad9771 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/string-1.C +++ b/gcc/testsuite/g++.dg/tree-ssa/string-1.C @@ -1,5 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O3 -std=c++20 -fdump-tree-optimized" } */ +// { dg-skip-if "required hosted libstdc++ for string" { ! hostedlib } } + #include std::string test (std::string &a)