http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59318
Bug ID: 59318 Summary: ICE on invalid C++ code Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com [hjl@gnu-6 pr59311]$ cat x.ii #pragma GCC visibility push(default) namespace std { template<class _E> class initializer_list { public: typedef _E value_type; }; } #pragma GCC visibility pop struct A { int i; A(std::initializer_list<int>) { } }; int x = 4; int main(int argc, char **argv) { { int i[x] = { 42, 42, 42, 42 }; } { A a[x] = { argc }; if (a[1].i != 42) __builtin_abort (); } } [hjl@gnu-6 pr59311]$ make x.s /export/build/gnu/gcc-x32/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/ -std=c++1y -m32 -S x.ii x.ii: In function ‘int main(int, char**)’: x.ii:28:21: error: conversion from ‘int’ to non-scalar type ‘A’ requested A a[x] = { argc }; ^ x.ii:28:21: internal compiler error: Segmentation fault 0xd1bbee crash_signal /export/gnu/import/git/gcc/gcc/toplev.c:336 0x57d296 contains_struct_check(tree_node*, tree_node_structure_enum, char const*, int, char const*) /export/gnu/import/git/gcc/gcc/tree.h:2821 0x593382 convert_like_real /export/gnu/import/git/gcc/gcc/cp/call.c:6059 0x596b0b build_over_call /export/gnu/import/git/gcc/gcc/cp/call.c:6947 0x592ae7 convert_like_real /export/gnu/import/git/gcc/gcc/cp/call.c:5964 0x59363e convert_like_real /export/gnu/import/git/gcc/gcc/cp/call.c:6089 0x59f55f perform_implicit_conversion_flags(tree_node*, tree_node*, int, int) /export/gnu/import/git/gcc/gcc/cp/call.c:9023 0x59f5f1 perform_implicit_conversion(tree_node*, tree_node*, int) /export/gnu/import/git/gcc/gcc/cp/call.c:9035 0x72d132 ocp_convert(tree_node*, tree_node*, int, int, int) /export/gnu/import/git/gcc/gcc/cp/cvt.c:861 0x73c92f expand_default_init /export/gnu/import/git/gcc/gcc/cp/init.c:1605 0x73d40c expand_aggr_init_1 /export/gnu/import/git/gcc/gcc/cp/init.c:1774 0x73c2cc build_aggr_init(tree_node*, tree_node*, int, int) /export/gnu/import/git/gcc/gcc/cp/init.c:1525 0x7439a9 build_vec_init(tree_node*, tree_node*, tree_node*, bool, int, int) /export/gnu/import/git/gcc/gcc/cp/init.c:3737 0x73c10c build_aggr_init(tree_node*, tree_node*, int, int) /export/gnu/import/git/gcc/gcc/cp/init.c:1506 0x5bc2b5 build_aggr_init_full_exprs /export/gnu/import/git/gcc/gcc/cp/decl.c:5583 0x5bce86 check_initializer /export/gnu/import/git/gcc/gcc/cp/decl.c:5719 0x5c01a2 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int) /export/gnu/import/git/gcc/gcc/cp/decl.c:6388 0x6db07f cp_parser_init_declarator /export/gnu/import/git/gcc/gcc/cp/parser.c:16743 0x6d2198 cp_parser_simple_declaration /export/gnu/import/git/gcc/gcc/cp/parser.c:11134 0x6d1f88 cp_parser_block_declaration /export/gnu/import/git/gcc/gcc/cp/parser.c:11015 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. make: *** [x.s] Error 1 [hjl@gnu-6 pr59311]$