https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111043
--- Comment #7 from David Binderman <dcb314 at hotmail dot com> --- A third reproducer, with -O3 required: long g_18; int g_170, g_759, g_1114; extern void safe_lshift_func_uint64_t_u_u(); void func_35() { int __trans_tmp_1; for (; g_759 >= 0; g_759 = g_759 - (long)7) { g_170 = 0; if (__trans_tmp_1) return; if (g_1114) safe_lshift_func_uint64_t_u_u(); } } void func_20() { int __trans_tmp_2; g_18 = 7; for (; g_18 >= 0; g_18 -= 1) __attribute__(()) int right = g_18; __trans_tmp_2 = right < 0 || right >= 2 ?: right; if (__trans_tmp_2) for (;;) ; func_35(); }