LINUX.ORG.RU

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

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

Тогда всюду вместо ассемблерного add придётся вкомпилировать проверку на переполнение.

Ну а умный оптимизатор на что – понять, где переполнение точно есть (и не компилировать), где оно может быть (ставить проверку), а где его нет.

Заметь – такой режим компиляции не противоречит спецификации, где переполнение – UB. Потому что отказываться компилировать – точно такое же «делать что угодно», как и любое другое.

К массиву придётся прикреплять размер, чтобы можно было сделать проверку на выход за границы и на каждое чтение/запись его проверять.

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

Логика? Не вижу её тут.

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

Тогда всюду вместо ассемблерного add придётся вкомпилировать проверку на переполнение.

Ну а умный оптимизатор на что – понять, где переполнение точно есть (и не компилировать), где оно может быть (ставить проверку), а где его нет.

Заметь – такой режим компиляции не противоречит спецификации, где переполнение – UB. Потому что отказываться компилировать – точно такое же «делать что угодно, как и любое другое».

К массиву придётся прикреплять размер, чтобы можно было сделать проверку на выход за границы и на каждое чтение/запись его проверять.

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

Логика? Не вижу её тут.