我有一个Makefile项目来编译一堆C文件。项目中的所有文件均以优化级别0进行编译,但某些功能需要优化级别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
从GCC命令行以优化0进行编译。
需要foo()
才能使用不带有GCC属性选项的优化O2进行编译。
我还尝试将GCC属性添加到实际的内联函数中,但这不会影响foo的优化。