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.