https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117694
Bug ID: 117694 Summary: ICE: tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: bic60176 at gmail dot com Target Milestone: --- // Target: x86_64-linux // Configured with: /root/compilers/gcc-project-trunk/configure --prefix=/root/objects/gcc-project-trunk.obj/install --enable-languages=c,c++ --host=x86_64-linux --target=x86_64-linux --disable-bootstrap --disable-multilib // Thread model: posix // Supported LTO compression algorithms: zlib // gcc version 15.0.0 20240612 (experimental) (GCC) // // XJTsKjEoZHuy.c:37:12: error: size of array 'check' is negative // 37 | extern int check[sizeof(union s3) == 8 ? 1 : -1]; // | ^~~~~ // In file included from XJTsKjEoZHuy.c:6: root@3976cac0d8a6:~/root/my-workspace-2/clang,0# cat cc0gF9lX.out // Target: x86_64-linux // Configured with: /root/compilers/gcc-project-trunk/configure --prefix=/root/objects/gcc-project-trunk.obj/install --enable-languages=c,c++ --host=x86_64-linux --target=x86_64-linux --disable-bootstrap --disable-multilib // Thread model: posix // Supported LTO compression algorithms: zlib // gcc version 15.0.0 20240612 (experimental) (GCC) // // XJTsKjEoZHuy.c:37:12: error: size of array 'check' is negative // 37 | extern int check[sizeof(union s3) == 8 ? 1 : -1]; // | ^~~~~ // In file included from XJTsKjEoZHuy.c:6: // XJTsKjEoZHuy.c:38:34: error: 's3' defined as wrong kind of tag // 38 | extern int check[offsetof(struct s3, f4) == 6 ? 1 : -1]; // | ^~ // XJTsKjEoZHuy.c:38:18: error: invalid use of undefined type 'struct s3' // 38 | extern int check[offsetof(struct s3, f4) == 6 ? 1 : -1]; // | ^~~~~~~~ // XJTsKjEoZHuy.c:45:32: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in comptypes_verify, at c/c-typeck.cc:1178 // 45 | extern int check[sizeof(struct s4) == 4 ? 1 : -1]; // | ^~ // 0x84471d tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) // /root/compilers/gcc-project-trunk/gcc/tree.cc:9051 // 0x6f4960 tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) // /root/compilers/gcc-project-trunk/gcc/tree.h:3787 // 0x6f4960 comptypes_verify // /root/compilers/gcc-project-trunk/gcc/c/c-typeck.cc:1178 // 0x970faa comptypes(tree_node*, tree_node*) // /root/compilers/gcc-project-trunk/gcc/c/c-typeck.cc:1212 // 0x94bdd5 pushdecl(tree_node*) // /root/compilers/gcc-project-trunk/gcc/c/c-decl.cc:3381 // 0x9604b1 start_decl(c_declarator*, c_declspecs*, bool, tree_node*, bool, unsigned int*) // /root/compilers/gcc-project-trunk/gcc/c/c-decl.cc:5709 // 0x9cea71 c_parser_declaration_or_fndef // /root/compilers/gcc-project-trunk/gcc/c/c-parser.cc:2773 // 0x9daf43 c_parser_external_declaration // /root/compilers/gcc-project-trunk/gcc/c/c-parser.cc:2053 // 0x9dba0b c_parser_translation_unit // /root/compilers/gcc-project-trunk/gcc/c/c-parser.cc:1907 // 0x9dba0b c_parse_file() // /root/compilers/gcc-project-trunk/gcc/c/c-parser.cc:27303 // 0xa55419 c_common_parse_file() // /root/compilers/gcc-project-trunk/gcc/c-family/c-opts.cc:1322 // Please submit a full bug report, with preprocessed source. // Please include the complete backtrace with any bug report. // See <https://gcc.gnu.org/bugs/> for instructions. // /root/objects/gcc-project-trunk.obj/install/bin/../libexec/gcc/x86_64-linux/15.0.0/cc1 -quiet -imultiarch x86_64-linux-gnu -iprefix /root/objects/gcc-project-trunk.obj/install/bin/../lib/gcc/x86_64-linux/15.0.0/ XJTsKjEoZHuy.c -quiet -dumpdir a- -dumpbase XJTsKjEoZHuy.c -dumpbase-ext .c -mtune=generic -march=x86-64 -freport-bug -o - -frandom-seed=0 -fdump-noaddr # 0 "XJTsKjEoZHuy.c" # 0 "<built-in>" # 0 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 0 "<command-line>" 2 # 1 "XJTsKjEoZHuy.c" # 1 "/root/objects/gcc-project-trunk.obj/install/lib/gcc/x86_64-linux/15.0.0/include/stddef.h" 1 3 4 # 145 "/root/objects/gcc-project-trunk.obj/install/lib/gcc/x86_64-linux/15.0.0/include/stddef.h" 3 4 # 145 "/root/objects/gcc-project-trunk.obj/install/lib/gcc/x86_64-linux/15.0.0/include/stddef.h" 3 4 typedef long int ptrdiff_t; # 214 "/root/objects/gcc-project-trunk.obj/install/lib/gcc/x86_64-linux/15.0.0/include/stddef.h" 3 4 typedef long unsigned int size_t; # 329 "/root/objects/gcc-project-trunk.obj/install/lib/gcc/x86_64-linux/15.0.0/include/stddef.h" 3 4 typedef int wchar_t; # 425 "/root/objects/gcc-project-trunk.obj/install/lib/gcc/x86_64-linux/15.0.0/include/stddef.h" 3 4 typedef struct { long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); # 436 "/root/objects/gcc-project-trunk.obj/install/lib/gcc/x86_64-linux/15.0.0/include/stddef.h" 3 4 } max_align_t; # 7 "XJTsKjEoZHuy.c" 2 #pragma pack(2) # 9 "XJTsKjEoZHuy.c" struct s0 { char f1; unsigned f2 : 32; char f3; }; extern int check[sizeof(struct s0) == 6 ? 1 : -1]; struct s1 { char f1; unsigned : 0; char f3; }; extern int check[sizeof(struct s1) == 5 ? 1 : -1]; struct s2 { char f1; unsigned : 0; unsigned f3 : 8; char f4; }; extern int check[sizeof(struct s2) == 6 ? 1 : -1]; union s3 { char f1; unsigned : 0; unsigned f3 : 16; char f4; }; extern int check[sizeof(union s3) == 8 ? 1 : -1]; extern int check[ # 38 "XJTsKjEoZHuy.c" 3 4 __builtin_offsetof ( # 38 "XJTsKjEoZHuy.c" struct s3 # 38 "XJTsKjEoZHuy.c" 3 4 , # 38 "XJTsKjEoZHuy.c" f4 # 38 "XJTsKjEoZHuy.c" 3 4 ) # 38 "XJTsKjEoZHuy.c" == 6 ? 1 : -1]; struct s4 { char f1; unsigned f2 : 8; char f3; }; extern int check[sizeof(struct s4) == 4 ? 1 : -1]; extern int check[ # 46 "XJTsKjEoZHuy.c" 3 4 __builtin_offsetof ( # 46 "XJTsKjEoZHuy.c" struct s4 # 46 "XJTsKjEoZHuy.c" 3 4 , # 46 "XJTsKjEoZHuy.c" f3 # 46 "XJTsKjEoZHuy.c" 3 4 ) # 46 "XJTsKjEoZHuy.c" == 2 ? 1 : -1];