Столкнулся с тем, что добавление обычного printf меняет результат работы программы.
int3 cell;
for(cell.x = 0; cell.x < cells.x; ++cell.x)
for(cell.y = 0; cell.y < cells.y; ++cell.y)
for(cell.z = 0; cell.z < cells.z; ++cell.z)
{
int id = cell.x*cells.y*cells.z + cell.y*cells.z + cell.z;
//printf("%d\n", id);
float3 moment = moments_ram_raw.get(id);
...
}
Эти moment
потом записываются в другую область памяти, откуда сохраняются на диск в бинарный формат.
Так вот, если раскомментировать printf
, то бинарный файл изменится. Выяснилось, что виновик — ключ -Ofast
. Замена уровня оптимизации на -O3
решила проблему.
Тем не менее, стоит ли копать дальше, чтобы это зарепортить в багтрекер gcc, или это нормальное поведение для Версия компилятора -Ofast
?
gcc version 6.3.0 20170516 (Debian 6.3.0-18)
UPD: Ошибся разделом, перенесите в Development, пожалуйста
Перемещено beastie из desktop