Size: a a a

2021 February 15

AR

Alexandr Rudalev in pro.cxx
Побитый Кирпич
Без inline функция всё равно встроена в main. Какая разница что будет с Inline?
В данном случае она не встроена, а её результат был вычислен на этапе компиляции. При этом сама функция в результирующем бинарнике осталась (хотя она ни разу не вызывается)
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
В данном случае она не встроена, а её результат был вычислен на этапе компиляции. При этом сама функция в результирующем бинарнике осталась (хотя она ни разу не вызывается)
Где он вычислен на этапе компиляции? lea     eax, [rdi+rdi] это рантайм результат
источник

ПК

Побитый Кирпич... in pro.cxx
https://godbolt.org/z/1Wrdc4

Ты всё ещё будешь спорить что foo не встраивается в main?
источник

AR

Alexandr Rudalev in pro.cxx
О да, чуть посложнее и всё
https://godbolt.org/z/o65MK7
источник

ZZ

Zorro Zorroff in pro.cxx
Так, по поводу реюзания фрейма переменными разной области видимости. Всё чики-пики, вопрос снимается. Спасибо комментаторам за аттрибут always_inline.

финальная версия https://godbolt.org/z/M3G9s7

Ошибка в моем коде найдена: сложная инициализация static thread_local в середине кода с куча reference to temporary, имплементация паттерн-матчинга в парсере в читаемом виде, лишние структуры на стеке во время инициализации этих статиков.
источник

ПК

Побитый Кирпич... in pro.cxx
Вот видишь, уже лет 20 как пора считать inline как ветка в ODR правиле, а не как "включение встраивания"
источник

AR

Alexandr Rudalev in pro.cxx
Побитый Кирпич
Вот видишь, уже лет 20 как пора считать inline как ветка в ODR правиле, а не как "включение встраивания"
не увидел
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
не увидел
Не увидел, что inline прямо не влияет на встраивание тела функции в main вместо вызова?
источник

ПК

Побитый Кирпич... in pro.cxx
Не увидел, что компилятор умеет встраивать не-inline функцию?
источник

AR

Alexandr Rudalev in pro.cxx
Побитый Кирпич
Не увидел, что компилятор умеет встраивать не-inline функцию?
В очень ограниченных случаях? И то чуть посложнее так и всё? При этом тот же пример с inline тут же встраивается и не реализует не нужную сущность?
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
В очень ограниченных случаях? И то чуть посложнее так и всё? При этом тот же пример с inline тут же встраивается и не реализует не нужную сущность?
Какой пример с inline?
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
В очень ограниченных случаях? И то чуть посложнее так и всё? При этом тот же пример с inline тут же встраивается и не реализует не нужную сущность?
> В очень ограниченных случаях? И то чуть посложнее так и всё?

Это так встраивание в принципе работает, не все функции встраиваются компилятором
источник

ПК

Побитый Кирпич... in pro.cxx
inline тут принципиально ничего нового не добавляет. Максимум, что оно сделает в этом плане - немного повысит вероятность в некоторых компиляторах (в clang вроде), но сути это не меняет
источник

D

Daniel in pro.cxx
Побитый Кирпич
Какой пример с inline?
Имеют ввиду, что если в этом примере добавить inline, то функции foo не будет в прицнипе, хоть она и встраивается без inline.
источник

ПК

Побитый Кирпич... in pro.cxx
Daniel
Имеют ввиду, что если в этом примере добавить inline, то функции foo не будет в прицнипе, хоть она и встраивается без inline.
Это к встраиванию отношения не имеет, это как раз к линковке, ODR и вот этому всему относится. С чем Alexandr как раз спорит
источник

ПК

Побитый Кирпич... in pro.cxx
встраивание оно про точку вызова. Есть символ в бинаре или нет - другая тема
источник

AS

Anatoly Shirokov in pro.cxx
так или иначе inline в современной его трактовке - это метод борьбы с нарушением ODR, о встраивании уже не вспоминают.
источник

D

Daniel in pro.cxx
Побитый Кирпич
Это к встраиванию отношения не имеет, это как раз к линковке, ODR и вот этому всему относится. С чем Alexandr как раз спорит
"Если функция не была помечена как inline то она будет реализована явно в соответствии с соглашением о вызове."
"При этом сама функция в результирующем бинарнике осталась (хотя она ни разу не вызывается)"
мне показалось, что как раз про линковку
источник

ПК

Побитый Кирпич... in pro.cxx
Anatoly Shirokov
так или иначе inline в современной его трактовке - это метод борьбы с нарушением ODR, о встраивании уже не вспоминают.
Этот вопрос в supapro раз в месяц стабильно обсуждается :)
источник

D

Dmitriy in pro.cxx
Есть ли способы облегчения жизни при отладке lockfree структур?
источник