Size: a a a

2021 February 15

ПК

Побитый Кирпич... in pro.cxx
(только для clang/gcc)
источник

АР

Андрей Руссков... in pro.cxx
Zorro Zorroff
предположил, потому что локальные переменные инлайн функций тоже требуют место на стеке. Годболт это отличная идея, щя
не факт, могут и в регистры влезать
источник

АР

Андрей Руссков... in pro.cxx
вообще конечно написание плюсового кода который будет транслироваться в желаемый асм это то еще искусство
источник

ZZ

Zorro Zorroff in pro.cxx
Если не сложно, скриншот с кнопкой. Тупой я, в упор не вижу.
источник

ZZ

Zorro Zorroff in pro.cxx
нашел
источник

ZZ

Zorro Zorroff in pro.cxx
output -> галочки
источник

ПК

Побитый Кирпич... in pro.cxx
Zorro Zorroff
Если не сложно, скриншот с кнопкой. Тупой я, в упор не вижу.
источник

ZZ

Zorro Zorroff in pro.cxx
спасибо
источник

A

Arelav in pro.cxx
Андрей Руссков
вообще конечно написание плюсового кода который будет транслироваться в желаемый асм это то еще искусство
Это кажется не особо возможным, если код не тривиальный. Так как разные версии одного и того же компилятора генерят часто совершенно разный асм
источник

АР

Андрей Руссков... in pro.cxx
Arelav
Это кажется не особо возможным, если код не тривиальный. Так как разные версии одного и того же компилятора генерят часто совершенно разный асм
именно поэтому это и сложно )
источник

ZZ

Zorro Zorroff in pro.cxx
https://godbolt.org/z/q1doMs     не инлайнит покашо. Убёг на час.
источник

BU

Boris Usievich in pro.cxx
зачем ему инлайнить,  там внутри конструктор std::string и вывод в cout
источник

m

magras in pro.cxx
Zorro Zorroff
Добрый день, коллеги. Компилятор компилит функцию, в ней куча инлайнов. Очень неэффективно расходуется стек: совершенно разные пути исполнения, буквально перед разными return разные инлайн функции, по уму они могут реюзать адреса на стеке, а получается что нет. Какое щас состояние дел у clang в этом вопросе? Особые ключи?
Согласно abi amd64 на сколько я помню место на стеке выделяется один раз на входе в функцию если не используются alloca и подобные механизмы. О какой неэффективности идет речь?
источник

s

std::slavik in pro.cxx
Dmitriy
tag 1 | (tag2 << 48)
тут кстати еще один момент потенциально к долгой отладке приводящий может быть - если например x - 64 разрядный, а платформа 32 разрядная, тогда тут вот важно будет наличие литерала у 1ки(или маски) x | (1UL << N)
источник

s

std::slavik in pro.cxx
без литерала 1ка сдвинется как 32 разрядное
источник

D

Dmitriy in pro.cxx
std::slavik
тут кстати еще один момент потенциально к долгой отладке приводящий может быть - если например x - 64 разрядный, а платформа 32 разрядная, тогда тут вот важно будет наличие литерала у 1ки(или маски) x | (1UL << N)
Тогда уж 1ULL, а вообще, емнип, компиль ругнется
источник

s

std::slavik in pro.cxx
Dmitriy
Тогда уж 1ULL, а вообще, емнип, компиль ругнется
мб, но в данном случае важно на это внимание обращать, а чего компилю ругаться?
источник

s

std::slavik in pro.cxx
он сдвигает 32 разрядное, получает 0, затем приводит его к 64 разрядному
источник

s

std::slavik in pro.cxx
все ок
источник

D

Dmitriy in pro.cxx
std::slavik
мб, но в данном случае важно на это внимание обращать, а чего компилю ругаться?
Warning на MSVC точно будет, а вот получим ли ошибку при флаге /WX - не помню
источник