https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77752
Bug ID: 77752 Summary: ICE on C++ code on x86_64-linux-gnu (internal compiler error: Segmentation fault, build_list_conv, implicit_conversion) Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: chengniansun at gmail dot com Target Milestone: --- $ gcc-trunk -v Using built-in specs. COLLECT_GCC=gcc-trunk COLLECT_LTO_WRAPPER=/usr/local/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/7.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc-source-trunk/configure --enable-languages=c,c++,lto --prefix=/usr/local/gcc-trunk --disable-bootstrap Thread model: posix gcc version 7.0.0 20160926 (experimental) [trunk revision 240511] (GCC) $ $ gcc-trunk small.C small.C: In function ‘void f(std::initializer_list)’: small.C:4:30: error: ‘l’ has incomplete type void f(std::initializer_list l) { f({2}); } ^ small.C:2:7: note: forward declaration of ‘class std::initializer_list’ class initializer_list; ^~~~~~~~~~~~~~~~ small.C:4:40: internal compiler error: Segmentation fault void f(std::initializer_list l) { f({2}); } ^ 0xdcb7df crash_signal ../../gcc-source-trunk/gcc/toplev.c:337 0x650c8d tree_check ../../gcc-source-trunk/gcc/tree.h:3030 0x650c8d build_list_conv ../../gcc-source-trunk/gcc/cp/call.c:788 0x650c8d implicit_conversion ../../gcc-source-trunk/gcc/cp/call.c:1816 0x65c7e8 add_function_candidate ../../gcc-source-trunk/gcc/cp/call.c:2142 0x64ee06 add_candidates ../../gcc-source-trunk/gcc/cp/call.c:5410 0x6628cc perform_overload_resolution ../../gcc-source-trunk/gcc/cp/call.c:4067 0x662abe build_new_function_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, int) ../../gcc-source-trunk/gcc/cp/call.c:4144 0x806718 finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) ../../gcc-source-trunk/gcc/cp/semantics.c:2440 0x77edcb cp_parser_postfix_expression ../../gcc-source-trunk/gcc/cp/parser.c:6937 0x787b82 cp_parser_unary_expression ../../gcc-source-trunk/gcc/cp/parser.c:8019 0x7886a7 cp_parser_cast_expression ../../gcc-source-trunk/gcc/cp/parser.c:8696 0x788c73 cp_parser_binary_expression ../../gcc-source-trunk/gcc/cp/parser.c:8798 0x789563 cp_parser_assignment_expression ../../gcc-source-trunk/gcc/cp/parser.c:9086 0x78c069 cp_parser_expression ../../gcc-source-trunk/gcc/cp/parser.c:9253 0x78c7f8 cp_parser_expression_statement ../../gcc-source-trunk/gcc/cp/parser.c:10771 0x77a87a cp_parser_statement ../../gcc-source-trunk/gcc/cp/parser.c:10587 0x77b7d5 cp_parser_statement_seq_opt ../../gcc-source-trunk/gcc/cp/parser.c:10913 0x77b8af cp_parser_compound_statement ../../gcc-source-trunk/gcc/cp/parser.c:10867 0x799753 cp_parser_function_body ../../gcc-source-trunk/gcc/cp/parser.c:20887 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. $ $ cat small.C namespace std { class initializer_list; } void f(std::initializer_list l) { f({2}); }