This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/60218] New: [c++11] ICE using __bases for broken class hierarchy


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60218

            Bug ID: 60218
           Summary: [c++11] ICE using __bases for broken class hierarchy
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Keywords: error-recovery, ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: reichelt at gcc dot gnu.org

The following invalid code snippet (compiled with "-std=c++11") triggers
an ICE since GCC 4.7.0 (when __bases was introduced):

==================================
template<typename...> struct A {};

template<typename T> struct B
{
  typedef A<__bases(T)...> C;
};

struct X {};
struct Y : X* {};

B<Y> b;
==================================

bug.cc:9:13: error: expected '{' before '*' token
 struct Y : X* {};
             ^
bug.cc:9:15: error: expected unqualified-id before '{' token
 struct Y : X* {};
               ^
bug.cc:9:15: error: invalid type in declaration before '{' token
bug.cc: In instantiation of 'struct B<Y>':
bug.cc:11:6:   required from here
bug.cc:5:28: internal compiler error: Segmentation fault
   typedef A<__bases(T)...> C;
                            ^
0xba53bf crash_signal
        ../../gcc/gcc/toplev.c:337
0x7214a0 tree_check
        ../../gcc/gcc/tree.h:2708
0x7214a0 dfs_calculate_bases_pre
        ../../gcc/gcc/cp/semantics.c:3696
0x71c30e dfs_walk_all(tree_node*, tree_node* (*)(tree_node*, void*), tree_node*
(*)(tree_node*, void*), void*)
        ../../gcc/gcc/cp/search.c:1583
0x721c08 calculate_bases_helper
        ../../gcc/gcc/cp/semantics.c:3718
0x73a427 calculate_bases(tree_node*)
        ../../gcc/gcc/cp/semantics.c:3748
0x618da3 tsubst_pack_expansion
        ../../gcc/gcc/cp/pt.c:9558
0x628eb2 tsubst_template_args
        ../../gcc/gcc/cp/pt.c:9792
0x628cf5 tsubst_template_args
        ../../gcc/gcc/cp/pt.c:9810
0x6296a3 tsubst_aggr_type
        ../../gcc/gcc/cp/pt.c:10025
0x61ba41 tsubst(tree_node*, tree_node*, int, tree_node*)
        ../../gcc/gcc/cp/pt.c:11436
0x62dbde tsubst_decl
        ../../gcc/gcc/cp/pt.c:10908
0x61beef tsubst(tree_node*, tree_node*, int, tree_node*)
        ../../gcc/gcc/cp/pt.c:11357
0x64a39a instantiate_class_template_1
        ../../gcc/gcc/cp/pt.c:9010
0x64a39a instantiate_class_template(tree_node*)
        ../../gcc/gcc/cp/pt.c:9274
0x6db9c3 complete_type(tree_node*)
        ../../gcc/gcc/cp/typeck.c:134
0x5c4f88 start_decl_1(tree_node*, bool)
        ../../gcc/gcc/cp/decl.c:4719
0x5edeb7 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,
tree_node*, tree_node*, tree_node**)
        ../../gcc/gcc/cp/decl.c:4682
0x6c7eee cp_parser_init_declarator
        ../../gcc/gcc/cp/parser.c:16680
0x6c9979 cp_parser_simple_declaration
        ../../gcc/gcc/cp/parser.c:11205
Please submit a full bug report, [etc.]


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]