http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57092
Bug #: 57092
Summary: Using decltype of function pointer type to define a
data member causes compiler crash
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: [email protected]
ReportedBy: [email protected]
This code:
template <void (*F)(int)>
class B {
decltype(F) v;
};
void foo(int) {}
int main() {
B<foo> o;
}
causes this crash:
$ g++ -std=c++11 bug.cpp
bug.cpp: In instantiation of 'class B<foo>':
bug.cpp:9:12: required from here
bug.cpp:3:17: internal compiler error: in finish_decltype_type, at
cp/semantics.c:5365
decltype(F) v;
^
0x5a6230 finish_decltype_type(tree_node*, bool, int)
../../src/gcc/cp/semantics.c:5365
0x521c5c tsubst(tree_node*, tree_node*, int, tree_node*)
../../src/gcc/cp/pt.c:11772
0x51fe2e tsubst_decl
../../src/gcc/cp/pt.c:10450
0x5218a7 tsubst(tree_node*, tree_node*, int, tree_node*)
../../src/gcc/cp/pt.c:11081
0x52f177 instantiate_class_template_1
../../src/gcc/cp/pt.c:8818
0x52f177 instantiate_class_template(tree_node*)
../../src/gcc/cp/pt.c:9054
0x57ce2d complete_type(tree_node*)
../../src/gcc/cp/typeck.c:131
0x4ff471 start_decl_1(tree_node*, bool)
../../src/gcc/cp/decl.c:4662
0x50d294 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,
tree_node*, tree_node*, tree_node**)
../../src/gcc/cp/decl.c:4625
0x572b98 cp_parser_init_declarator
../../src/gcc/cp/parser.c:15914
0x5734ce cp_parser_simple_declaration
../../src/gcc/cp/parser.c:10567
0x56edd0 cp_parser_block_declaration
../../src/gcc/cp/parser.c:10448
0x56fdf0 cp_parser_declaration_statement
../../src/gcc/cp/parser.c:10092
0x570497 cp_parser_statement
../../src/gcc/cp/parser.c:8867
0x57167e cp_parser_statement_seq_opt
../../src/gcc/cp/parser.c:9139
0x57179e cp_parser_compound_statement
../../src/gcc/cp/parser.c:9093
0x5718e8 cp_parser_function_body
../../src/gcc/cp/parser.c:17680
0x5718e8 cp_parser_ctor_initializer_opt_and_function_body
../../src/gcc/cp/parser.c:17716
0x57252f cp_parser_function_definition_after_declarator
../../src/gcc/cp/parser.c:21691
0x573143 cp_parser_function_definition_from_specifiers_and_declarator
../../src/gcc/cp/parser.c:21612
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.