Hast du auch -Wall drin ?

Ohne das zeigt er doch nur wirkliche Fehler und kritische Warnings an.
Der obige Code ist ja valide, auch wenn du dich darauf verlaesst, dass der Rueckgabewert ggf unspezifiziert ist. (Wahrscheinlich ist das als Implementationsabhaengig markiert)
Koennte ja sein, dass der Programmierer das beruecksichtigt hat (z.B. alle moeglichen Faelle mit if abgefragt hat, bevor das Ende der Funktion erreicht ist).

C geht erstmal davon aus, dass der Programmierer WEISS, was er tut. Daher ist -Wall eine gute Idee.

Mein gcc version 4.2.3 liefert mir mit -Wall jedenfalls folgendes:
Code:
test.c: In function 'foo':
test.c:4: warning: control reaches end of non-void function
Ohne -Wall schweigt es jedoch in Ehrfurcht vor meinen Programmierskillz.