https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94966
Bug ID: 94966 Summary: [10 regression] internal compiler error: tree check: expected function_type or method_type, have integer_type in gimplify_call_expr, at gimplify.c:3433 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: anbu1024.me at gmail dot com Target Milestone: --- $ cat test.c extern void (*x) () ; void foo() { x(); } char x [] = { foo }; -------------------------------------------------------------------------------- $ gcc-10 --version gcc (GCC) 10.0.1 20200419 (experimental) Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -------------------------------------------------------------------------------- $ gcc-10 test.c test.c:9:6: error: conflicting types for ‘x’ 9 | char x [] = { foo }; | ^ test.c:2:15: note: previous declaration of ‘x’ was here 2 | extern void (*x) () ; | ^ test.c:9:15: warning: initialization of ‘char’ from ‘void (*)()’ makes integer from pointer without a cast []8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-conversion-Wint-conversion]8;;] 9 | char x [] = { foo }; | ^~~ test.c:9:15: note: (near initialization for ‘x[0]’) test.c:9:15: error: initializer element is not computable at load time test.c:9:15: note: (near initialization for ‘x[0]’) test.c: In function ‘foo’: test.c:6:2: internal compiler error: tree check: expected function_type or method_type, have integer_type in gimplify_call_expr, at gimplify.c:3433 6 | x(); | ^~~ 0x731ae0 tree_check_failed(tree_node const*, char const*, int, char const*, ...) ../../gcc-10-20200419/gcc/tree.c:9727 0x677c3f tree_check2(tree_node*, char const*, int, char const*, tree_code, tree_code) ../../gcc-10-20200419/gcc/tree.h:3306 0x677c3f gimplify_call_expr ../../gcc-10-20200419/gcc/gimplify.c:3433 0xafe096 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) ../../gcc-10-20200419/gcc/gimplify.c:13580 0xb00bd6 gimplify_stmt(tree_node**, gimple**) ../../gcc-10-20200419/gcc/gimplify.c:6825 0xb0199b gimplify_bind_expr ../../gcc-10-20200419/gcc/gimplify.c:1424 0xafe0b3 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) ../../gcc-10-20200419/gcc/gimplify.c:13809 0xb15927 gimplify_stmt(tree_node**, gimple**) ../../gcc-10-20200419/gcc/gimplify.c:6825 0xb15927 gimplify_body(tree_node*, bool) ../../gcc-10-20200419/gcc/gimplify.c:14857 0xb15e53 gimplify_function_tree(tree_node*) ../../gcc-10-20200419/gcc/gimplify.c:15030 0x9607d7 cgraph_node::analyze() ../../gcc-10-20200419/gcc/cgraphunit.c:670 0x9633f7 analyze_functions ../../gcc-10-20200419/gcc/cgraphunit.c:1227 0x963fc2 symbol_table::finalize_compilation_unit() ../../gcc-10-20200419/gcc/cgraphunit.c:2974 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. -------------------------------------------------------------------------------- $ gcc-9 --version gcc (GCC) 9.3.1 20200425 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -------------------------------------------------------------------------------- $ gcc-9 test.c test.c:9:6: error: conflicting types for ‘x’ 9 | char x [] = { foo }; | ^ test.c:2:15: note: previous declaration of ‘x’ was here 2 | extern void (*x) () ; | ^ test.c:9:15: warning: initialization of ‘char’ from ‘void (*)()’ makes integer from pointer without a cast [-Wint-conversion] 9 | char x [] = { foo }; | ^~~ test.c:9:15: note: (near initialization for ‘x[0]’) test.c:9:15: error: initializer element is not computable at load time test.c:9:15: note: (near initialization for ‘x[0]’) test.c:6: confused by earlier errors, bailing out