https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118623
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Sam James from comment #2) > 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. Just mark h as noinline.