https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88986
Bug ID: 88986
Summary: [9 Regression] ICE: tree check: expected tree that
contains 'decl minimal' structure, have 'error_mark'
in member_vec_binary_search, at cp/name-lookup.c:1136
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: asolokha at gmx dot com
Target Milestone: ---
g++-9.0.0-alpha20190120 snapshot (r268107) ICEs when compiling the following
testcase extracted from test/SemaTemplate/cxx1z-using-declaration.cpp from the
clang 7.0.1 testsuite:
template<typename ...T> struct C : T... {
using typename T::type ...;
void f() { type value; }
};
% g++-9.0.0-alpha20190120 -std=c++17 -c fw9hmgfi.cpp
fw9hmgfi.cpp:1:32: error: 'T ...' is not a class
1 | template<typename ...T> struct C : T... {
| ^
fw9hmgfi.cpp:1:32: error: 'T ...' is not a class
fw9hmgfi.cpp: In member function 'void C<T>::f()':
fw9hmgfi.cpp:3:12: internal compiler error: tree check: expected tree that
contains 'decl minimal' structure, have 'error_mark' in
member_vec_binary_search, at cp/name-lookup.c:1136
3 | void f() { type value; }
| ^
0x7c442d tree_contains_struct_check_failed(tree_node const*,
tree_node_structure_enum, char const*, int, char const*)
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/tree.c:9985
0x615e3d contains_struct_check(tree_node*, tree_node_structure_enum, char
const*, int, char const*)
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/tree.h:3290
0x615e3d member_vec_binary_search
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/name-lookup.c:1136
0x615e3d get_class_binding_direct(tree_node*, tree_node*, int)
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/name-lookup.c:1233
0xa1e9f6 lookup_field_r
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/search.c:980
0xa1dc7d dfs_walk_all(tree_node*, tree_node* (*)(tree_node*, void*), tree_node*
(*)(tree_node*, void*), void*)
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/search.c:1420
0xa1de56 lookup_member(tree_node*, tree_node*, int, bool, int,
access_failure_info*)
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/search.c:1137
0x96f9e5 get_class_binding
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/name-lookup.c:4449
0x97470f outer_binding(tree_node*, cxx_binding*, bool)
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/name-lookup.c:6327
0x97495f innermost_non_namespace_value(tree_node*)
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/name-lookup.c:6364
0x9ca857 check_template_shadow(tree_node*)
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/pt.c:4135
0x97bc77 do_pushdecl
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/name-lookup.c:3072
0x97bc77 pushdecl(tree_node*, bool)
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/name-lookup.c:3162
0x90234e store_parm_decls
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/decl.c:15640
0x90234e start_preparsed_function(tree_node*, tree_node*, int)
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/decl.c:15514
0x9bc36f cp_parser_late_parsing_for_member
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/parser.c:28497
0x99aaf2 cp_parser_class_specifier_1
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/parser.c:23509
0x99bb18 cp_parser_class_specifier
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/parser.c:23535
0x99bb18 cp_parser_type_specifier
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/parser.c:17356
0x99cad0 cp_parser_decl_specifier_seq
/var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/cp/parser.c:14049