https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99119
Bug ID: 99119
Summary: Class Types in Non-Type Template Parameters - ICE with
templates nested
Product: gcc
Version: 10.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vopl at bk dot ru
Target Milestone: ---
g++ 9, 10
$ cat test.cpp && echo EOFFFFFFF
//Class Types in Non-Type Template Parameters - ICE with templates nested
template<int size>
struct Name {};
template <class T> constexpr Name<5> tname5 {};
template <Name n> struct Use{};
//////////////////////////////////////////////////
// now try to use tname5
Use<tname5<int>> use0;//ok
template <class T> Use<tname5<T>> use1;//ICE
//template <class T> Use<tname5<int>> use2;//ICE
//template <int> Use<tname5<int>> use3;//ICE
template <class T> struct Tmpl
{
//Use<tname5<T>> use0;// ICE
//Use<tname5<int>> use1;// ICE
};
template <auto v> struct Tmpl2
{
//Use<tname5<decltype(v)>> use0;// ICE
//Use<tname5<int>> use1;// ICE
};
template <class> void f()
{
//Use<tname<int>> use0;// ICE
};
EOFFFFFFF
$ g++ -std=gnu++2a test.cpp
test.cpp:13:32: internal compiler error: Segmentation fault
13 | template <class T> Use<tname5<T>> use1;//ICE
| ^~
0xa86b6d crash_signal
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/toplev.c:328
0x7fdedac189ef ???
/usr/src/debug/sys-libs/glibc-2.32-r6/glibc-2.32/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0
0xfa498e resolve_args(vec<tree_node*, va_gc, vl_embed>*, int)
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/call.c:4457
0x84a43d do_class_deduction
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:28842
0x84a43d do_auto_deduction(tree_node*, tree_node*, tree_node*, int,
auto_deduction_context, tree_node*, int)
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:28975
0x73e0ab convert_template_argument
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:8404
0x105ae43 coerce_template_parms
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:8908
0x1058aed lookup_template_class_1
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:9746
0x10580d6 lookup_template_class(tree_node*, tree_node*, tree_node*, tree_node*,
int, int)
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/pt.c:10118
0x10580d6 finish_template_type(tree_node*, tree_node*, int)
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/semantics.c:3408
0xec6792 cp_parser_template_id
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:16739
0xed5dfa cp_parser_class_name
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:23713
0xec40a5 cp_parser_qualifying_entity
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:6776
0xec40a5 cp_parser_nested_name_specifier_opt
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:6458
0x94a8ec cp_parser_template_introduction
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:29203
0x6c5791 cp_parser_template_declaration_after_export
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:29373
0x6c5791 cp_parser_template_declaration_after_parameters
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:29068
0x6c18fe cp_parser_explicit_template_declaration
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:29350
0xeae6ee cp_parser_template_declaration_after_export
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:29369
0xeae6ee cp_parser_template_declaration
/usr/src/debug/sys-devel/gcc-10.2.0-r5/gcc-10.2.0/gcc/cp/parser.c:15866