LINUX.ORG.RU

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

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

они могут обрабатываться отдельными ветками оптимизации,

Так смысл UB именно в том, чтобы можно было использовать эти отдельные ветки оптимизации.

Нет. Отдельные ветки, про которые говорю я, это "вручную" запрограммированные случаи оптимизации на конкретных значениях входных данных == сценариях. Например, зануление. На них ты свой тезис доказать не можешь. Так как ты пытаешься доказать существование оптимизаций доступа к данным в зависимости только от знака счётчика, тебе его надо доказать для произвольных сценариев / данных.

То когда из цикла вызывается очень медленная функция.

Не фантазируй. Компилятор не отличает вызов "медленной" функции от вызова "очень медленной" функции.

Они существенно отличаются для unsigned и int.

В твоём примере там разница в первую очередь связана с расширением до 64-ёх бит.

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

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

Исправление r--r--r--, :

они могут обрабатываться отдельными ветками оптимизации,

Так смысл UB именно в том, чтобы можно было использовать эти отдельные ветки оптимизации.

Нет. Отдельные ветки, про которые говорю я, это «вручную» запрограммированные случаи оптимизации на конкретных значениях входных данных == сценариях. Например, зануление. На них ты свой тезис доказать не можешь. Так как ты пытаешься доказать существование оптимизаций доступа к данным в зависимости только от знака счётчика, тебе его надо доказать для произвольных сценариев / данных.

То когда из цикла вызывается очень медленная функция.

Не фантазируй. Компилятор не отличает вызов "медленной" функции от вызова "очень медленной" функции.

Они существенно отличаются для unsigned и int.

В твоём примере там разница в первую очередь связана с расширением до 64-ёх бит.

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

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

Исправление r--r--r--, :

они могут обрабатываться отдельными ветками оптимизации,

Так смысл UB именно в том, чтобы можно было использовать эти отдельные ветки оптимизации.

Нет. Отдельные ветки, про которые говорю я, это «вручную» запрограммированные случаи оптимизации на конкретных значениях входных данных == сценариях. Например, зануление. На них ты свой тезис доказать не можешь. Так как ты пытаешься доказать существование оптимизаций доступа к данным в зависимости только от знака счётчика, тебе его надо доказать для произвольных сценариев / данных.

То когда из цикла вызывается очень медленная функция.

Не фантазируй. Компилятор не отличает вызов "медленной" функции от вызова "очень медленной" функции.

Они существенно отличаются для unsigned и int.

В твоём примере там разница в первую очередь связана с расширением до 64-ёх бит.

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

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

Исправление r--r--r--, :

они могут обрабатываться отдельными ветками оптимизации,

Так смысл UB именно в том, чтобы можно было использовать эти отдельные ветки оптимизации.

Нет. Отдельные ветки, про которые говорю я, это «вручную» запрограммированные случаи оптимизации на конкретных значениях входных данных == сценариях. Например, зануление. На них ты свой тезис доказать не можешь. Так как ты пытаешься доказать существование оптимизаций доступа к данным в зависимости только от знака счётчика, тебе его надо доказать для произвольных сценариев / данных.

То когда из цикла вызывается очень медленная функция.

Не фантазируй. Компилятор не отличает вызов «медленной» функции от вызова «очень медленной» функции.

Они существенно отличаются для unsigned и int.

В твоём примере там разница в первую очередь связана с расширением до 64-ёх бит.

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

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

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

они могут обрабатываться отдельными ветками оптимизации, Так смысл UB именно в том, чтобы можно было использовать эти отдельные ветки оптимизации.

Нет. Отдельные ветки, про которые говорю я, это «вручную» запрограммированные случаи оптимизации на конкретных значениях входных данных == сценариях. Например, зануление. На них ты свой тезис доказать не можешь. Так как ты пытаешься доказать существование оптимизаций доступа к данным в зависимости только от знака счётчика, тебе его надо доказать для произвольных сценариев / данных.

То когда из цикла вызывается очень медленная функция.

Не фантазируй. Компилятор не отличает вызов «медленной» функции от вызова «очень медленной» функции.

Они существенно отличаются для unsigned и int.

В твоём примере там разница в первую очередь связана с расширением до 64-ёх бит.

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

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