История изменений
Исправление wandrien, (текущая версия) :
Тогда всюду вместо ассемблерного add придётся вкомпилировать проверку на переполнение.
Ну а умный оптимизатор на что – понять, где переполнение точно есть (и не компилировать), где оно может быть (ставить проверку), а где его нет.
Заметь – такой режим компиляции не противоречит спецификации, где переполнение – UB. Потому что отказываться компилировать – точно такое же «делать что угодно», как и любое другое.
К массиву придётся прикреплять размер, чтобы можно было сделать проверку на выход за границы и на каждое чтение/запись его проверять.
В итоге имеем абсурдную ситуацию, когда компилятор, если не знает размер массива, генерирует прагматически верный код, а если знает – ерунду.
Логика? Не вижу её тут.
Исходная версия wandrien, :
Тогда всюду вместо ассемблерного add придётся вкомпилировать проверку на переполнение.
Ну а умный оптимизатор на что – понять, где переполнение точно есть (и не компилировать), где оно может быть (ставить проверку), а где его нет.
Заметь – такой режим компиляции не противоречит спецификации, где переполнение – UB. Потому что отказываться компилировать – точно такое же «делать что угодно, как и любое другое».
К массиву придётся прикреплять размер, чтобы можно было сделать проверку на выход за границы и на каждое чтение/запись его проверять.
В итоге имеем абсурдную ситуацию, когда компилятор, если не знает размер массива, генерирует прагматически верный код, а если знает – ерунду.
Логика? Не вижу её тут.