https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99573
Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Keywords| |ice-on-valid-code Last reconfirmed| |2021-03-30 CC| |mpolacek at gcc dot gnu.org --- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Confirmed. I hit this with another, simplified example: // x.h namespace std { enum class align_val_t: decltype(sizeof(int)) {}; } // z.cc export module A:base; #include "x.h" $ ./cc1plus -quiet z.cc -fmodules-ts In file included from z.cc:2: x.h:2:27: error: cannot define ‘enum class std::align_val_t’ in different module 2 | enum class align_val_t: decltype(sizeof(int)) {}; | ^~~~~~~~~~~~~~~~~~~~~ <built-in>: note: declared here x.h:2:27: internal compiler error: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in start_enum, at cp/decl.c:15699 0x1a18873 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) /home/mpolacek/src/gcc/gcc/tree.c:9866 0xa1e03c tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) /home/mpolacek/src/gcc/gcc/tree.h:3476 0xb4d2e1 start_enum(tree_node*, tree_node*, tree_node*, tree_node*, bool, bool*) /home/mpolacek/src/gcc/gcc/cp/decl.c:15699 0xc9a49d cp_parser_enum_specifier /home/mpolacek/src/gcc/gcc/cp/parser.c:19986 0xc9725b cp_parser_type_specifier /home/mpolacek/src/gcc/gcc/cp/parser.c:18412 0xc91963 cp_parser_decl_specifier_seq /home/mpolacek/src/gcc/gcc/cp/parser.c:15062 0xc90054 cp_parser_simple_declaration /home/mpolacek/src/gcc/gcc/cp/parser.c:14319 0xc8ffdc cp_parser_block_declaration /home/mpolacek/src/gcc/gcc/cp/parser.c:14266 0xc8fca8 cp_parser_declaration /home/mpolacek/src/gcc/gcc/cp/parser.c:14137 0xc8fd9d cp_parser_toplevel_declaration /home/mpolacek/src/gcc/gcc/cp/parser.c:14166 0xc8f53e cp_parser_declaration_seq_opt /home/mpolacek/src/gcc/gcc/cp/parser.c:13954 0xc9b41c cp_parser_namespace_body /home/mpolacek/src/gcc/gcc/cp/parser.c:20454 0xc9b3c5 cp_parser_namespace_definition /home/mpolacek/src/gcc/gcc/cp/parser.c:20432 0xc8fb8d cp_parser_declaration /home/mpolacek/src/gcc/gcc/cp/parser.c:14117 0xc8fd9d cp_parser_toplevel_declaration /home/mpolacek/src/gcc/gcc/cp/parser.c:14166 0xc7b6e5 cp_parser_translation_unit /home/mpolacek/src/gcc/gcc/cp/parser.c:4942 0xcde6f6 c_parse_file() /home/mpolacek/src/gcc/gcc/cp/parser.c:45257 0xea11b4 c_common_parse_file() /home/mpolacek/src/gcc/gcc/c-family/c-opts.c:1218