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

Reply via email to