LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Если выполнение цикла не содержит сайд эффектов, компилятор его выбрасывает внутренний код.

Далее если он может доказать, что условие false или вычислимо в false за конечное время, то он выбрасывает и остатки цикла целиком.

Вроде всё логично. Время выполнения кода само по себе не является разновидностью сайд-эффекта, поэтому конечный цикл без сайд эффектов эквивалентен отсутствию цикла.

Но если компилятор выбрасывает while (true) {}, это бага, так как любой код после такого цикла недостижим, а он становится достижимым.

Исходная версия wandrien, :

Если выполнение цикла не содержит сайд эффектов, компилятор его выбрасывает.

Далее если он может доказать, что условие false или вычислимо в false за конечное время, то он выбрасывает и остатки цикла целиком.

Вроде всё логично. Время выполнения кода само по себе не является разновидностью сайд-эффекта, поэтому конечный цикл без сайд эффектов эквивалентен отсутствию цикла.

Но если компилятор выбрасывает while (true) {}, это бага, так как любой код после такого цикла недостижим, а он становится достижимым.