http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58565
Bug ID: 58565
Summary: [c++0x] ICE with label in statement expression
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 invalid code snippet triggers an ICE since GCC 4.6.0 when
compiled with "-std=c++0x":
=======================
void foo()
{
int i = ({ L: ; });
}
=======================
bug.cc: In function 'void foo()':
bug.cc:3:20: sorry, unimplemented: unexpected AST of kind label_expr
int i = ({ L: ; });
^
bug.cc:3:20: internal compiler error: in potential_constant_expression_1, at
cp/semantics.c:8958
0x6ca0f4 potential_constant_expression_1
../../gcc/gcc/cp/semantics.c:8958
0x647673 cp_parser_constant_expression
../../gcc/gcc/cp/parser.c:8208
0x65332e cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:16520
0x65396f cp_parser_simple_declaration
../../gcc/gcc/cp/parser.c:10986
0x6557d0 cp_parser_block_declaration
../../gcc/gcc/cp/parser.c:10867
0x6568c0 cp_parser_declaration_statement
../../gcc/gcc/cp/parser.c:10514
0x63f167 cp_parser_statement
../../gcc/gcc/cp/parser.c:9274
0x64046e cp_parser_statement_seq_opt
../../gcc/gcc/cp/parser.c:9552
0x6405b6 cp_parser_compound_statement
../../gcc/gcc/cp/parser.c:9506
0x65196b cp_parser_function_body
../../gcc/gcc/cp/parser.c:18318
0x65196b cp_parser_ctor_initializer_opt_and_function_body
../../gcc/gcc/cp/parser.c:18354
0x6529af cp_parser_function_definition_after_declarator
../../gcc/gcc/cp/parser.c:22338
0x6536b7 cp_parser_function_definition_from_specifiers_and_declarator
../../gcc/gcc/cp/parser.c:22259
0x6536b7 cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:16347
0x65396f cp_parser_simple_declaration
../../gcc/gcc/cp/parser.c:10986
0x6557d0 cp_parser_block_declaration
../../gcc/gcc/cp/parser.c:10867
0x65e7fe cp_parser_declaration
../../gcc/gcc/cp/parser.c:10764
0x65d55d cp_parser_declaration_seq_opt
../../gcc/gcc/cp/parser.c:10650
0x65ee46 cp_parser_translation_unit
../../gcc/gcc/cp/parser.c:3939
0x65ee46 c_parse_file()
../../gcc/gcc/cp/parser.c:28898
Please submit a full bug report, [etc.]
Without "-std=c++0x" the code is rejected correctly:
bug.cc: In function 'void foo()':
bug.cc:3:20: error: void value not ignored as it ought to be
int i = ({ L: ; });
^