LINUX.ORG.RU

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

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

то clang сгененрирует такой же код, как и для tmp_swap. С minus_swap аналогично.

Ага. Или с -fno-strict-aliasing (не проверял, но прозреваю).

Проблема в том, что большая часть сишников не знают ни про restrict, ни про strict aliasing. Для них указатели – просто числа. И вот это вот говно с xor и вычитанием я имел «счастье» наблюдать в реальном коде.

Аноним был прав. Потому что код в общем случае не эквивалентен (что видно, если, например, вызвать xor_swap(&a, &a))

Тссс! Я-то знаю. А вот сишник Сергей выше – нет, у него суперскалярные процессоры сишечке мешают.

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

то clang сгененрирует такой же код, как и для tmp_swap. С minus_swap аналогично.

Ага. Или с -fno-strict-aliasing (не проверял, но прозреваю).

Проблема в том, что большая часть сишников не знают ни про restrict, ни про strict aliasing. Для них указатели – просто числа. И вот это вот говно с xor и вычитанием я имел «счастье» наблюдать в реальном коде.

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

то clang сгененрирует такой же код, как и для tmp_swap. С minus_swap аналогично.

Ага. Или с -fno-strict-aliasing (не проверял, но прозреваю).

Проблема в том, что большая часть сишников не знают ни про restrict, ни про strict aliasing. Для них указатели – просто числа.