https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116676
Bug ID: 116676 Summary: GCC crashes on incorrect code with -std=c++23 in 'constexpr' expansion of 'std::get<0, const int&, details::spin_sync<void> >(std::<structured bindings>)' Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: q1210081098 at gmail dot com Target Milestone: --- Reproducer: https://gcc.godbolt.org/z/xchx7s3f7 ``` #include <iostream> namespace std { namespace details { template<typename> class spin_sync{ }; template<> class spin_sync<void>{ }; } constexpr int x(3); auto [fet, err] = std::pair<const int &, details::spin_sync<void> >{ x*x, details::spin_sync<void>() }; return 0; } ``` and get result ``` In file included from /opt/compiler-explorer/gcc-trunk-20240911/include/c++/15.0.0/bits/stl_algobase.h:64, from /opt/compiler-explorer/gcc-trunk-20240911/include/c++/15.0.0/string:51, from /opt/compiler-explorer/gcc-trunk-20240911/include/c++/15.0.0/bits/locale_classes.h:40, from /opt/compiler-explorer/gcc-trunk-20240911/include/c++/15.0.0/bits/ios_base.h:41, from /opt/compiler-explorer/gcc-trunk-20240911/include/c++/15.0.0/ios:44, from /opt/compiler-explorer/gcc-trunk-20240911/include/c++/15.0.0/ostream:40, from /opt/compiler-explorer/gcc-trunk-20240911/include/c++/15.0.0/iostream:41, from <source>:1: <source>:10:11: in 'constexpr' expansion of 'std::get<0, const int&, details::spin_sync<void> >(std::<structured bindings>)' /opt/compiler-explorer/gcc-trunk-20240911/include/c++/15.0.0/bits/stl_pair.h:1270:42: in 'constexpr' expansion of 'std::__pair_get<0>::__move_get<const int&, std::details::spin_sync<void> >((* & std::move<pair<const int&, details::spin_sync<void> >&>((* & __in))))' /opt/compiler-explorer/gcc-trunk-20240911/include/c++/15.0.0/bits/stl_pair.h:1220:44: internal compiler error: Segmentation fault 1220 | { return std::forward<_Tp1>(__pair.first); } | ~~~~~~~^~~~~ 0x27e5ad5 diagnostic_context::diagnostic_impl(rich_location*, diagnostic_metadata const*, diagnostic_option_id, char const*, __va_list_tag (*) [1], diagnostic_t) ???:0 0x27f9075 internal_error(char const*, ...) ???:0 0xd6fcad store_init_value(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) ???:0 0xb7523e cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int, cp_decomp*) ???:0 0xb72f8d cp_finish_decomp(tree_node*, cp_decomp*, bool) ???:0 0xb7518c cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int, cp_decomp*) ???:0 0xc9050a c_parse_file() ???:0 0xde72f9 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 <https://gcc.gnu.org/bugs/> for instructions. Compiler returned: 1 ```