https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117750
Bug ID: 117750 Summary: ICE: tree check: expected class ‘type’, have ‘declaration’ (function_decl) in grokdeclarator, at c/c-decl.cc:6981 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: xieym3 at zohomail dot com Target Milestone: --- $ cat 20241123025220_13.c struct rtx_def ; typedef struct rtx_def * rtx ; enum rtx_code { REG , LAST_AND_UNUSED_RTX_CODE = 256 } ; typedef union rtunion_def rtunion ; struct rtx_def { enum rtx_code code : 16 ; unsigned frame_related : 1 ; } ; static rtx find_base_value ( src ) rtx src ; { rtx temp ; rtx src_0 , src_2 ; rtx src_1 , src_3 ; if ( ( src_0 -> code == REG ) && ( ( { src_2 ; } ) -> frame_related ) ) return find_base_value ( src_0 ) ; if ( ( src_1 -> code == REG ) && ( ( { src_3 ; } ) -> frame_related ) ) return find_base_value ( src_1 ) ; if ( src_0 -> code == REG ) find_base_value ( src_0 ) ; if ( src_1 -> code == REG ) find_base_value ( src_1 ) ; } rtx rtx ( src ) rtx src ; { return find_base_value ( src ) ; } $ gcc-trunk -v Using built-in specs. COLLECT_GCC=/data/xieym/exp/gcc/test_data/gcc-latest-install/bin/gcc COLLECT_LTO_WRAPPER=/data/xieym/exp/gcc/test_data/gcc-latest-install/libexec/gcc/x86_64-pc-linux-gnu/15.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /data/xieym/exp/gcc/test_data/gcc-latest-src/configure --enable-coverage --enable-checking --disable-multilib --disable-shared --disable-bootstrap --enable-languages=c,c++ --prefix=/data/xieym/exp/gcc/test_data/gcc-latest-install Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 15.0.0 20241123 (experimental) (GCC) $ gcc-trunk -x c -std=c2x -c 20241123025220_13.c -o /dev/null 20241123025220_13.c: In function ‘find_base_value’: 20241123025220_13.c:15:1: warning: old-style function definition [-Wold-style-definition] 15 | find_base_value ( src ) | ^~~~~~~~~~~~~~~ 20241123025220_13.c: At top level: 20241123025220_13.c:30:5: error: ‘rtx’ redeclared as different kind of symbol 30 | rtx rtx | ^~~ 20241123025220_13.c:2:26: note: previous declaration of ‘rtx’ with type ‘rtx’ {aka ‘struct rtx_def *’} 2 | typedef struct rtx_def * rtx ; | ^~~ 20241123025220_13.c: In function ‘rtx’: 20241123025220_13.c:32:1: internal compiler error: tree check: expected class ‘type’, have ‘declaration’ (function_decl) in grokdeclarator, at c/c-decl.cc:6981 32 | rtx src ; | ^~~ 0x567214e internal_error(char const*, ...) /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/diagnostic-global-context.cc:517 0x27bd5cd tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/tree.cc:9081 0xe09b06 tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/tree.h:3817 0xe3aee7 grokdeclarator /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/c/c-decl.cc:6981 0xe31d55 start_decl(c_declarator*, c_declspecs*, bool, tree_node*, bool, unsigned int*) /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/c/c-decl.cc:5592 0xf3242b c_parser_declaration_or_fndef /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/c/c-parser.cc:2806 0xf33350 c_parser_declaration_or_fndef /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/c/c-parser.cc:3026 0xf2e9a8 c_parser_external_declaration /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/c/c-parser.cc:2067 0xf2de4f c_parser_translation_unit /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/c/c-parser.cc:1921 0xfd0439 c_parse_file() /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/c/c-parser.cc:28878 0x10fb285 c_common_parse_file() /data/xieym/exp/gcc/test_data/gcc-latest-src/gcc/c-family/c-opts.cc:1374 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.