https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100632
Bug ID: 100632 Summary: [11/12 Regression] ICE: Segmentation fault (in write_member_name) Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: error-recovery, ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- g++-12.0.0-alpha20210516 snapshot (g:4a322345cab10879162a2ddf659fb0f873ba0182) ICEs when compiling the following testcase, extracted from test/CodeGenCXX/mangle-class-nttp.cpp from the clang 12.0.0 test suite, w/ -std=c++20: struct B { const int *p; }; template<B> void f(); struct Nested { union { int k; }; } nested; template void f<B{&nested.k}>(); % g++-12.0.0 -std=c++20 -c hwmzjgfh.cpp hwmzjgfh.cpp:6:31: internal compiler error: Segmentation fault 6 | template void f<B{&nested.k}>(); | ^ 0x10dbb6f crash_signal /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/toplev.c:327 0x9ddcd5 tree_check(tree_node*, char const*, int, char const*, tree_code) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/tree.h:3355 0x9ddcd5 write_member_name /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/mangle.c:2875 0x9db2ca write_expression /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/mangle.c:3412 0x9d9ad2 write_expression /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/mangle.c:3547 0x9dbc36 write_expression /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/mangle.c:3340 0x9de64f mangle_template_parm_object(tree_node*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/mangle.c:4518 0xaa0f1a get_template_parm_object /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/pt.c:7162 0xacb8ab convert_nontype_argument /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/pt.c:7647 0xacb8ab convert_template_argument /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/pt.c:8546 0xacd2c3 coerce_template_parms /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/pt.c:9025 0xada921 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node* const*, unsigned int, tree_node*, unification_kind_t, int, conversion**, bool, bool) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/pt.c:21504 0xadbbe4 get_bindings /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/pt.c:24738 0xadcaf1 determine_specialization /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/pt.c:2335 0xae235c determine_specialization /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/pt.c:2158 0xae235c check_explicit_specialization(tree_node*, tree_node*, int, int, tree_node*) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/pt.c:3126 0x97c5e1 grokfndecl /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/decl.c:10119 0x9838fd grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*, decl_context, int, tree_node**) /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/decl.c:13975 0xa747e4 cp_parser_explicit_instantiation /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/parser.c:18285 0xa85470 cp_parser_declaration /var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210516/work/gcc-12-20210516/gcc/cp/parser.c:14127