内联函数被调用时,如何更改所有调用者函数的优化?

时间:2019-03-25 10:41:15

标签: c gcc

我有一个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的优化。

0 个答案:

没有答案