https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79654
Bug ID: 79654 Summary: [7 Regression] ICE on invalid c++ code in register_dtor_fn in cp/decl.c:7877 Product: gcc Version: unknown Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: jakub at gcc dot gnu.org Target Milestone: --- Created attachment 40792 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40792&action=edit test-case Also adopted from clang, however this one is very recent regression (started with r245218): $ g++ /home/marxin/BIG/Programming/llvm-project/llvm/tools/clang/test/CodeGenCXX/cxx1z-decomposition.cpp -std=c++14 ... /home/marxin/BIG/Programming/llvm-project/llvm/tools/clang/test/CodeGenCXX/cxx1z-decomposition.cpp: In function ‘void __static_initialization_and_destruction_0(int, int)’: /home/marxin/BIG/Programming/llvm-project/llvm/tools/clang/test/CodeGenCXX/cxx1z-decomposition.cpp:44:6: internal compiler error: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in register_dtor_fn, at cp/decl.c:7877 auto [d1, d2] = make<D>(); ^~~~~~~~ 0x1541400 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) ../../gcc/tree.c:9866 0x80d58e tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) ../../gcc/tree.h:3187 0x85f3cc register_dtor_fn(tree_node*) ../../gcc/cp/decl.c:7877 0x9680f0 one_static_initialization_or_destruction ../../gcc/cp/decl2.c:3756 0x9685f7 do_static_initialization_or_destruction ../../gcc/cp/decl2.c:3843 0x96ad87 c_parse_final_cleanups() ../../gcc/cp/decl2.c:4602 0xb8ea37 c_common_parse_file() ../../gcc/c-family/c-opts.c:1134