LinuxForum.Fans
Тема

Встраивание/оптимизация при линковке.

Автор: Fat-Zer 4 сообщений 1474 просмотров
#169982

вопрос к знатокам: Происходит ли сабж?

вместо пояснения:
допустим функция foo() и call_foo() определена в foo.o. Функция foo() достаточно небольшая, чтобы компилятор её встроил.
call_foo() вызывает foo() и, очевидно, на этапе компиляции вызов встраивается в вызывающую функцию.
теперь рассмотрим bar() из модуля bar.o, которая вызывает foo(). итак вопрос, встроится ли foo() в bar() при каких-либо условиях?

#170451

Ну возможно при использовании LTO foo() будет встроена в bar().

#170455
RasenHerz написал:
Ну возможно при использовании LTO foo() будет встроена в bar().

действительно, фича правда совсем новая... в основной ветке gcc появилась только в 4.5. А про подобные штуки в других компиляторах кто-то что-то знает?

#170545
Fat-Zer написал:

действительно, фича правда совсем новая... в основной ветке gcc появилась только в 4.5. А про подобные штуки в других компиляторах кто-то что-то знает?

Своего родом "аналогом" LTO для Intel Compiler является IPO, а вот как дела обстоят в других компиляторах вроде Clang я не знаю (хотя вроде как LLVM поддерживает LTO).

Войдите или зарегистрируйтесь, чтобы ответить.