我尝试通过以下方式阻止 gcc 内联函数:
template <typename T, precision P> __attribute__ ((noinline))
void func () {}
但它仍然内联函数。
有办法强制吗?
问候
让 gcc 相信这个函数有副作用:
template <typename T, precision P> __attribute__ ((noinline))
void func () {
asm volatile("");
}
__attribute__((noipa))
禁用比内联更多的优化。特别是,它还会禁用注意到函数是纯函数的优化(因此除非使用返回值,否则可以删除调用)。文档__attribute__((noinline))
明确提到了空函数和添加的需要,例如asm("");
,它们不会被优化掉。