On Mon, Jan 19, 2026 at 11:16 AM Alexandre Oliva <[email protected]> wrote:
>
>
> 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.
>
> Regstrapped on x86_64-linux-gnu. Also tested with aarch64-elf and
> arm-eabi with gcc-15. Ok to install?
Ok.
>
>
> 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.
> ---
> gcc/testsuite/g++.dg/DRs/dr2836.C | 1 +
> gcc/testsuite/g++.dg/alias-checks.C | 1 +
> gcc/testsuite/g++.dg/contracts/pr116490.C | 1 +
> gcc/testsuite/g++.dg/coroutines/torture/pr121219.C | 1 +
> gcc/testsuite/g++.dg/cpp2a/constexpr-vector1.C | 1 +
> gcc/testsuite/g++.dg/ext/is_virtual_base_of.C | 2 ++
> gcc/testsuite/g++.dg/modules/contracts-5_b.C | 1 +
> gcc/testsuite/g++.dg/modules/gmf-xtreme.C | 1 +
> gcc/testsuite/g++.dg/modules/lto-3_a.H | 1 +
> gcc/testsuite/g++.dg/modules/lto-3_b.C | 1 +
> gcc/testsuite/g++.dg/modules/xtreme-header-8.C | 1 +
> gcc/testsuite/g++.dg/opt/pr119274.C | 1 +
> gcc/testsuite/g++.dg/pr117222.C | 1 +
> gcc/testsuite/g++.dg/torture/pr105769-1.C | 1 +
> gcc/testsuite/g++.dg/torture/pr118521.C | 1 +
> gcc/testsuite/g++.dg/tree-ssa/deque-1.C | 2 ++
> gcc/testsuite/g++.dg/tree-ssa/deque-2.C | 2 ++
> gcc/testsuite/g++.dg/tree-ssa/pr109442.C | 2 ++
> gcc/testsuite/g++.dg/tree-ssa/pr110819.C | 2 ++
> gcc/testsuite/g++.dg/tree-ssa/pr116868.C | 2 ++
> gcc/testsuite/g++.dg/tree-ssa/pr58483.C | 2 ++
> gcc/testsuite/g++.dg/tree-ssa/pr80331.C | 2 ++
> gcc/testsuite/g++.dg/tree-ssa/pr87502.C | 2 ++
> gcc/testsuite/g++.dg/tree-ssa/pr96945.C | 2 ++
> gcc/testsuite/g++.dg/tree-ssa/string-1.C | 2 ++
> 25 files changed, 36 insertions(+)
>
> diff --git a/gcc/testsuite/g++.dg/DRs/dr2836.C
> b/gcc/testsuite/g++.dg/DRs/dr2836.C
> index 88e35a7f30525..c96c6da919b5d 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 <stdfloat>
>
> diff --git a/gcc/testsuite/g++.dg/alias-checks.C
> b/gcc/testsuite/g++.dg/alias-checks.C
> index ee0ac535399d9..b8ff3ad605c23 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 <cstdlib>
> #include <cmath>
> diff --git a/gcc/testsuite/g++.dg/contracts/pr116490.C
> b/gcc/testsuite/g++.dg/contracts/pr116490.C
> index e3a5d77bafd32..6e66c2afb6281 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<class T>
> 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 d1e7cb1e02251..1748dcaf2be3b 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 <coroutine>
> #ifdef OUTPUT
> diff --git a/gcc/testsuite/g++.dg/cpp2a/constexpr-vector1.C
> b/gcc/testsuite/g++.dg/cpp2a/constexpr-vector1.C
> index 196c6ec51fcf3..1d6a059615a9e 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 <vector>
> 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 775a35393885b..1c3049d847a53 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 <cassert>
>
> 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 0e794b8ae4538..96651fd5c75d5 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 <experimental/contract>
> import test;
> diff --git a/gcc/testsuite/g++.dg/modules/gmf-xtreme.C
> b/gcc/testsuite/g++.dg/modules/gmf-xtreme.C
> index 0a01c405291dd..a9bee60001ce3 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 be63699e66f5d..95fb738e91969 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 <string>
> diff --git a/gcc/testsuite/g++.dg/modules/lto-3_b.C
> b/gcc/testsuite/g++.dg/modules/lto-3_b.C
> index f459596f730f2..6b5854f1f1c0f 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 82c0b59fefe31..dc8ae240ffe15 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 79b406162db9a..75503d3683d7d 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 <cstdlib>
> #include <vector>
> diff --git a/gcc/testsuite/g++.dg/pr117222.C b/gcc/testsuite/g++.dg/pr117222.C
> index 60cf6e30ed540..70dc8a1eef17f 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 <vector>
> int main()
> diff --git a/gcc/testsuite/g++.dg/torture/pr105769-1.C
> b/gcc/testsuite/g++.dg/torture/pr105769-1.C
> index 3fe973656b845..d176bdccf479d 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 08836bd5f0e91..e432f99220dc4 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 <vector> // { 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 c639ebb1a5f34..04b1dbb9c8aae 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 <deque>
> void
> test(std::deque<int> &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 7e268b3f018d6..c1534f65b80a1 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 <deque>
> std::deque<int *>
> test2(std::deque<int *> &q)
> diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr109442.C
> b/gcc/testsuite/g++.dg/tree-ssa/pr109442.C
> index dc335d1365673..6753bb947e929 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 <vector>
> #define T int
> T vat1(std::vector<T> v1) {
> diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr110819.C
> b/gcc/testsuite/g++.dg/tree-ssa/pr110819.C
> index 8305589a19d0b..90bbe916f63be 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<vector>
>
> void f(int);
> diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr116868.C
> b/gcc/testsuite/g++.dg/tree-ssa/pr116868.C
> index 8580661d35ce9..55337b2219b8e 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 <vector>
> int sumVector() {
> const std::vector<int> vec = {1};
> diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr58483.C
> b/gcc/testsuite/g++.dg/tree-ssa/pr58483.C
> index 8305589a19d0b..90bbe916f63be 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<vector>
>
> void f(int);
> diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr80331.C
> b/gcc/testsuite/g++.dg/tree-ssa/pr80331.C
> index 85034504f2f82..fd556ed7407da 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<string>
> 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 e8e0cd388fb03..8b4b5d8c78fb9 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 <string>
>
>
> diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr96945.C
> b/gcc/testsuite/g++.dg/tree-ssa/pr96945.C
> index 07c141340c0b1..e4ea022d66560 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 <vector>
> 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 d38c23a7628b6..ff65bad97717b 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 <string>
> std::string
> test (std::string &a)
>
> --
> Alexandre Oliva, happy hacker https://blog.lx.oliva.nom.br/
> Free Software Activist FSFLA co-founder GNU Toolchain Engineer
> More tolerance and less prejudice are key for inclusion and diversity.
> Excluding neuro-others for not behaving ""normal"" is *not* inclusive!