Jak sprawić, by gcc ostrzegał przed zwracaniem adresu zmiennych lokalnych?

Zgcc 4.4.5 Mam ostrzeżenie z następującym kodem.

char *f(void)
{
    char c;
    return &c;
}

Ale kiedy używam tymczasowego wskaźnika, nie ma już ostrzeżenia (nawet jeśli zachowanie jest nieprawidłowe).

char *f(void)
{
    char c;
    char *p = &c;
    return p;
}

Słyszałem, że analiza wskaźnika jest trudna w C, ale możegcc ostrzec o takim kodzie?