https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91845
Bug ID: 91845 Summary: [10 Regression] ICE: tree check: expected class 'type', have 'exceptional' (error_mark) in build_m_component_ref, at cp/typeck2.c:2086 Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: error-recovery, ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- g++-10.0.0-alpha20190915 snapshot (r275736) ICEs when compiling the following testcase reduced from test/CXX/drs/dr20xx.cpp from the clang 9.0.0 testsuite: void non_const_mem_ptr() { struct A { }; constexpr A a = {1, 2}; struct B { int A::*p; constexpr int g() const { return a.*p; }; }; } % g++-10.0.0-alpha20190915 -c ecqppima.cpp ecqppima.cpp: In function 'void non_const_mem_ptr()': ecqppima.cpp:5:24: error: too many initializers for 'const non_const_mem_ptr()::A' 5 | constexpr A a = {1, 2}; | ^ ecqppima.cpp: In member function 'constexpr int non_const_mem_ptr()::B::g() const': ecqppima.cpp:9:14: error: use of local variable with automatic storage from containing function 9 | return a.*p; | ^ ecqppima.cpp:5:15: note: 'constexpr const non_const_mem_ptr()::A a' declared here 5 | constexpr A a = {1, 2}; | ^ ecqppima.cpp:9:17: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in build_m_component_ref, at cp/typeck2.c:2086 9 | return a.*p; | ^ 0x7d6093 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/tree.c:9972 0x6846b7 tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/tree.h:3390 0x6846b7 build_m_component_ref(tree_node*, tree_node*, int) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/typeck2.c:2086 0xa627b2 build_x_binary_op(op_location_t const&, tree_code, tree_node*, tree_code, tree_node*, tree_code, tree_node**, int) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/typeck.c:4183 0x99e924 cp_parser_binary_expression /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:9645 0x99f689 cp_parser_assignment_expression /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:9780 0x99f90c cp_parser_expression /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:9948 0x9afd2a cp_parser_jump_statement /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:12951 0x9afd2a cp_parser_statement /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:11233 0x9b03b5 cp_parser_statement_seq_opt /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:11699 0x9b0485 cp_parser_compound_statement /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:11653 0x9c906c cp_parser_function_body /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:22702 0x9c906c cp_parser_ctor_initializer_opt_and_function_body /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:22753 0x9c995d cp_parser_function_definition_after_declarator /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:28074 0x9cab51 cp_parser_late_parsing_for_member /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:28959 0x9aa355 cp_parser_class_specifier_1 /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:23784 0x9ab394 cp_parser_class_specifier /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:23810 0x9ab394 cp_parser_type_specifier /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:17475 0x9ac199 cp_parser_decl_specifier_seq /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:14174 0x9acb0a cp_parser_simple_declaration /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190915/work/gcc-10-20190915/gcc/cp/parser.c:13460