Wrong subscript in test-yaspgrid-backuprestore-tensor
I gave GCC 12.0 a try and when compiling test-yaspgrid-backuprestore-tensor
, I get the following warning
array subscript 18446744071562067968 is above array bounds of ‘std::__array_traits<int, 3>::_Type’ {aka ‘const int [3]’}
. I couldn't find out what the problem is, but it seems to be unrelated to my recently changed binomial code. Also, only when compiling this test I get the warning.
The whole warning:
Built target test-yaspgrid-backuprestore-tensor
[ 90%] Building CXX object dune/grid/test/yasp/CMakeFiles/test-yaspgrid-entityshifttable.dir/test-yaspgrid-entityshifttable.cc.o
In file included from /usr/include/c++/12/functional:63,
from /home/gruenich/dune/complete/dune-common/dune/common/test/collectorstream.hh:8,
from /home/gruenich/dune/complete/dune-common/dune/common/test/testsuite.hh:11,
from /home/gruenich/dune/complete/dune-grid/dune/grid/test/yasp/test-yaspgrid-entityshifttable.cc:6:
In static member function ‘static constexpr _Tp& std::__array_traits<_Tp, _Nm>::_S_ref(const _Tp (&)[_Nm], std::size_t) [with _Tp = int; long unsigned int _Nm = 3]’,
inlined from ‘constexpr const std::array<_Tp, _Nm>::value_type& std::array<_Tp, _Nm>::operator[](size_type) const [with _Tp = int; long unsigned int _Nm = 3]’ at /usr/include/c++/12/array:219:25,
inlined from ‘static constexpr int Dune::Yasp::BinomialTable<n>::evaluate(int, int) [with int n = 1]’ at /home/gruenich/dune/complete/dune-grid/dune/grid/yaspgrid/yaspgridentity.hh:41:23,
inlined from ‘constexpr int Dune::Yasp::subEnt(int, int) [with int dimworld = 1]’ at /home/gruenich/dune/complete/dune-grid/dune/grid/yaspgrid/yaspgridentity.hh:105:60,
inlined from ‘static constexpr long long unsigned int Dune::Yasp::calculate_entity_shift<dim>::evaluate(int, int) [with int dim = 1]’ at /home/gruenich/dune/complete/dune-grid/dune/grid/yaspgrid/yaspgridentity.hh:192:69,
inlined from ‘Dune::TestSuite testEntityShiftTable(const std::vector<long long unsigned int>*, bool) [with F = Dune::Yasp::calculate_entity_shift<1>; int dim = 1]’ at /home/gruenich/dune/complete/dune-grid/dune/grid/test/yasp/test-yaspgrid-entityshifttable.cc:64:21:
/usr/include/c++/12/array:61:36: warning: array subscript 18446744071562067968 is above array bounds of ‘std::__array_traits<int, 3>::_Type’ {aka ‘const int [3]’} [-Warray-bounds]
61 | { return const_cast<_Tp&>(__t[__n]); }
| ~~~^
In file included from /home/gruenich/dune/complete/dune-grid/dune/grid/yaspgrid.hh:69,
from /home/gruenich/dune/complete/dune-grid/dune/grid/test/yasp/test-yaspgrid-entityshifttable.cc:7:
/home/gruenich/dune/complete/dune-grid/dune/grid/yaspgrid/yaspgridentity.hh: In function ‘Dune::TestSuite testEntityShiftTable(const std::vector<long long unsigned int>*, bool) [with F = Dune::Yasp::calculate_entity_shift<1>; int dim = 1]’:
/home/gruenich/dune/complete/dune-grid/dune/grid/yaspgrid/yaspgridentity.hh:85:54: note: while referencing ‘Dune::Yasp::BinomialTable<1>::_values’
85 | static constexpr std::array<int,(n+1)*(n+2)/2> _values = computeValues(std::make_index_sequence<(n+1)*(n+2)/2>{});
|
For future reference:
> gcc-12 --version
gcc-12 (SUSE Linux) 12.0.1 20220317 (experimental) [revision c43cb355f25dd22133d15819bd6ec03d3d3939fd]