Skip to content

[BUG] Build with gcc 14.2.0 fails #1791

@ppraegla

Description

@ppraegla

Bug Description: What's going wrong?

Compiling 4C with gcc-14 on Ubuntu 24.04 leads to an internal compiler error

/home/user/4C/src/core/linalg/src/dense/4C_linalg_tensor_internals.hpp:223:53: internal compiler error: in cxx_eval_indirect_ref, at cp/constexpr.cc:5954
  223 |     [[nodiscard]] constexpr Number* data() { return data_.data(); }

This is just an FYI for others: the Ubuntu gcc-14 package does not work with 4C. I found this bug report from gcc. Apparently, the bug is fixed in version 14.3./15

For testing, I used the 4C dependencies image

docker run -it ghcr.io/4c-multiphysics/4c-dependencies-ubuntu24.04:main

sudo apt update
sudo apt install gcc-14 g++-14
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 13 --slave /usr/bin/g++ g++ /usr/bin/g++-13
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 14 --slave /usr/bin/g++ g++ /usr/bin/g++-14

git clone https://github.com/4C-multiphysics/4C.git
cd 4C
mkdir build/release && cd build/release
cmake ../../ --preset=docker
cmake --build . --target full -j 8
The full error message

[538/2047] Building CXX object src/core/CMakeFiles/core_objs.dir/linalg/src/dense/4C_linalg_fixedsizematrix_tensor_products.cpp.o
FAILED: src/core/CMakeFiles/core_objs.dir/linalg/src/dense/4C_linalg_fixedsizematrix_tensor_products.cpp.o 
/usr/bin/mpic++ -DBOOST_GRAPH_DYN_LINK -DBOOST_GRAPH_NO_LIB -DBOOST_MAJOR_VERSION=1 -DBOOST_MINOR_VERSION=83 -DBOOST_REGEX_DYN_LINK -DBOOST_REGEX_NO_LIB -DKOKKOS_DEPENDENCE -DMIRCO_ENABLE_VISUALIZATIONEXPORT=0 -DMPICH_SKIP_MPICXX -DNDEBUG -DOMPI_SKIP_MPICXX -D_MPICC_H -Dkiss_fft_scalar=double -I/home/user/4C/src -I/home/user/4C/src/core -I/home/user/4C/src/core/binstrategy -I/home/user/4C/src/core/comm -I/home/user/4C/src/core/comm/src -I/home/user/4C/src/core/fem -I/home/user/4C/src/core/fem/src/condition -I/home/user/4C/src/core/fem/src/discretization -I/home/user/4C/src/core/fem/src/dofset -I/home/user/4C/src/core/fem/src/general/element -I/home/user/4C/src/core/fem/src/general/node -I/home/user/4C/src/core/fem/src/general/nurbs -I/home/user/4C/src/core/fem/src/general/utils -I/home/user/4C/src/core/fem/src/geometry -I/home/user/4C/src/core/fem/src/nurbs_discretization -I/home/user/4C/src/core/geometric_search -I/home/user/4C/src/core/geometric_search/src -I/home/user/4C/src/core/io -I/home/user/4C/src/core/io/src -I/home/user/4C/src/core/io/src/legacy -I/home/user/4C/src/core/legacy_enum_definitions -I/home/user/4C/src/core/linalg -I/home/user/4C/src/core/linalg/src/dense -I/home/user/4C/src/core/linalg/src/sparse -I/home/user/4C/src/core/linear_solver -I/home/user/4C/src/core/linear_solver/src/amgnxn -I/home/user/4C/src/core/linear_solver/src/method -I/home/user/4C/src/core/linear_solver/src/preconditioner -I/home/user/4C/src/core/linear_solver/src/utils -I/home/user/4C/src/core/material -I/home/user/4C/src/core/rebalance -I/home/user/4C/src/core/rebalance/src -I/home/user/4C/src/core/utils -I/home/user/4C/src/core/utils/src/exceptions -I/home/user/4C/src/core/utils/src/functions -I/home/user/4C/src/core/utils/src/numerics -I/home/user/4C/src/core/utils/src/parameters -I/home/user/4C/src/core/utils/src/random -I/home/user/4C/src/core/utils/src/result_test -I/home/user/4C/src/core/utils/src/stl_extension -I/home/user/4C/src/core/utils/src/stl_extension/c++23 -I/home/user/4C/src/core/utils/src/string_utils -I/home/user/4C/build/release/_deps/ryml-src/src -I/home/user/4C/build/release/_deps/ryml-src/ext/c4core/src -I/home/user/4C/build/release/_deps/magic_enum-src/include -I/home/user/4C/build/release/_deps/cli11-src/include -I/home/user/4C/build/release/_deps/arborx-src/src -I/home/user/4C/build/release/_deps/arborx-src/src/geometry -I/home/user/4C/build/release/_deps/arborx-src/src/cluster -I/home/user/4C/build/release/_deps/arborx-src/src/distributed -I/home/user/4C/build/release/_deps/arborx-src/src/interpolation -I/home/user/4C/build/release/_deps/arborx-src/src/spatial -I/home/user/4C/build/release/_deps/arborx-build/include -I/home/user/4C/build/release/_deps/mirco-src/src -I/home/user/4C/src/config -I/home/user/4C/build/release/src/config/config -I/home/user/4C/build/release/src/config -isystem /usr/include/hdf5/openmpi -isystem /opt/4C-dependencies/include -isystem /opt/4C-dependencies/include/kokkos -isystem /usr/include/suitesparse -isystem /usr/include/vtk-9.1 -isystem /opt/4C-dependencies/include/deal.II/bundled -isystem /opt/4C-dependencies/FAST/include -isystem /home/user/4C/build/release/_deps/pybind11-src/include -isystem /usr/include/python3.12 -O3 -DNDEBUG -std=c++20 -fPIC -Wall -Wextra -Wvla -Wno-unused-parameter -Wno-overloaded-virtual -Wno-maybe-uninitialized -Werror -ftrapping-math -O3 -funroll-loops -MD -MT src/core/CMakeFiles/core_objs.dir/linalg/src/dense/4C_linalg_fixedsizematrix_tensor_products.cpp.o -MF src/core/CMakeFiles/core_objs.dir/linalg/src/dense/4C_linalg_fixedsizematrix_tensor_products.cpp.o.d -o src/core/CMakeFiles/core_objs.dir/linalg/src/dense/4C_linalg_fixedsizematrix_tensor_products.cpp.o -c /home/user/4C/src/core/linalg/src/dense/4C_linalg_fixedsizematrix_tensor_products.cpp
In file included from /home/user/4C/src/core/linalg/src/dense/4C_linalg_tensor.hpp:14,
                 from /home/user/4C/src/core/linalg/src/dense/4C_linalg_symmetric_tensor.hpp:13,
                 from /home/user/4C/src/core/linalg/src/dense/4C_linalg_fixedsizematrix_tensor_products.hpp:22,
                 from /home/user/4C/src/core/linalg/src/dense/4C_linalg_fixedsizematrix_tensor_products.cpp:8:
/home/user/4C/src/core/linalg/src/dense/4C_linalg_tensor_internals.hpp: In instantiation of ‘FourC::Core::LinAlg::einsum_sym<FourC::Core::Utils::CompileTimeString<3>{std::array<char, 2>{"i"}}, FourC::Core::Utils::CompileTimeString<3>{std::array<char, 2>{"j"}}, TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>, TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3> >(const TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>&, const TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>&)::<lambda(auto:127 ...)> [with auto:127 = {std::integral_constant<long unsigned int, 0>, std::integral_constant<long unsigned int, 0>, std::integral_constant<long unsigned int, 0>, std::integral_constant<long unsigned int, 0>}]’:
/home/user/4C/src/core/linalg/src/dense/4C_linalg_tensor_symmetric_einstein.hpp:107:16:   required from ‘static constexpr void FourC::Core::LinAlg::EinsteinHelper::ConstExprSymmetricMultiFor<std::integer_sequence<long unsigned int, _Idx ...>, FourC::Core::LinAlg::EinsteinHelper::IntegerPairSequence<IntegerPairs ...> >::multi_for(Action) [with Action = FourC::Core::LinAlg::einsum_sym<FourC::Core::Utils::CompileTimeString<3>{std::array<char, 2>{"i"}}, FourC::Core::Utils::CompileTimeString<3>{std::array<char, 2>{"j"}}, TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>, TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3> >(const TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>&, const TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>&)::<lambda(auto:127 ...)>; long unsigned int ...i = {0, 0}; IntegerPairs = {FourC::Core::LinAlg::EinsteinHelper::IntegerPair<0, 0>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<1, 1>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<2, 2>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<0, 1>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<1, 2>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<0, 2>}]’
  107 |         (action(std::integral_constant<std::size_t, i>{}...,
      |          ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  108 |              std::integral_constant<std::size_t, IntegerPairs::first>{},
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  109 |              std::integral_constant<std::size_t, IntegerPairs::second>{}),
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/user/4C/src/core/linalg/src/dense/4C_linalg_tensor_symmetric_einstein.hpp:95:49:   required from ‘static constexpr void FourC::Core::LinAlg::EinsteinHelper::ConstExprSymmetricMultiFor<std::integer_sequence<long unsigned int, _Idx ...>, FourC::Core::LinAlg::EinsteinHelper::IntegerPairSequence<IntegerPairs ...>, IntegerPairSequences ...>::multi_for(Action) [with Action = FourC::Core::LinAlg::einsum_sym<FourC::Core::Utils::CompileTimeString<3>{std::array<char, 2>{"i"}}, FourC::Core::Utils::CompileTimeString<3>{std::array<char, 2>{"j"}}, TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>, TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3> >(const TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>&, const TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>&)::<lambda(auto:127 ...)>; long unsigned int ...i = {}; IntegerPairs = {FourC::Core::LinAlg::EinsteinHelper::IntegerPair<0, 0>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<1, 1>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<2, 2>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<0, 1>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<1, 2>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<0, 2>}; IntegerPairSequences = {FourC::Core::LinAlg::EinsteinHelper::IntegerPairSequence<FourC::Core::LinAlg::EinsteinHelper::IntegerPair<0, 0>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<1, 1>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<2, 2>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<0, 1>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<1, 2>, FourC::Core::LinAlg::EinsteinHelper::IntegerPair<0, 2> >}]’
   93 |         (ConstExprSymmetricMultiFor<
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~             
   94 |              std::integer_sequence<std::size_t, i..., IntegerPairs::first, IntegerPairs::second>,
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   95 |              IntegerPairSequences...>::multi_for(action),
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
/home/user/4C/src/core/linalg/src/dense/4C_linalg_tensor_symmetric_einstein.hpp:222:90:   required from ‘auto FourC::Core::LinAlg::einsum_sym(const Tensor& ...) [with CompileTimeString<...auto...> ...einstein_indices = {FourC::Core::Utils::CompileTimeString<3>{std::array<char, 2>{"i"}}, FourC::Core::Utils::CompileTimeString<3>{std::array<char, 2>{"j"}}}; Tensor = {TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>, TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, Internal::SymmetricCompression<3, 3>, 3, 3>}]’
  222 |       EinsteinHelper::ConstExprSymmetricMultiForMaker<dyadic_einstein_indices>::multi_for(
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
  223 |           [&](auto... i)
      |           ~~~~~~~~~~~~~~                                                                  
  224 |           {
      |           ~                                                                               
  225 |             constexpr std::array<std::size_t, sizeof...(i)> dyadic_index = {i()...};
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~      
  226 | 
      |                                                                                           
  227 |             constexpr std::array tensor_flat_indices =
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                    
  228 |                 EinsteinHelper::flat_indices<TensorCompressionTypes, contraction_einstein_indices,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  229 |                     dyadic_einstein_indices, contraction_index, dyadic_index,
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  230 |                     einstein_indices.value...>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~                                           
  231 |             constexpr std::size_t flat_index =
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                            
  232 |                 EinsteinHelper::flat_index<TensorCompressionType<decltype(tensor_result)>,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  233 |                     EinsteinHelper::get_tensor_component<
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                 
  234 |                         EinsteinHelper::einstein_index_names<dyadic_einstein_indices>,
      |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
  235 |                         contraction_einstein_indices, dyadic_einstein_indices>(
      |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  236 |                         contraction_index, dyadic_index)>;
      |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                
  237 | 
      |                                                                                           
  238 |             *(tensor_result.data() + flat_index) +=
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                       
  239 |                 EinsteinHelper::evaluate_contraction<tensor_flat_indices>(t...);
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
  240 |           });
      |           ~~                                                                              
/home/user/4C/src/core/linalg/src/dense/4C_linalg_fixedsizematrix_tensor_products.cpp:324:44:   required from ‘FourC::Core::LinAlg::SymmetricTensor<T, 3, 3, 3, 3> FourC::Core::LinAlg::FourTensorOperations::holzapfel_product(FourC::Core::LinAlg::SymmetricTensor<T, 3, 3>&) [with T = Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >; FourC::Core::LinAlg::SymmetricTensor<T, 3, 3, 3, 3> = FourC::Core::LinAlg::TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, FourC::Core::LinAlg::Internal::SymmetricCompression<3, 3, 3, 3>, 3, 3, 3, 3>; FourC::Core::LinAlg::SymmetricTensor<T, 3, 3> = FourC::Core::LinAlg::TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, FourC::Core::LinAlg::Internal::SymmetricCompression<3, 3>, 3, 3>]’
  324 |   auto c_inv_ac_bd = einsum_sym<"ik", "jl">(invc, invc);
      |                      ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/home/user/4C/src/core/linalg/src/dense/4C_linalg_fixedsizematrix_tensor_products.cpp:946:52:   required from here
  946 |     const Core::LinAlg::SymmetricTensor<FAD, 3, 3>&);
      |                                                    ^
/home/user/4C/src/core/linalg/src/dense/4C_linalg_tensor_symmetric_einstein.hpp:238:33:   in ‘constexpr’ expansion of ‘(& tensor_result)->FourC::Core::LinAlg::TensorInternal<Sacado::Fad::Exp::GeneralFad<Sacado::Fad::Exp::DynamicStorage<double, double> >, FourC::Core::LinAlg::TensorStorageType::owning, FourC::Core::LinAlg::Internal::SymmetricCompression<3, 3, 3, 3>, 3, 3, 3, 3>::data()’
/home/user/4C/src/core/linalg/src/dense/4C_linalg_tensor_internals.hpp:223:53: internal compiler error: in cxx_eval_indirect_ref, at cp/constexpr.cc:5954
  223 |     [[nodiscard]] constexpr Number* data() { return data_.data(); }
      |                                                     ^~~~~
0x1431cf4 internal_error(char const*, ...)
	???:0
0x1431dca fancy_abort(char const*, int, char const*)
	???:0
0x16277f6 maybe_constant_value(tree_node*, tree_node*, mce_value)
	???:0
0x162ffa4 fold_for_warn(tree_node*)
	???:0
0x168ca92 build_new_op(op_location_t const&, tree_code, int, tree_node*, tree_node*, tree_node*, tree_node*, tree_node**, int)
	???:0
0x16c8cdc build_x_modify_expr(unsigned int, tree_node*, tree_code, tree_node*, tree_node*, int)
	???:0
0x1788407 tsubst_expr(tree_node*, tree_node*, int, tree_node*)
	???:0
0x1865259 instantiate_decl(tree_node*, bool, bool)
	???:0
0x1851e6e maybe_instantiate_decl(tree_node*)
	???:0
0x168bccb mark_used(tree_node*, int)
	???:0
0x1b98d95 build_op_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int)
	???:0
0x166df06 finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int)
	???:0
0x17873d3 tsubst_expr(tree_node*, tree_node*, int, tree_node*)
	???:0
0x17ebf9e tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*)
	???:0
0x1788774 tsubst_expr(tree_node*, tree_node*, int, tree_node*)
	???:0
0x1865259 instantiate_decl(tree_node*, bool, bool)
	???:0
0x15ab22f instantiate_pending_templates(int)
	???:0
0x15a2d8f c_parse_final_cleanups()
	???:0
0x1afc705 c_common_parse_file()
	???:0
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-14/README.Bugs> for instructions.
[545/2047] Building CXX object src/core/CMakeFiles/core_objs.dir/fem/src/general/utils/4C_fem_general_utils_polynomial.cpp.o
ninja: build stopped: subcommand failed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions