Size: a a a

2020 March 24

ПК

Побитый Кирпич in pro.cxx
Ioann_V
restrict, это Сишное
Это неважно
источник

I

Ioann_V in pro.cxx
Побитый Кирпич
Это неважно
это важно, потому что в с++, ты вызываешь libc
источник

A

Alex in pro.cxx
одно и тоже значение на каждый вызов? Никак. Разве что если результат известен на этапе компиляции, то есть constexpr
источник

ПК

Побитый Кирпич in pro.cxx
Ioann_V
это важно, потому что в с++, ты вызываешь libc
Это неважно, потому что речь про алиасинг для void*
источник

I

Ioann_V in pro.cxx
Побитый Кирпич
Это неважно, потому что речь про алиасинг для void*
А, я думаю, что алиасинг для void* возможен, конечно.
источник

I

Ioann_V in pro.cxx
выходит, Андрей не прав.
источник

A

Alex in pro.cxx
не исключено, что компиляторы понимают свою версию restrict и в С++ режиме, хоть это и не стандарт
источник

PK

Pavel Kazakov in pro.cxx
Ioann_V
А, я думаю, что алиасинг для void* возможен, конечно.
а вот как формально найти подтверждение? :)
источник

A

Alex in pro.cxx
может
источник

I

Ioann_V in pro.cxx
Pavel Kazakov
а вот как формально найти подтверждение? :)
а ща я погуглю
источник

PK

Pavel Kazakov in pro.cxx
magras
Но на том же cppref говорится о том, что memcpy делает reinterpert_cast к unsigned char.
вот это похоже на правду, ну и к этому надо добавить сакральное знание, что алиасятся только std::byte, char и unsigned char
источник

A

Alex in pro.cxx
то есть, void* сам по себе не ломает оптимизации?
источник

AZ

Alexander Zaitsev in pro.cxx
Alex
то есть, void* сам по себе не ломает оптимизации?
ну-ну :)
источник

I

Ioann_V in pro.cxx
Alex
то есть, void* сам по себе не ломает оптимизации?
Может Андрей и прав, я не смог ничего нагуглить. Надо, выходит, стандарт курить.
источник

A

Alex in pro.cxx
Я б покурил, но уже завтра, башка не варит. Когда задавал вопрос часов 8 назад, я думал, что сейчас знатоки мне быстренько объяснят)
источник

CD

Constantine Drozdov in pro.cxx
Вы что-то странное обсуждали. Алиасинг это про разные типы в одной области памяти, а объекта типа void в памяти быть не может. Наличие void* не будет само по себе ломать оптимизации чтения/записи просто потому, что через void* они невозможны
источник

AS

Alexander Sotnikov in pro.cxx
Добрый день!
Подскажите, пожалуйста:
Если я запостчу метод через странд, а в этом методе асинхронно вызовутся другие асио-методы - они тоже будут "подчиняться" странду или улетят в свободное плавание?
источник

AT

Alexander T in pro.cxx
Constantine Drozdov
Вы что-то странное обсуждали. Алиасинг это про разные типы в одной области памяти, а объекта типа void в памяти быть не может. Наличие void* не будет само по себе ломать оптимизации чтения/записи просто потому, что через void* они невозможны
То есть, алиазинг становится возможным, только когда мы начинаем работать с этой памятью через void*, а для этого обязательно (!) придётся его во что-то скастовать. Если это char* в memcpy — алиасимся со всем/перечитываем всё, если это T* — страдают только объекты T. Правильно?
источник

A

Alex in pro.cxx
Alexander T
То есть, алиазинг становится возможным, только когда мы начинаем работать с этой памятью через void*, а для этого обязательно (!) придётся его во что-то скастовать. Если это char* в memcpy — алиасимся со всем/перечитываем всё, если это T* — страдают только объекты T. Правильно?
Похоже на правду, спасибо за объяснение!
источник

TT

Tem Taime in pro.cxx
Добрый день.
https://godbolt.org/z/aqnVZT
Может, есть кто шарящий в LLVM? Почему замена -msse4 на -msse3 убирает векторизацию? Какие флажки надо добавить, чтобы она появилась на -msse3?
источник