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