У меня есть проект Makefile, чтобы скомпилировать кучу C-файлов.Все файлы в проекте скомпилированы с нулевым уровнем оптимизации, но некоторые функции требуют уровня оптимизации 2 (O2).Все те функции, которым требуется уровень оптимизации 2, всегда используют статическую встроенную функцию из файла заголовка.
Мое требование заключается в том, чтобы, когда функция использует эту встроенную функцию из файла заголовка, она должна автоматически менять уровень оптимизации с O0 на O2.,Есть ли какое-либо положение в GCC, которое выполняет это требование?
Я попытался изменить уровень оптимизации каждой функции, которая использует встроенную функцию, добавив атрибут GCC, __attribute__((optimize("O2")))
, и он работает хорошо.Но эта встроенная функция используется более чем в 200 местах в моем проекте, и я должен изменить оптимизацию функции, используя вышеуказанную стратегию, в более чем 200 местах, что не выглядит хорошим решением для меня
include "foo.h"
void abc ()
{
....
}
void __attribute__((optimize("O2"))) foo()
{
...
"uses inline function from foo.h"
}
abc
компилируется с оптимизацией 0 из командной строки GCC.Необходимо foo()
для компиляции с оптимизацией O2 без опции атрибута GCC.Я также попытался добавить атрибут GCC к действующей встроенной функции, но это не влияет на оптимизацию foo.