https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102990
Bug ID: 102990 Summary: ICE in tsubst_copy_and_build, à cp/pt.c:19856 Product: gcc Version: 11.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jeanmichael.celerier at gmail dot com Target Milestone: --- Created attachment 51695 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51695&action=edit Source code that causes the ICE Hello, g++-11.1 (Arch Linux). Here's the stack trace I'm getting: $ g++ -fPIC -fcoroutines -std=gnu++20 -c out.cpp In file included from /usr/include/boost/pfr/detail/core17.hpp:11, from /usr/include/boost/pfr/detail/core.hpp:17, from /usr/include/boost/pfr/core.hpp:12, from /usr/include/boost/pfr.hpp:12, from /home/jcelerier/projets/perso/avendish/src/avnd/concepts/generic.hpp:6, from /home/jcelerier/projets/perso/avendish/src/avnd/concepts/audio_port.hpp:6, from /home/jcelerier/projets/perso/avendish/src/avnd/concepts.hpp:6, from /home/jcelerier/projets/perso/avendish/src/avnd/prepare.hpp:5, from /home/jcelerier/projets/perso/avendish/src/avnd/avnd.hpp:5, from /home/jcelerier/projets/perso/avendish/src/python/processor.hpp:5, from /tmp/sdfljifg/examples__Helpers_python.cpp:5: /usr/include/boost/pfr/detail/fields_count.hpp: In substitution of ‘template<class T, long unsigned int N> constexpr decltype (sizeof (T{})) boost::pfr::detail::detect_fields_count_dispatch(boost::pfr::detail::size_t_<I>, long int, int) [with T = examples::Helpers<python::config>::<unnamed struct>; long unsigned int N = <missing>]’: /usr/include/boost/pfr/detail/fields_count.hpp:243:78: required from ‘constexpr std::size_t boost::pfr::detail::fields_count() [with T = const examples::Helpers<python::config>::<unnamed struct>; std::size_t = long unsigned int]’ /usr/include/boost/pfr/detail/core17.hpp:54:54: required from ‘constexpr auto boost::pfr::detail::tie_as_tuple(T&) [with T = const examples::Helpers<python::config>::<unnamed struct>]’ /usr/include/boost/pfr/core.hpp:106:29: required from ‘constexpr auto boost::pfr::structure_to_tuple(const T&) [with T = examples::Helpers<python::config>::<unnamed struct>]’ /home/jcelerier/projets/perso/avendish/src/avnd/concepts/port.hpp:12:424: required from ‘struct avnd::inputs_type<examples::Helpers<python::config> >’ /home/jcelerier/projets/perso/avendish/src/avnd/input_introspection.hpp:13:7: required by substitution of ‘template<class T> using parameter_input_introspection = avnd::parameter_introspection<typename avnd::inputs_type<T>::type> [with T = examples::Helpers<python::config>]’ /home/jcelerier/projets/perso/avendish/src/python/processor.hpp:47:54: required from ‘python::processor<T>::processor(pybind11::module_&) [with T = examples::Helpers<python::config>]’ /tmp/sdfljifg/examples__Helpers_python.cpp:10:52: required from here /usr/include/boost/pfr/detail/fields_count.hpp:189:17: internal compiler error: in tsubst_copy_and_build, at cp/pt.c:19856 189 | -> decltype(sizeof(T{})) | ^~~~~~~~~~~ 0x1797368 internal_error(char const*, ...) ???:0 0x67f8f9 fancy_abort(char const*, int, char const*) ???:0 0x6be30e fold_non_dependent_init(tree_node*, int, bool, tree_node*) ???:0 0x816127 finish_compound_literal(tree_node*, tree_node*, int, fcl_t) ???:0 0x7e78a9 tsubst(tree_node*, tree_node*, int, tree_node*) ???:0 0x7e721e tsubst(tree_node*, tree_node*, int, tree_node*) ???:0 0x803139 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node* const*, unsigned int, tree_node*, unification_kind_t, int, conversion**, bool, bool) ???:0 0x6994f5 build_new_function_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) ???:0 0x8177bc finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) ???:0 0x7ea4ef instantiate_decl(tree_node*, bool, bool) ???:0 0xfa14b3 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) ???:0 0xfa16a0 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) ???:0 0xfa37da walk_tree_without_duplicates_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) ???:0 0x6bdef4 maybe_constant_value(tree_node*, tree_node*, bool) ???:0 0x7e7c3a tsubst(tree_node*, tree_node*, int, tree_node*) ???:0 0x7ea4ef instantiate_decl(tree_node*, bool, bool) ???:0 0x711996 mark_used(tree_node*, int) ???:0 0x69950a build_new_function_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) ???:0 0x8177bc finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) ???:0 0x7ea4ef instantiate_decl(tree_node*, bool, bool) ???:0