我正在尝试让GCC在一个特定函数中内联所有调用,并优化它,而不管全局优化设置如何。 flatten
属性似乎做了我想要的,但只有当整个源文件使用相同的-O设置进行编译时。当同时指定__attribute__((flatten, optimize("O2")))
时,如果源文件的其余部分使用除-O2之外的任何其他设置进行编译,则GCC显然会忽略flatten属性。
这个特定的函数是一个中断例程,我需要确保整个函数包含在一个连续的内存块中。唯一的函数调用是__builtin_ia32_rdtsc()
(仅包含rdtsc
和ret
)和两个std::atomic
操作。
因此,正如标题所说,有没有办法强制这些调用内联和优化?