https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118623
--- Comment #2 from Sam James <sjames at gcc dot gnu.org> --- Changing it to: ``` int a, b; int c(int f, int g) { for (int d = 0; d <= 4; d++) { int e = 1 << f; if (g & e) return d; } return 5; } int h(int f, int g) { if ((c(g - 50, g) + g + g) & 1); else if (f) a = 1; return a; } int main() { if (h(b + 5, b + 63) != 0) __builtin_abort(); return 0; } ``` it works at -O3.