https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102760
David Binderman <dcb314 at hotmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dcb314 at hotmail dot com --- Comment #6 from David Binderman <dcb314 at hotmail dot com> --- I see very similar for this legal C code: int li_4, li_5, us_8; unsigned char func_7_ptr_13, func_7_uc_14; void func_7_ptr_18() { if (li_5) { for (;;) ; short s_15; for (; func_7_uc_14;) { us_8 = 7; for (; us_8; us_8 += 1) lblD2AF1FAB: if (us_8) li_4 = 1; func_7_uc_14 += func_7_ptr_18; if (func_7_ptr_13 & 1 && (func_7_uc_14 &= func_7_ptr_13)) s_15 %= func_7_uc_10li_19(s_15); } } goto lblD2AF1FAB; } when compiled as follows: $ ~/gcc/results//bin/gcc -c -O2 -Wall bug876.c bug876.c: In function ‘func_7_ptr_18’: bug876.c:14:20: warning: assignment to ‘unsigned char’ from ‘void (*)()’ makes integer from pointer without a cast [-Wint-conversion] 14 | func_7_uc_14 += func_7_ptr_18; | ^~ bug876.c:16:17: warning: implicit declaration of function ‘func_7_uc_10li_19’ [-Wimplicit-function-declaration] 16 | s_15 %= func_7_uc_10li_19(s_15); | ^~~~~~~~~~~~~~~~~ during GIMPLE pass: uninit bug876.c:3:6: internal compiler error: in decompose, at wide-int.h:984 3 | void func_7_ptr_18() {