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 > >