Если функция A вызывается только с помощью другой функции B, будет ли GCC автоматически помещать эту функцию A в функцию B как часть кода B?

#gcc #compiler-optimization

#gcc #оптимизация компилятора

Вопрос:

Например:

Есть функция A:

 void functionA();
  

и функция B:

 void functionB() {
    functionA();
}
  

если функция вызывается только functionB во всем проекте, будет ли GCC (или другой компилятор) автоматически помещать functionA в functionB как часть кода functionB?

Или я должен использовать -O3 для принудительного включения встроенной функции в GCC?

Ответ №1:

GCC может встроить функцию на основе следующих правил:
С помощью -O1, если функция статична и вызывается только один раз.
С помощью -O2, если ожидается, что тело будет меньше кода вызова функции.
С помощью -O3 gcc рассмотрит возможность встраивания всех функций.
Источник: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html