История изменений
Исправление wandrien, (текущая версия) :
Если выполнение цикла не содержит сайд эффектов, компилятор его выбрасывает внутренний код.
Далее если он может доказать, что условие false или вычислимо в false за конечное время, то он выбрасывает и остатки цикла целиком.
Вроде всё логично. Время выполнения кода само по себе не является разновидностью сайд-эффекта, поэтому конечный цикл без сайд эффектов эквивалентен отсутствию цикла.
Но если компилятор выбрасывает while (true) {}
, это бага, так как любой код после такого цикла недостижим, а он становится достижимым.
Исходная версия wandrien, :
Если выполнение цикла не содержит сайд эффектов, компилятор его выбрасывает.
Далее если он может доказать, что условие false или вычислимо в false за конечное время, то он выбрасывает и остатки цикла целиком.
Вроде всё логично. Время выполнения кода само по себе не является разновидностью сайд-эффекта, поэтому конечный цикл без сайд эффектов эквивалентен отсутствию цикла.
Но если компилятор выбрасывает while (true) {}
, это бага, так как любой код после такого цикла недостижим, а он становится достижимым.