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

            Bug ID: 86661
           Summary: g++ ICE:tree check: expected tree that contains ‘decl
                    minimal’ structure, have ‘overload’ in
                    note_name_declared_in_class, at cp/class.c:8288
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: helloqirun at gmail dot com
  Target Milestone: ---

clang++ could compile it. It appears to be a recent regression.

$ g++-trunk -v
Using built-in specs.
COLLECT_GCC=g++-trunk
COLLECT_LTO_WRAPPER=/home/absozero/trunk/root-gcc/libexec/gcc/x86_64-pc-linux-gnu/9.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc/configure --prefix=/home/absozero/trunk/root-gcc
--enable-languages=c,c++ --disable-werror --enable-multilib
Thread model: posix
gcc version 9.0.0 20180724 (experimental) [trunk revision 262942] (GCC) 


$ g++-trunk abc.C
abc.C:5:31: internal compiler error: tree check: expected tree that contains
‘decl minimal’ structure, have ‘overload’ in note_name_declared_in_class, at
cp/class.c:8288
   template <typename> void a();
                               ^
0x78fc6e tree_contains_struct_check_failed(tree_node const*,
tree_node_structure_enum, char const*, int, char const*)
        ../../gcc/gcc/tree.c:9523
0x5e5d0c contains_struct_check(tree_node*, tree_node_structure_enum, char
const*, int, char const*)
        ../../gcc/gcc/tree.h:3228
0x5e5d0c note_name_declared_in_class(tree_node*, tree_node*)
        ../../gcc/gcc/cp/class.c:8288
0x90e2aa push_class_level_binding_1
        ../../gcc/gcc/cp/name-lookup.c:4656
0x90e2aa push_class_level_binding(tree_node*, tree_node*)
        ../../gcc/gcc/cp/name-lookup.c:4681
0x84d79d add_method(tree_node*, tree_node*, bool)
        ../../gcc/gcc/cp/class.c:1156
0x9b79e3 finish_member_declaration(tree_node*)
        ../../gcc/gcc/cp/semantics.c:3107
0x94fc67 cp_parser_template_declaration_after_parameters
        ../../gcc/gcc/cp/parser.c:27113
0x95047e cp_parser_explicit_template_declaration
        ../../gcc/gcc/cp/parser.c:27272
0x95047e cp_parser_template_declaration_after_export
        ../../gcc/gcc/cp/parser.c:27291
0x93b9fd cp_parser_member_declaration
        ../../gcc/gcc/cp/parser.c:23593
0x93c898 cp_parser_member_specification_opt
        ../../gcc/gcc/cp/parser.c:23520
0x93c898 cp_parser_class_specifier_1
        ../../gcc/gcc/cp/parser.c:22664
0x93e59d cp_parser_class_specifier
        ../../gcc/gcc/cp/parser.c:22926
0x93e59d cp_parser_type_specifier
        ../../gcc/gcc/cp/parser.c:16907
0x94b113 cp_parser_decl_specifier_seq
        ../../gcc/gcc/cp/parser.c:13748
0x9507b0 cp_parser_simple_declaration
        ../../gcc/gcc/cp/parser.c:13058
0x9558b2 cp_parser_declaration
        ../../gcc/gcc/cp/parser.c:12903
0x955cad cp_parser_declaration_seq_opt
        ../../gcc/gcc/cp/parser.c:12779
0x9563fa cp_parser_namespace_body
        ../../gcc/gcc/cp/parser.c:18753
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.



$ cat abc.C
typedef int a;
namespace {
class b {
  a c;
  template <typename> void a();
};
}

Reply via email to