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