#2818: failing tests with gcc-14
Reporter: Roland Haas Status: new Milestone: Version: Type: bug Priority: major Component: EinsteinToolkit thorn
Comment (by Roland Haas):
The issue seems to be related to `loop.hxx` and its code:
```c++ 190 const PointDesc p = 191 point_desc({CI, CJ, CK}, I, iter, NI, I0, BI, bnd_min, bnd_max, 192 loop_min, loop_max); ```
where the first arguments gets passed as `vect<bool, dim>&`. Changing to code to have an explicit variable:
``` const vect<bool, dim> _CI{CI,CJ,CK}; ```
and passing that one for the first argument makes the tests pass.
Without the explicit variable gcc-14 emits a warning:
```text In lambda function, inlined from ?constexpr std::array<_Tp, _Nm> Arith::construct_array(const F&) [with T = bool; long unsigned int N = 1; F = vect<bool, 3>::vect(std::initializer_list<bool>)::<lambda(size_t)>]? at /data/rhaas/postdoc/gr/cactus/ET_trunk /arrangements/CarpetX/Arith/src/vect.hxx:94:57, inlined from ?constexpr std::array<_Tp, _Nm> Arith::construct_array(const F&) [with T = bool; long unsigned int N = 2; F = vect<bool, 3>::vect(std::initializer_list<bool>)::<lambda(size_t)>]? at /data/rhaas/postdoc/gr/cactus/ET_trunk /arrangements/CarpetX/Arith/src/vect.hxx:94:51, inlined from ?constexpr std::array<_Tp, _Nm> Arith::construct_array(const F&) [with T = bool; long unsigned int N = 3; F = vect<bool, 3>::vect(std::initializer_list<bool>)::<lambda(size_t)>]? at /data/rhaas/postdoc/gr/cactus/ET_trunk /arrangements/CarpetX/Arith/src/vect.hxx:94:51, inlined from ?constexpr Arith::vect<T, D>::vect(std::initializer_list<_Tp>) [with T = bool; int D = 3]? at /data/rhaas/postdoc/gr/cactus/ET_trunk/arrangements/CarpetX/Arith/src/vect.hxx:139:35, inlined from ?void Loop::GridDescBase::loop_box(const Arith::vect<int, 3>&, const Arith::vect<int, 3>&, const Arith::vect<int, 3>&, const Arith::vect<int, 3>&, const F&) const [with int CI = 1; int CJ = 1; int CK = 1; int VS = 1; int N = 1; F = TestProlongate::TestProlongate_Regrid(cGH*)::<lambda(const Loop::PointDesc&)>]? at /data/rhaas/postdoc/gr/cactus/ET_trunk/arrangements/CarpetX/Loop/src/loop.hxx:191:27, inlined from ?void Loop::GridDescBase::loop_int(const Arith::vect<int, 3>&, const F&) const [with int CI = 1; int CJ = 1; int CK = 1; int VS = 1; int N = 1; F = TestProlongate::TestProlongate_Regrid(cGH*)::<lambda(const Loop::PointDe sc&)>]? at /data/rhaas/postdoc/gr/cactus/ET_trunk/arrangements/CarpetX/Loop/src/loop.hxx:276:32, inlined from ?std::enable_if_t<(where == Loop::where_t::interior), void> Loop::GridDescBase::loop(const Arith::vect<int, 3>&, const F&) const [with int CI = 1; int CJ = 1; int CK = 1; Loop::where_t where = Loop::where_t::interior; F = TestProlongate::TestProlongate_Regrid(cGH*)::<lambda(const Loop::PointDesc&)>]? at /data/rhaas/postdoc/gr/cactus/ET_trunk/arrangements/CarpetX/Loop/src/loop.hxx:650:25, inlined from ?void Loop::GridDescBase::loop(const F&) const [with int CI = 1; int CJ = 1; int CK = 1; Loop::where_t where = Loop::where_t::interior; F = TestProlongate::TestProlongate_Regrid(cGH*)::<lambda(const Loop::PointDesc&)>]? at /data/rhaas/postdoc/gr/cactus/ET_trunk/arrangements/CarpetX/Loop/src/loop.hxx:711:28, inlined from ?void Loop::loop(const cGH*, const F&) [with int CI = 1; int CJ = 1; int CK = 1; where_t where = Loop::where_t::interior; F = TestProlongate::TestProlongate_Regrid(cGH*)::<lambda(const PointDesc&)>]? at /data/rhaas/postdoc/gr/cactus/ET_trunk/arrangements/CarpetX/Loop/src/loop.hxx:770:47, inlined from ?void Loop::loop_int(const cGH*, const F&) [with int CI = 1; int CJ = 1; int CK = 1; F = TestProlongate::TestProlongate_Regrid(cGH*)::<lambda(const PointDesc&)>]? at /data/rhaas/postdoc/gr/cactus/ET_trunk/arrangements/CarpetX/Loop/src/loop.hxx:786:38, inlined from ?void TestProlongate::TestProlongate_Regrid(cGH*)? at /data/rhaas/postdoc/gr/cactus/ET_trunk/configs/tests/build/TestProlongate/test.cxx:236:26: /data/rhaas/postdoc/gr/cactus/ET_trunk/arrangements/CarpetX/Arith/src/vect.hxx:143:31: warning: ?<anonymous>? may be used uninitialized [-Wmaybe-uninitialized] 143 | return lst.begin()[d]; | ^ /data/rhaas/postdoc/gr/cactus/ET_trunk/arrangements/CarpetX/Loop/src/loop.hxx: In function ?void TestProlongate::TestProlongate_Regrid(cGH*)?: /data/rhaas/postdoc/gr/cactus/ET_trunk/arrangements/CarpetX/Loop/src/loop.hxx:177:9: note: ?<anonymous>? declared here 177 | #pragma omp simd | ^~~ ```
So this change:
```diff diff --git a/Loop/src/loop.hxx b/Loop/src/loop.hxx index 0aaa290c..0cb82580 100644 --- a/Loop/src/loop.hxx +++ b/Loop/src/loop.hxx @@ -187,8 +187,9 @@ public: // Outward boundary normal (if on outermost interior point), else 0 const vect<int, dim> BI = vect<int, dim>(I == bnd_max - 1) - vect<int, dim>(I == bnd_min); + const vect<bool, dim> _CI{CI, CJ, CK}; const PointDesc p = - point_desc({CI, CJ, CK}, I, iter, NI, I0, BI, bnd_min, bnd_max, + point_desc(_CI, I, iter, NI, I0, BI, bnd_min, bnd_max, loop_min, loop_max); f(p); } ```
makes the tests pass, though I am not quite sure why.
-- Ticket URL: https://bitbucket.org/einsteintoolkit/tickets/issues/2818/failing-tests-with...