This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/60218] New: [c++11] ICE using __bases for broken class hierarchy
- From: "reichelt at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 15 Feb 2014 22:31:33 +0000
- Subject: [Bug c++/60218] New: [c++11] ICE using __bases for broken class hierarchy
- Auto-submitted: auto-generated
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.]