Написал цикл (тут в упрощённом виде):
#include
int main() {
for (int i = 0; i < 4; ++i)
std::cout << i*1000000000 << std::endl;
}
Долго чесал репу, почему цикл завис. Оказалось, компилятор думает так:
(i * 1000000000 ) не должно давать overflow, следовательно условие (i < 4) всегда истинно.
upd: спасибо
joreg и
kodt_rsdn, взял у них наиболее простой зависающий код, вставил в пост. Компилировать как g++ -O2, версия g++ - 4.8.2