Bug 84602 - [8 Regression] internal compiler error: in search_anon_aggr, at cp/name-lookup.c:1218
Summary: [8 Regression] internal compiler error: in search_anon_aggr, at cp/name-looku...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 8.0.1
: P3 normal
Target Milestone: 8.0
Assignee: Nathan Sidwell
URL:
Keywords: ice-on-invalid-code
Depends on:
Blocks:
 
Reported: 2018-02-27 20:18 UTC by Vegard Nossum
Modified: 2018-02-28 12:33 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2018-02-27 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vegard Nossum 2018-02-27 20:18:12 UTC
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.
Comment 1 David Malcolm 2018-02-27 20:30:57 UTC
Confirmed.  Started with r252005.
Comment 2 Nathan Sidwell 2018-02-28 12:32:42 UTC
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
Comment 3 Nathan Sidwell 2018-02-28 12:33:08 UTC
Fixed r258060.