http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58704
Bug ID: 58704 Summary: [c++11] ICE initializing array member of template class Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: reichelt at gcc dot gnu.org The following valid code snippet (compiled with "-std=c++11") triggers an ICE since GCC 4.7.0 (when non-static data member initializers were introduced): ================================= struct A {}; template<typename> struct B { A a[1] = {}; }; B<int> b; ================================= bug.cc: In constructor 'constexpr B<int>::B()': bug.cc:3:27: internal compiler error: tree check: expected tree that contains 'common' structure, have 'constructor' in perform_member_init, at cp/init.c:665 template<typename> struct B ^ 0xd159c7 tree_contains_struct_check_failed(tree_node const*, tree_node_structure_enum, char const*, int, char const*) ../../gcc/gcc/tree.c:9472 0x6a3e2d contains_struct_check ../../gcc/gcc/tree.h:2788 0x6a3e2d perform_member_init ../../gcc/gcc/cp/init.c:665 0x6a3e2d emit_mem_initializers(tree_node*) ../../gcc/gcc/cp/init.c:1096 0x6acfae synthesize_method(tree_node*) ../../gcc/gcc/cp/method.c:796 0x61e379 mark_used(tree_node*, int) ../../gcc/gcc/cp/decl2.c:4778 0x54d0b6 build_over_call ../../gcc/gcc/cp/call.c:7116 0x548eae build_new_method_call_1 ../../gcc/gcc/cp/call.c:7813 0x548eae build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, tree_node**, int) ../../gcc/gcc/cp/call.c:7883 0x549e22 build_special_member_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, int) ../../gcc/gcc/cp/call.c:7440 0x69eba7 expand_default_init ../../gcc/gcc/cp/init.c:1668 0x69eba7 expand_aggr_init_1 ../../gcc/gcc/cp/init.c:1769 0x6a1779 build_aggr_init(tree_node*, tree_node*, int, int) ../../gcc/gcc/cp/init.c:1520 0x55e005 build_aggr_init_full_exprs ../../gcc/gcc/cp/decl.c:5552 0x55e005 check_initializer ../../gcc/gcc/cp/decl.c:5687 0x570ccc cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int) ../../gcc/gcc/cp/decl.c:6356 0x65e7e7 cp_parser_init_declarator ../../gcc/gcc/cp/parser.c:16633 0x65ff2f cp_parser_simple_declaration ../../gcc/gcc/cp/parser.c:11047 0x643860 cp_parser_block_declaration ../../gcc/gcc/cp/parser.c:10928 0x66aaae cp_parser_declaration ../../gcc/gcc/cp/parser.c:10825 Please submit a full bug report, [etc.]