https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102871
Bug ID: 102871 Summary: ICE in unify, at cp/pt.c:23752 since r7-4431-g4a826ca6feb3c7ec Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: jason at redhat dot com Target Milestone: --- The following valid code (accepted by clang) crashes: $ cat deduction.cpp template <auto> struct X {}; template <typename T, typename... Ts> struct A { template <Ts... Ns, T... Ps> A(X<Ps...>, Ts (*...qs)[Ns]); }; int arr2; short arr3[1]; A a(X<&arr2>{}, &arr3); $ g++ deduction.cpp -c deduction.cpp: In substitution of ‘template<Ts ...Ns, int* ...Ps> A<int*, short int>::A(X<Ps ...>, Ts (*)[Ns]...) [with Ts ...Ns = <missing>; int* ...Ps = {(& arr2)}]’: deduction.cpp:7:22: required from here deduction.cpp:7:22: internal compiler error: in unify, at cp/pt.c:23752 7 | A a(X<&arr2>{}, &arr3); | ^ 0x736bcd unify /home/marxin/Programming/gcc/gcc/cp/pt.c:23752 0xba9501 unify /home/marxin/Programming/gcc/gcc/cp/pt.c:24030 0xba8fa9 unify /home/marxin/Programming/gcc/gcc/cp/pt.c:24014 0xba6403 unify_one_argument /home/marxin/Programming/gcc/gcc/cp/pt.c:22288 0xba7151 unify_pack_expansion /home/marxin/Programming/gcc/gcc/cp/pt.c:23335 0xbc0142 type_unification_real /home/marxin/Programming/gcc/gcc/cp/pt.c:22431 0xbcf6d9 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node* const*, unsigned int, tree_node*, unification_kind_t, int, conversion**, bool, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:21739 0x9bbd41 add_template_candidate_real /home/marxin/Programming/gcc/gcc/cp/call.c:3548 0x9bce0b add_template_candidate /home/marxin/Programming/gcc/gcc/cp/call.c:3636 0x9bce0b add_candidates /home/marxin/Programming/gcc/gcc/cp/call.c:6193 0x9c3bfb add_candidates /home/marxin/Programming/gcc/gcc/cp/call.c:6079 0x9c3bfb build_new_method_call_1 /home/marxin/Programming/gcc/gcc/cp/call.c:10874 0x9c3bfb build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, tree_node**, int) /home/marxin/Programming/gcc/gcc/cp/call.c:11084 0x9c52e3 build_special_member_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, int) /home/marxin/Programming/gcc/gcc/cp/call.c:10484 0xaa5a9b expand_default_init /home/marxin/Programming/gcc/gcc/cp/init.c:2015 0xaa5a9b expand_aggr_init_1 /home/marxin/Programming/gcc/gcc/cp/init.c:2134 0xaa83ff build_aggr_init(tree_node*, tree_node*, int, int) /home/marxin/Programming/gcc/gcc/cp/init.c:1853 0xa4ea24 build_aggr_init_full_exprs /home/marxin/Programming/gcc/gcc/cp/decl.c:7052 0xa4ea24 check_initializer /home/marxin/Programming/gcc/gcc/cp/decl.c:7213 0xa7638a cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int) /home/marxin/Programming/gcc/gcc/cp/decl.c:8216 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Likely started with r7-4431-g4a826ca6feb3c7ec.