https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84691
Bug ID: 84691
Summary: internal compiler error: in poplevel_class, at
cp/name-lookup.c:4430
Product: gcc
Version: 8.0.1
Status: UNCONFIRMED
Keywords: ice-on-invalid-code
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vegard.nossum at gmail dot com
CC: webrown.cpp at gmail dot com
Target Milestone: ---
Input:
template<typename>
struct a {
unsigned b = [] {
union {
friend void c() {}
};
};
};
Output:
$ xgcc -x c++ -S -
<stdin>: In lambda function:
<stdin>:5:21: error: can't define friend function 'c' in a local class
definition
<stdin>: At global scope:
<stdin>:5:24: internal compiler error: in poplevel_class, at
cp/name-lookup.c:4430
0xe1ebc7 poplevel_class()
/home/vegard/git/gcc/gcc/cp/name-lookup.c:4430
0x9ccaa8 popclass()
/home/vegard/git/gcc/gcc/cp/class.c:7419
0x9ccaa8 pop_nested_class()
/home/vegard/git/gcc/gcc/cp/class.c:7573
0xbd1380 finish_function(bool)
/home/vegard/git/gcc/gcc/cp/decl.c:15864
0xf9fa39 cp_parser_function_definition_after_declarator
/home/vegard/git/gcc/gcc/cp/parser.c:26812
0xfa1cbc cp_parser_late_parsing_for_member
/home/vegard/git/gcc/gcc/cp/parser.c:27690
0xf1aed5 cp_parser_class_specifier_1
/home/vegard/git/gcc/gcc/cp/parser.c:22733
0xf2642b cp_parser_class_specifier
/home/vegard/git/gcc/gcc/cp/parser.c:22759
0xf2642b cp_parser_type_specifier
/home/vegard/git/gcc/gcc/cp/parser.c:16765
0xf8be5a cp_parser_decl_specifier_seq
/home/vegard/git/gcc/gcc/cp/parser.c:13627
0xfa7a20 cp_parser_simple_declaration
/home/vegard/git/gcc/gcc/cp/parser.c:12936
0xfaf948 cp_parser_block_declaration
/home/vegard/git/gcc/gcc/cp/parser.c:12881
0xfb1e14 cp_parser_declaration_statement
/home/vegard/git/gcc/gcc/cp/parser.c:12474
0xefdd8b cp_parser_statement
/home/vegard/git/gcc/gcc/cp/parser.c:10923
0xf0184b cp_parser_statement_seq_opt
/home/vegard/git/gcc/gcc/cp/parser.c:11272
0xfd36d1 cp_parser_lambda_body
/home/vegard/git/gcc/gcc/cp/parser.c:10683
0xfd36d1 cp_parser_lambda_expression
/home/vegard/git/gcc/gcc/cp/parser.c:10184
0xf38814 cp_parser_primary_expression
/home/vegard/git/gcc/gcc/cp/parser.c:5259
0xf7a2eb cp_parser_postfix_expression
/home/vegard/git/gcc/gcc/cp/parser.c:7028
0xf2e057 cp_parser_unary_expression
/home/vegard/git/gcc/gcc/cp/parser.c:8320
$ xgcc --version
xgcc (GCC) 8.0.1 20180301 (experimental)
Built from git c435a9e730c6e8f10da09d58b4fc9aaeb401b0d5 (r258097).
Seems to have been introduced between 4.6.4 and 4.7.1.
Could be related to bug #84651?
Test case was minimised by C-Reduce.