On Fri, 6 Jun 2025, Jonathan Wakely wrote:

> Including <execution> behaves differently depending on whether you have
> the TBB headers installed or not. Without them installed, the modules
> tests PASS, but with TBB headers installed they FAIL with:
> 
> gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H: internal compiler error: in 
> core_vals, at cp/module.cc:6631
> 
> This seems likely to be due to use of the optimize pragma or attribute
> in TBB headers.
> 
> Remove <execution> from those tests, so that they behave consistently
> for everybody, and don't fail for people (like me) who routinely test
> with TBB headers installed so that libstdc++ PSTL is thoroughly tested.
> 
> gcc/testsuite/ChangeLog:
> 
>       * g++.dg/modules/xtreme-header-2.h: Do not include <execution>.
>       * g++.dg/modules/xtreme-header-2_a.H: Remove dg-skip-if.
>       * g++.dg/modules/xtreme-header-2_b.C: Remove dg-skip-if.
>       * g++.dg/modules/xtreme-header.h: Do not include <execution>.
> ---
> 
> Tested x86_64-linux.
> 
> OK for trunk?
> 
> I'm not sure if removing the dg-skip-if lines is correct, there might be
> other headers that require hostedlib and <execution> was just the first
> one that was noticed?

Seems so, <future>, <valarray> and <thread> are all hosted-only headers
that are still included by xtreme-header-2.h, so maybe we should keep
the skip-if and remove the mention of <exceution> in the skip reason.

Besides that LGTM

On a related note xtreme-header.h is missing <format> and other recently
added C++23/26 headers, maybe it should just include <bits/stdc++.h> so
we don't have to worry about keeping that test header in sync.  But
that's a separate change.

> 
>  gcc/testsuite/g++.dg/modules/xtreme-header-2.h   | 1 -
>  gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H | 1 -
>  gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C | 1 -
>  gcc/testsuite/g++.dg/modules/xtreme-header.h     | 1 -
>  4 files changed, 4 deletions(-)
> 
> diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2.h 
> b/gcc/testsuite/g++.dg/modules/xtreme-header-2.h
> index dfe94aa6988e..fb5b1d033504 100644
> --- a/gcc/testsuite/g++.dg/modules/xtreme-header-2.h
> +++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2.h
> @@ -1,7 +1,6 @@
>  // Everything that transitively includes <ranges>
>  
>  #include <algorithm>
> -#include <execution>
>  #include <functional>
>  #include <future>
>  #include <memory>
> diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H 
> b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
> index a52fefdae0ab..217ead37d254 100644
> --- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
> +++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
> @@ -1,5 +1,4 @@
>  // { dg-additional-options -fmodule-header }
> -// { dg-skip-if "requires hosted libstdc++ for execution in 
> xtreme-header-2.h" { ! hostedlib } }
>  
>  // { dg-module-cmi {} }
>  #include "xtreme-header-2.h"
> diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C 
> b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
> index b7ff864ac132..1f608ec29b79 100644
> --- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
> +++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
> @@ -1,5 +1,4 @@
>  // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
> -// { dg-skip-if "requires hosted libstdc++ for execution in 
> xtreme-header-2.h" { ! hostedlib } }
>  
>  #include "xtreme-header-2.h"
>  import "xtreme-header-2_a.H";
> diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header.h 
> b/gcc/testsuite/g++.dg/modules/xtreme-header.h
> index 3147aaf00f44..2faacd41643f 100644
> --- a/gcc/testsuite/g++.dg/modules/xtreme-header.h
> +++ b/gcc/testsuite/g++.dg/modules/xtreme-header.h
> @@ -17,7 +17,6 @@
>  #include <cwctype>
>  #include <deque>
>  #include <exception>
> -#include <execution>
>  #include <filesystem>
>  #include <forward_list>
>  #include <fstream>
> -- 
> 2.49.0
> 
> 

Reply via email to