Input: struct { struct { class a; }; : a } x; Output: $ xgcc -x c++ -std=c++14 -O3 -c - 2>&1 <stdin>:4:8: internal compiler error: in search_anon_aggr, at cp/name-lookup.c:1218 0xe0afdb search_anon_aggr(tree_node*, tree_node*) /home/vegard/git/gcc/gcc/cp/name-lookup.c:1218 0xe0a503 fields_linear_search /home/vegard/git/gcc/gcc/cp/name-lookup.c:1177 0xe0bba0 get_class_binding_direct(tree_node*, tree_node*, int) /home/vegard/git/gcc/gcc/cp/name-lookup.c:1280 0x1222866 lookup_field_r /home/vegard/git/gcc/gcc/cp/search.c:977 0x1228797 dfs_walk_all(tree_node*, tree_node* (*)(tree_node*, void*), tree_node* (*)(tree_node*, void*), void*) /home/vegard/git/gcc/gcc/cp/search.c:1410 0x1228797 lookup_member(tree_node*, tree_node*, int, bool, int, access_failure_info*) /home/vegard/git/gcc/gcc/cp/search.c:1134 0x9d0a20 maybe_note_name_used_in_class(tree_node*, tree_node*) /home/vegard/git/gcc/gcc/cp/class.c:8232 0xf45322 cp_parser_class_name /home/vegard/git/gcc/gcc/cp/parser.c:22358 0xf45bf9 cp_parser_type_name /home/vegard/git/gcc/gcc/cp/parser.c:17284 0xf2af69 cp_parser_type_name /home/vegard/git/gcc/gcc/cp/parser.c:17266 0xf2af69 cp_parser_simple_type_specifier /home/vegard/git/gcc/gcc/cp/parser.c:17138 0xf734e6 cp_parser_postfix_expression /home/vegard/git/gcc/gcc/cp/parser.c:6947 0xf26fa7 cp_parser_unary_expression /home/vegard/git/gcc/gcc/cp/parser.c:8281 0xebcdba cp_parser_cast_expression /home/vegard/git/gcc/gcc/cp/parser.c:9049 0xebf3e6 cp_parser_binary_expression /home/vegard/git/gcc/gcc/cp/parser.c:9150 0xec8900 cp_parser_constant_expression /home/vegard/git/gcc/gcc/cp/parser.c:9713 0xfdb3ef cp_parser_member_declaration /home/vegard/git/gcc/gcc/cp/parser.c:23623 0xf10d9b cp_parser_member_specification_opt /home/vegard/git/gcc/gcc/cp/parser.c:23308 0xf10d9b cp_parser_class_specifier_1 /home/vegard/git/gcc/gcc/cp/parser.c:22450 0xf1fcbb cp_parser_class_specifier /home/vegard/git/gcc/gcc/cp/parser.c:22702 Version: xgcc (GCC) 8.0.1 20180204 (experimental) built from git fdae6180ad24fa6303fa046114f3e4b66b8db34d Bug doesn't seem present in 7.3. Test case reduced by C-Reduce.
Confirmed. Started with r252005.
Author: nathan Date: Wed Feb 28 12:32:10 2018 New Revision: 258060 URL: https://gcc.gnu.org/viewcvs?rev=258060&root=gcc&view=rev Log: [PR c++/84602] ICE with anon-struct https://gcc.gnu.org/ml/gcc-patches/2018-02/msg01577.html PR c++/84602 * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg. * name-lookup.c (fields_linear_search): Look in an anon-aggr regardless of want_type. (search_anon_aggr): Just use get_class_binding_direct. PR c++/84602 * g++.dg/lookup/pr84602.C: New. Added: trunk/gcc/testsuite/g++.dg/lookup/pr84602.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/name-lookup.c trunk/gcc/cp/name-lookup.h trunk/gcc/testsuite/ChangeLog
Fixed r258060.