https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91933

            Bug ID: 91933
           Summary: [10 Regression] ICE: tree check: expected class
                    'type', have 'exceptional' (error_mark) in
                    build_simple_base_path, at cp/class.c:541
           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-alpha20190929 snapshot (r276272) ICEs when compiling the following
testcase extracted from test/CXX/drs/dr20xx.cpp from the clang 9.0.0 test
suite:

struct NoMut1 { int a, b; };
struct NoMut3 : NoMut1 {
  constexpr NoMut3(int a, int b) : NoMut1{a, b} {}
};
void mutable_subobjects() {
  constexpr NoMut3 nm3 = {1, 2};
  struct A {
    void f() {
      static_assert(nm3.a == 1, "");
    }
  };
}

% g++-10.0.0-alpha20190929 -c jigwb82y.cpp
jigwb82y.cpp: In member function 'void mutable_subobjects()::A::f()':
jigwb82y.cpp:9:21: error: use of local variable with automatic storage from
containing function
    9 |       static_assert(nm3.a == 1, "");
      |                     ^~~
jigwb82y.cpp:6:20: note: 'constexpr const NoMut3 nm3' declared here
    6 |   constexpr NoMut3 nm3 = {1, 2};
      |                    ^~~
jigwb82y.cpp:9:25: internal compiler error: tree check: expected class 'type',
have 'exceptional' (error_mark) in build_simple_base_path, at cp/class.c:541
    9 |       static_assert(nm3.a == 1, "");
      |                         ^
0x7d4e37 tree_class_check_failed(tree_node const*, tree_code_class, char
const*, int, char const*)
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/tree.c:9973
0x5bb172 build_simple_base_path
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/tree.h:3390
0x8bfd62 build_simple_base_path
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/class.c:555
0x8d809d build_base_path(tree_code, tree_node*, tree_node*, int, int)
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/class.c:424
0xa7b714 build_class_member_access_expr(cp_expr, tree_node*, tree_node*, bool,
int)
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/typeck.c:2557
0xa825f3 finish_class_member_access_expr(cp_expr, tree_node*, bool, int)
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/typeck.c:3162
0x9ca816 cp_parser_postfix_dot_deref_expression
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:7800
0x9c0eca cp_parser_postfix_expression
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:7445
0x9a4db0 cp_parser_binary_expression
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:9479
0x9a5cd2 cp_parser_assignment_expression
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:9777
0x9a573e cp_parser_constant_expression
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:10071
0x9a59a7 cp_parser_static_assert
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:14505
0x9b4108 cp_parser_declaration_statement
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:13012
0x9b4ba0 cp_parser_statement
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:11337
0x9b5d25 cp_parser_statement_seq_opt
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:11699
0x9b5df5 cp_parser_compound_statement
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:11653
0x9cae29 cp_parser_function_body
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:22702
0x9cae29 cp_parser_ctor_initializer_opt_and_function_body
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:22753
0x9cdd55 cp_parser_function_definition_after_declarator
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:28074
0x9cef18 cp_parser_late_parsing_for_member
       
/var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190929/work/gcc-10-20190929/gcc/cp/parser.c:28959

Reply via email to