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

            Bug ID: 92414
           Summary: internal compiler error: tree check: expected
                    constructor, have error_mark in
                    cxx_eval_store_expression, at cp/constexpr.c:4009
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mpolacek at gcc dot gnu.org
  Target Milestone: ---

struct A { virtual void a(); };

struct B : A {
  constexpr B(int);
  constexpr ~B() { }
};

struct D : B {
  constexpr D() : B(42) { }
};

constexpr D d;

$ ./cc1plus -quiet ice.C -std=c++2a
ice.C:12:13:   in ‘constexpr’ expansion of ‘D()’
ice.C:9:23: error: ‘constexpr B::B(int)’ used before its definition
    9 |   constexpr D() : B(42) { }
      |                       ^
ice.C:12:13:   in ‘constexpr’ expansion of ‘((D*)(& d))->D::~D()’
ice.C:12:13: internal compiler error: tree check: expected constructor, have
error_mark in cxx_eval_store_expression, at cp/constexpr.c:4110
   12 | constexpr D d;
      |             ^
0x18bb352 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
        /home/mpolacek/src/gcc/gcc/tree.c:9676
0x87f84f tree_check(tree_node*, char const*, int, char const*, tree_code)
        /home/mpolacek/src/gcc/gcc/tree.h:3267
0x8fa7c5 cxx_eval_store_expression
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:4110
0x8fdf7d cxx_eval_constant_expression
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:5013
0x8ff174 cxx_eval_constant_expression
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:5380
0x8fe226 cxx_eval_constant_expression
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:5064
0x8fe226 cxx_eval_constant_expression
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:5064
0x8fbd44 cxx_eval_statement_list
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:4505
0x8ffc82 cxx_eval_constant_expression
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:5508
0x8ffd01 cxx_eval_constant_expression
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:5512
0x8fbd44 cxx_eval_statement_list
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:4505
0x8ffc82 cxx_eval_constant_expression
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:5508
0x8f17d4 cxx_eval_call_expression
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:2072
0x8fd60c cxx_eval_constant_expression
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:4924
0x90178c cxx_eval_outermost_constant_expr
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:5868
0x9023c4 cxx_constant_dtor(tree_node*, tree_node*)
        /home/mpolacek/src/gcc/gcc/cp/constexpr.c:6027
0x998cc3 cxx_maybe_build_cleanup(tree_node*, int)
        /home/mpolacek/src/gcc/gcc/cp/decl.c:17212
0x974ae7 expand_static_init
        /home/mpolacek/src/gcc/gcc/cp/decl.c:8737
0x970763 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
        /home/mpolacek/src/gcc/gcc/cp/decl.c:7783
0xa8ea3f cp_parser_init_declarator
        /home/mpolacek/src/gcc/gcc/cp/parser.c:20727
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to