Dlaczego GCC nie ostrzega przed nieosiągalnym kodem?

zastanawiam się dlaczegogcc (4.6.3) nie daje mi ostrzeżenia dlanieosiągalny kod w tym przykładzie:

#include <stdio.h>

int status(void)
{
    static int first_time = 1;

    if (first_time) {
        return 1;   
        first_time = 0; /* never reached */
    } else {
        return 0;   
    }     
}

int main(int argc, const char *argv[])
{
    printf("first call %d\n", status());
    printf("second call %d\n", status());
    return 0;
}

Uwaga, cel wadliwegostatus() funkcją było utrzymanie statusu. Spodziewałem się na to ostrzeżenia-Wall. Próbowałem też-Wunreachable-code, -Wextra, -pedantic i-ansi (tak jak zostało to omówionetutaj). Jednak żaden z nich nie ostrzega mnie.

Wygląda na to, że gcc bezgłośnie usuwa przypisanie zmiennej statycznej.

Moim zdaniem opcje gcc-Wall -Werror powinien zgłosić błąd.

questionAnswers(2)

yourAnswerToTheQuestion