https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120938
--- Comment #1 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Removing the parameter of inc makes the problem to go away. So does removing the recursion #include <stdio.h> volatile int variablev; static int dead () { return 0; } static void inc() { variablev++; } static void inline_me (int l) { for (int i = 0; i < 100000000; i++) {dead();inc();inc();} if (!l) inline_me (l+1); printf ("block tail recursion\n"); } int main () { inline_me (0); return 0; }