[Bug c++/85146] New: ICE with __direct_bases for declared but not defined struct
reichelt at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Mar 31 19:21:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85146
Bug ID: 85146
Summary: ICE with __direct_bases for declared but not defined
struct
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: reichelt at gcc dot gnu.org
CC: paolo.carlini at oracle dot com
Target Milestone: ---
The following valid code snippet triggers an ICE since GCC 4.7.0
(when __direct_bases was introduced):
=====================================
template<typename...> struct A {};
template<typename T> struct B
{
typedef A<__direct_bases(T)...> C;
};
struct X;
B<X> b;
=====================================
bug.cc: In instantiation of 'struct B<X>':
bug.cc:10:6: required from here
bug.cc:5:35: internal compiler error: Segmentation fault
typedef A<__direct_bases(T)...> C;
^
0xd0137f crash_signal
../../gcc-5.1.0/gcc/toplev.c:383
0x7d6e1d tree_check(tree_node*, char const*, int, char const*, tree_code)
../../gcc-5.1.0/gcc/tree.h:2845
0x7d6e1d calculate_direct_bases(tree_node*)
../../gcc-5.1.0/gcc/cp/semantics.c:3745
0x6a7511 tsubst_pack_expansion
../../gcc-5.1.0/gcc/cp/pt.c:9973
0x6a8dba tsubst_template_args
../../gcc-5.1.0/gcc/cp/pt.c:10221
0x6a8b93 tsubst_template_args
../../gcc-5.1.0/gcc/cp/pt.c:10239
0x6bf2a0 tsubst_aggr_type
../../gcc-5.1.0/gcc/cp/pt.c:10454
0x6ab22a tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc-5.1.0/gcc/cp/pt.c:11909
0x6c0886 tsubst_decl
../../gcc-5.1.0/gcc/cp/pt.c:11339
0x6ab786 tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc-5.1.0/gcc/cp/pt.c:11830
0x6e0381 instantiate_class_template_1
../../gcc-5.1.0/gcc/cp/pt.c:9424
0x6e0381 instantiate_class_template(tree_node*)
../../gcc-5.1.0/gcc/cp/pt.c:9688
0x77ac6b complete_type(tree_node*)
../../gcc-5.1.0/gcc/cp/typeck.c:146
0x657587 start_decl_1(tree_node*, bool)
../../gcc-5.1.0/gcc/cp/decl.c:4900
0x678887 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,
tree_node*, tree_node*, tree_node**)
../../gcc-5.1.0/gcc/cp/decl.c:4863
0x76cfed cp_parser_init_declarator
../../gcc-5.1.0/gcc/cp/parser.c:17170
0x76f915 cp_parser_simple_declaration
../../gcc-5.1.0/gcc/cp/parser.c:11607
0x7693a3 cp_parser_block_declaration
../../gcc-5.1.0/gcc/cp/parser.c:11481
0x773249 cp_parser_declaration
../../gcc-5.1.0/gcc/cp/parser.c:11378
0x7718da cp_parser_declaration_seq_opt
../../gcc-5.1.0/gcc/cp/parser.c:11264
Please submit a full bug report, [etc.]
This is related to PR60218 where the same issue was solved
for __bases instead of __direct_bases. Paolo, you
fixed PR60218 for GCC 6. Would you mind having a look?
More information about the Gcc-bugs
mailing list