рекомендует gcc встроить функцию - PullRequest
0 голосов
/ 21 мая 2010

Я не знаю, насколько это возможно и насколько уместен этот вопрос здесь.

Есть ли какие-либо изменения, которые мы можем внести в make-файл, чтобы рекомендовать GCC встроить все функции, хотя функции не встроены во время объявления или нигде в исходном файле.

Ответы [ 2 ]

3 голосов
/ 21 мая 2010

Есть несколько способов сделать встроенные функции gcc. Одним из них является параметр -finline-functions, который сделает встроенные функции gcc «простыми». Компилятор использует некоторую эвристику, чтобы определить, достаточно ли малая функция для встраивания. Однако пользователь имеет некоторый контроль над этим алгоритмом через -finline-limit. Прочтите руководство по gcc, чтобы найти нужные значения.

При встраивании функций вы должны помнить, что, очевидно, не все функции могут быть встроены (самый простой пример - рекурсивные функции), и компилятор может включать только функции, определенные в одном и том же модуле перевода. Кроме того, стоит отметить, что -finline-functions по умолчанию включено в -O3, так что просто -O3 может иногда быть вашим решением.

В make-файле вам нужно будет добавить правильные параметры для всех вызовов gcc. В хорошо написанном make-файле вы легко найдете переменные с другими опциями gcc, где вы можете просто разместить свой собственный.

1 голос
/ 21 мая 2010

Опция gcc -finline_functions звучит так, как будто она может делать то, что вы хотите. Вот некоторая документация . Если ваш make-файл определяет переменную CFLAGS, это будет место для его размещения.

...