http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60252
Bug ID: 60252 Summary: [4.7/4.8/4.9 Regression] [c++11] ICE with invalid variable-length array in lambda parameter Product: gcc Version: 4.9.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: reichelt at gcc dot gnu.org The following invalid code snippet (compiled with "-std=c++11") triggers an ICE since GCC 4.6.0: ==================================== struct A { int i; void foo() { [&](){ [&](int[i]){}; }; } }; ==================================== bug.cc: In lambda function: bug.cc:7:20: internal compiler error: Segmentation fault [&](){ [&](int[i]){}; }; ^ 0xba529f crash_signal ../../gcc/gcc/toplev.c:337 0x7a3135 tree_check ../../gcc/gcc/tree.h:2708 0x7a3135 build_capture_proxy(tree_node*) ../../gcc/gcc/cp/lambda.c:360 0x7a3c07 add_capture(tree_node*, tree_node*, tree_node*, bool, bool) ../../gcc/gcc/cp/lambda.c:553 0x7a43be add_default_capture(tree_node*, tree_node*, tree_node*) ../../gcc/gcc/cp/lambda.c:610 0x7a48b9 lambda_expr_this_capture(tree_node*) ../../gcc/gcc/cp/lambda.c:705 0x7a4cc9 maybe_resolve_dummy(tree_node*) ../../gcc/gcc/cp/lambda.c:752 0x72a87a finish_non_static_data_member(tree_node*, tree_node*, tree_node*) ../../gcc/gcc/cp/semantics.c:1668 0x72fa77 finish_id_expression(tree_node*, tree_node*, tree_node*, cp_id_kind*, bool, bool, bool*, bool, bool, bool, bool, char const**, unsigned int) ../../gcc/gcc/cp/semantics.c:3515 0x6b0b26 cp_parser_primary_expression ../../gcc/gcc/cp/parser.c:4614 0x6b20dd cp_parser_postfix_expression ../../gcc/gcc/cp/parser.c:5971 0x6b50b6 cp_parser_unary_expression ../../gcc/gcc/cp/parser.c:7170 0x6b5ddf cp_parser_binary_expression ../../gcc/gcc/cp/parser.c:7874 0x6b62d1 cp_parser_assignment_expression ../../gcc/gcc/cp/parser.c:8112 0x6b6795 cp_parser_assignment_expression ../../gcc/gcc/cp/parser.c:8162 0x6b6795 cp_parser_constant_expression ../../gcc/gcc/cp/parser.c:8372 0x6bd1bc cp_parser_direct_declarator ../../gcc/gcc/cp/parser.c:17217 0x6bd1bc cp_parser_declarator ../../gcc/gcc/cp/parser.c:16943 0x6c51c1 cp_parser_parameter_declaration ../../gcc/gcc/cp/parser.c:18491 0x6c64e1 cp_parser_parameter_declaration_list ../../gcc/gcc/cp/parser.c:18258 Please submit a full bug report, [etc.] With a slightly different testcase I get a different stack-trace: ==================================== struct A { int i; void foo() { [&](){ [this](int[i]){}; }; } }; ==================================== bug.cc: In lambda function: bug.cc:7:23: internal compiler error: in lambda_expr_this_capture, at cp/lambda.c:717 [&](){ [this](int[i]){}; }; ^ 0x7a4ad5 lambda_expr_this_capture(tree_node*) ../../gcc/gcc/cp/lambda.c:716 0x7a4cc9 maybe_resolve_dummy(tree_node*) ../../gcc/gcc/cp/lambda.c:752 0x72a87a finish_non_static_data_member(tree_node*, tree_node*, tree_node*) ../../gcc/gcc/cp/semantics.c:1668 0x72fa77 finish_id_expression(tree_node*, tree_node*, tree_node*, cp_id_kind*, bool, bool, bool*, bool, bool, bool, bool, char const**, unsigned int) ../../gcc/gcc/cp/semantics.c:3515 0x6b0b26 cp_parser_primary_expression ../../gcc/gcc/cp/parser.c:4614 0x6b20dd cp_parser_postfix_expression ../../gcc/gcc/cp/parser.c:5971 0x6b50b6 cp_parser_unary_expression ../../gcc/gcc/cp/parser.c:7170 0x6b5ddf cp_parser_binary_expression ../../gcc/gcc/cp/parser.c:7874 0x6b62d1 cp_parser_assignment_expression ../../gcc/gcc/cp/parser.c:8112 0x6b6795 cp_parser_assignment_expression ../../gcc/gcc/cp/parser.c:8162 0x6b6795 cp_parser_constant_expression ../../gcc/gcc/cp/parser.c:8372 0x6bd1bc cp_parser_direct_declarator ../../gcc/gcc/cp/parser.c:17217 0x6bd1bc cp_parser_declarator ../../gcc/gcc/cp/parser.c:16943 0x6c51c1 cp_parser_parameter_declaration ../../gcc/gcc/cp/parser.c:18491 0x6c64e1 cp_parser_parameter_declaration_list ../../gcc/gcc/cp/parser.c:18258 0x6c6b32 cp_parser_parameter_declaration_clause ../../gcc/gcc/cp/parser.c:18179 0x6b100f cp_parser_lambda_declarator_opt ../../gcc/gcc/cp/parser.c:9050 0x6b100f cp_parser_lambda_expression ../../gcc/gcc/cp/parser.c:8754 0x6b100f cp_parser_primary_expression ../../gcc/gcc/cp/parser.c:4305 0x6b20dd cp_parser_postfix_expression ../../gcc/gcc/cp/parser.c:5971 Please submit a full bug report, [etc.]