https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103267
--- Comment #2 from Jan Hubicka <hubicka at gcc dot gnu.org> --- jan@localhost:~> gcc t.c t.c:2:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 2 | infinite (int p) | ^~~~~~~~ t.c:16:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 16 | test2(int *a) | ^~~~~ t.c:20:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 20 | main() | ^~~~ jan@localhost:~> ./a.out ...loops infinitely.... jan@localhost:~> gcc t.c -O2 t.c:2:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 2 | infinite (int p) | ^~~~~~~~ t.c:16:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 16 | test2(int *a) | ^~~~~ t.c:20:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 20 | main() | ^~~~ jan@localhost:~> ./a.out Segmentation fault (core dumped)