https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101563
Bug ID: 101563 Summary: ICE in lookup_template_class_1, at cp/pt.c:10184 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: gs...@t-online.de Target Milestone: --- Affects versions down to at least r5 : (in addition to g++.dg/template/mem-spec1.C) $ cat z1.cc namespace N { template<typename> struct A { template<typename> struct B {}; A() { B<int> b; } }; template<> template<typename> struct A<int>::B { ~B() {} }; A<int> x; A<int>::B<int> y; } $ g++-12-20210718 -c z1.cc z1.cc: In instantiation of 'N::A< <template-parameter-1-1> >::A() [with <template-parameter-1-1> = int]': z1.cc:12:10: required from here z1.cc:5:18: internal compiler error: in lookup_template_class_1, at cp/pt.c:10184 5 | A() { B<int> b; } | ^ 0x98a861 lookup_template_class_1 ../../gcc/cp/pt.c:10184 0x98a861 lookup_template_class(tree_node*, tree_node*, tree_node*, tree_node*, int, int) ../../gcc/cp/pt.c:10230 0x98b14d tsubst_aggr_type ../../gcc/cp/pt.c:13577 0x9753d7 tsubst(tree_node*, tree_node*, int, tree_node*) ../../gcc/cp/pt.c:15450 0x98cb91 tsubst_decl ../../gcc/cp/pt.c:14747 0x9755bf tsubst(tree_node*, tree_node*, int, tree_node*) ../../gcc/cp/pt.c:15369 0x998171 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/cp/pt.c:18236 0x995852 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/cp/pt.c:18479 0x993b75 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/cp/pt.c:18120 0x995852 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/cp/pt.c:18479 0x979d49 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/cp/pt.c:18106 0x979d49 instantiate_body ../../gcc/cp/pt.c:25869 0x97b477 instantiate_decl(tree_node*, bool, bool) ../../gcc/cp/pt.c:26162 0x9bd42b instantiate_pending_templates(int) ../../gcc/cp/pt.c:26241 0x82cac1 c_parse_final_cleanups() ../../gcc/cp/decl2.c:4991