Почему GCC не предупреждает о недоступности кода?

интересно, почемуgcc (4.6.3) не дает мне никакого предупреждения длянедостижимый код в этом примере:

#include 

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;
}

Обратите внимание, цель неисправногоstatus() функция состояла в том, чтобы поддерживать статус. Я ожидал получить предупреждение за это с-Wall, Я пытался также,-Wunreachable-code-Wextra-pedantic а также-ansi (как это обсуждалосьВот). Тем не менее, никто из них не дает мне предупреждение.

Похоже, gcc молча удаляет назначение статической переменной.

На мой взгляд варианты gcc-Wall -Werror должен сгенерировать ошибку.

Ответы на вопрос(2)

Ваш ответ на вопрос