История изменений
Исправление
pavlick,
(текущая версия)
:
Ну так он заоптимизурует, если там действительно данные по ptr есть (либо сам подставит).
Я ошибался в том, что зависимость от рантайм условий отключит оптимизацию. ГЦЦ норм, а шланг творит лютую дичь (не -O0):
#include <stdio.h>
const char *f() {
char i = getchar();
if (i == '1')
return NULL;
return "qjfkdjf";
}
int main(void) {
printf("formatting drive %c\n", *f());
}
Ему вообще пофиг, что возврат из f() зависит от рантайм условий и всегда возвращает «qjfkdjf». Если не могут написать даже unspecified, то нужно хотя бы обязать делать реальное чтение из памяти, а не оставлять полностью на откуп оптимизатору. В общем да - лучше бы с этим что-то сделать. Вдруг какой-то редкий кейс и в -O0 дело до него не дошло, так пусть релизе лучше вообще все упадет чем вот так как в шланге.
Исходная версия
pavlick,
:
Ну так он заоптимизурует, если там действительно данные по ptr есть (либо сам подставит).
Я ошибался в том, что зависимость от рантайм условий отключит оптимизацию. ГЦЦ норм, а шланг творит лютую дичь (не -O0):
#include <stdio.h>
const char *f() {
char i = getchar();
if (i == 1)
return NULL;
return "qjfkdjf";
}
int main(void) {
printf("formatting drive %c\n", *f());
}
Ему вообще пофиг, что возврат из f() зависит от рантайм условий и всегда возвращает «qjfkdjf». Если не могут написать даже unspecified, то нужно хотя бы обязать делать реальное чтение из памяти, а не оставлять полностью на откуп оптимизатору. В общем да - лучше бы с этим что-то сделать. Вдруг какой-то редкий кейс и в -O0 дело до него не дошло, так пусть релизе лучше вообще все упадет чем вот так как в шланге.