UB
Слева - результат компенсации движения здорового человека. Справа - результат компенсации движения курильщика.

Не, на самом деле слева - результат компенсации движения, полученный при компиляции программы интеловским компилятором (в Release) или MSVC в режиме Debug, а справа - результат на тех же данных той же программы, собранной MSVC в Release. Глюк исчезает, и результат становится в точности как слева, если в исходнике убрать одно единственное слово. Угадаете, какое?

Не, на самом деле слева - результат компенсации движения, полученный при компиляции программы интеловским компилятором (в Release) или MSVC в режиме Debug, а справа - результат на тех же данных той же программы, собранной MSVC в Release. Глюк исчезает, и результат становится в точности как слева, если в исходнике убрать одно единственное слово. Угадаете, какое?
no subject
no subject
no subject
таки restrict
Я вот на жалобы ICC про то, как потенциальный алиасинг ему жить мешает, купился, попробовал использовать, за что в одном месте и поплатился, поставив его там, где не следовало.
Re: таки restrict
Не знают и не умеют? Но это всё мои наблюдения, действительности не соответствующие
Re: таки restrict
говорят что пиши не пиши register, компилятор это не фига не смотрит.. он типа умнее всех, умнее нас, и сам всё знает.
А на самом деле как бы и смотрит, просто самим проверять это всем лень.
no subject
no subject
no subject
Интересно, что баг в дебаге, а не в релизе, причем на компиляторе который, оптимизирует хуже, ОБС.
бинго!
Совершенно верно, это был __restrict! Небольшой массив float'ов на стеке, который в одном месте использовался как массив float'ов, а рядом - как массив F32vec4 через указатель, на который по ошибке был навешен модификатор __restrict. Нарушение обещания не алиасить вызывает UB, который в данном случае привел к мусору в результирующем буфере.
Re: бинго!
typedef float __m128 __attribute__ ((vector_size (16)));
Вобще самобытное восприятие типов в MSVC доставляет. Я как-то обнаружил, что MSVC считает, что int64_t из stdint.h это не то же самое, что long long int (размер совпадает).
Re: бинго!
Re: бинго!
no subject
no subject