强制 GCC 扁平化和优化一个功能?

use*_*231 5 c++ optimization gcc inline

我试图让 GCC 内联一个特定函数中的所有调用,并不管全局优化设置如何对其进行优化。这flatten属性似乎符合我的要求,但仅当使用相同的 -O 设置编译整个源文​​件时。当指定 both 时__attribute__((flatten, optimize("O2"))),如果源文件的其余部分是使用 -O2 以外的任何其他设置编译的,则 GCC 显然会忽略 flatten 属性。

这个特定的函数是一个中断例程,我需要确保整个函数包含在一个连续的内存块中。唯一的函数调用是 to __builtin_ia32_rdtsc()(它只包含rdtscret)和两个std::atomic操作。

那么,正如标题所说,有没有办法强制这些调用被内联和优化?