https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95925

            Bug ID: 95925
           Summary: ICE in xref_basetypes, at cp/decl.c:15169
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: haoxintu at gmail dot com
  Target Milestone: ---

This code, bug.cc, reduced by C-Reduce, makes GCC ICE.

$cat bug.cc
class a;
template <union a {
} struct a {


$g++ bug.cc
bug.cc:2:17: error: ‘union’ tag used in naming ‘class a’ 
    2 | template <union a {
      |                 ^
bug.cc:1:7: note: ‘class a’ was previously declared here
    1 | class a;
      |       ^
bug.cc:2:19: error: types may not be defined in parameter types
    2 | template <union a {
      |                   ^
bug.cc:2:19: error: definition of ‘struct a’ inside template parameter list
bug.cc:3:10: internal compiler error: in xref_basetypes, at cp/decl.c:15169
    3 | } struct a {
      |          ^
0x616b27 xref_basetypes(tree_node*, tree_node*)
        ../../gcc/cp/decl.c:15169
0x9a16fe cp_parser_class_head
        ../../gcc/cp/parser.c:24723
0x9a16fe cp_parser_class_specifier_1
        ../../gcc/cp/parser.c:23880
0x9a1aa3 cp_parser_class_specifier
        ../../gcc/cp/parser.c:24254
0x9a1aa3 cp_parser_type_specifier
        ../../gcc/cp/parser.c:17762
0x9a2a02 cp_parser_decl_specifier_seq
        ../../gcc/cp/parser.c:14410
0x9bf3ef cp_parser_parameter_declaration
        ../../gcc/cp/parser.c:22818
0x9c03ab cp_parser_template_parameter
        ../../gcc/cp/parser.c:16360
0x9c03ab cp_parser_template_parameter_list
        ../../gcc/cp/parser.c:15951
0x9c9962 cp_parser_explicit_template_declaration
        ../../gcc/cp/parser.c:29373
0x9cca89 cp_parser_declaration
        ../../gcc/cp/parser.c:13433
0x9cd06a cp_parser_translation_unit
        ../../gcc/cp/parser.c:4761
0x9cd06a c_parse_file()
        ../../gcc/cp/parser.c:44043
0xae4dbb c_common_parse_file()
        ../../gcc/c-family/c-opts.c:1190
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.


$g++ --version
g++ (GCC) 11.0.0 20200626 (experimental)
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Reply via email to