https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120287
Bug ID: 120287 Summary: [15/16 Regression] internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in is_std_substitution, at cp/mangle.cc:507 Product: gcc Version: 16.0 Status: UNCONFIRMED Keywords: error-recovery, ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org CC: jakub at gcc dot gnu.org Target Milestone: --- Starting with r15-2798-g82cd63a63eaa61 we ICE after giving the expected error: namespace std { template<typename T> constexpr auto format_kind = []{ static_assert(false); }(); } template<auto> struct S { }; S<std::format_kind<const void>> s; Bad: 8742 /home/remote/jwakely/gcc-bisect-objs/cc1plus.r15-2798 ice.cc: In instantiation of 'constexpr const auto std::format_kind<const void>': ice.cc:7:8: required from here 7 | S<std::format_kind<const void>> s; | ^~~~~~~~~~~~~~~~~~~~~~ ice.cc:4:48: error: static assertion failed 4 | constexpr auto format_kind = []{ static_assert(false); }(); | ^~~~~ ice.cc:4:48: note: 'false' evaluates to false ice.cc:4:16: error: deduced type 'const void' for 'std::format_kind<const void>' is incomplete 4 | constexpr auto format_kind = []{ static_assert(false); }(); | ^~~~~~~~~~~ ice.cc:4:30: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in is_std_substitution, at cp/mangle.cc:508 4 | constexpr auto format_kind = []{ static_assert(false); }(); | ^ 0x2e2f7ea internal_error(char const*, ...) ../../gcc/diagnostic-global-context.cc:491 0x159a2b8 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) ../../gcc/tree.cc:9051 0x408f48 tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) ../../gcc/tree.h:3787 0x5f696b is_std_substitution ../../gcc/cp/mangle.cc:508 0x5f705d find_substitution ../../gcc/cp/mangle.cc:640 0x5fb066 write_prefix ../../gcc/cp/mangle.cc:1310 0x5fb53e write_prefix ../../gcc/cp/mangle.cc:1362 0x5faf90 write_nested_name ../../gcc/cp/mangle.cc:1279 0x5fa517 write_name ../../gcc/cp/mangle.cc:1171 0x5f92ff write_encoding ../../gcc/cp/mangle.cc:938 0x5f8417 write_mangled_name ../../gcc/cp/mangle.cc:820 0x60dfc2 mangle_decl_string ../../gcc/cp/mangle.cc:4421 0x60e012 get_mangled_id ../../gcc/cp/mangle.cc:4442 0x60e350 mangle_decl(tree_node*) ../../gcc/cp/mangle.cc:4480 0x157a585 decl_assembler_name(tree_node*) ../../gcc/tree.cc:725 0xa6487d symtab_node::get_comdat_group_id() ../../gcc/cgraph.h:258 0xa84f49 analyze_functions ../../gcc/cgraphunit.cc:1203 0xa8860f symbol_table::finalize_compilation_unit() ../../gcc/cgraphunit.cc:2560 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.