[Bug c++/60252] New: [4.7/4.8/4.9 Regression] [c++11] ICE with invalid variable-length array in lambda parameter
reichelt at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Feb 17 21:43:00 GMT 2014
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.]
More information about the Gcc-bugs
mailing list