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.

Reply via email to