Russian Qt Forum

Программирование => С/C++ => Тема начата: Fat-Zer от Июнь 15, 2011, 20:06



Название: Встраивание/оптимизация при линковке.
Отправлено: Fat-Zer от Июнь 15, 2011, 20:06
вопрос к знатокам: Происходит ли сабж?

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



Название: Re: Встраивание/оптимизация при линковке.
Отправлено: BRE от Июнь 15, 2011, 20:14
На этапе линковки никакого встраивания быть не может - только сборка и настройка связей.


Название: Re: Встраивание/оптимизация при линковке.
Отправлено: Fat-Zer от Июнь 15, 2011, 22:43
оказывается с недавнего времени такое возможно. в gcc-4.5 добавили флаг -flto, отвечающий за оптимизацию при линковке.