https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108825
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Keywords| |ice-checking Summary|error during GIMPLE pass: |[13 Regression] error |unrolljam |during GIMPLE pass: | |unrolljam Status|UNCONFIRMED |NEW Last reconfirmed| |2023-02-16 Target Milestone|--- |13.0 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Slightly better testcase: ``` int safe_mul_func_uint8_t_u_u_ui2, g_231, g_277_1, g_568, func_35___trans_tmp_10; int g_81[7]; extern int g_96[]; char func_35___trans_tmp_11; static inline int safe_add_func_int32_t_s_s(int si1, int si2) { return si1 > 647 - si2 ?: si1; } void func_35() { for (; g_277_1; g_277_1 += 1) { g_231 = 0; for (; g_231 <= 6; g_231 += 1) { func_35___trans_tmp_10 = safe_add_func_int32_t_s_s(g_81[g_231], g_568 || g_96[1]); func_35___trans_tmp_11 = func_35___trans_tmp_10 * safe_mul_func_uint8_t_u_u_ui2; g_81[g_231] = func_35___trans_tmp_11; } } } ``` Confirmed: <bb 42> [local count: 47303694]: if (0 != 0) goto <bb 44>; [50.00%] else goto <bb 43>; [50.00%] <bb 43> [local count: 23651847]: _94 = _7 * prephitmp_71; <bb 44> [local count: 47303694]: _97 = (int) _94; Obvious the cfgcleanup will remove the branch and it will become valid but I have no idea if it is latent otherwise.