强制 gcc 不内联函数
Force gcc not to inline a function
我尝试通过以下方式阻止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("");
的需要,以便它们不会被优化掉。
相关文章:
- 一位朋友将模板函数缩写为clang和gcc
- 为什么 gcc 和 clang 为函数模板的实例化生成不同的符号名称?
- 带有自动参数的函数使用 GCC 编译,但不使用 Visual C++ 编译
- 无法将右值引用函数与 GCC 匹配
- 当 noexcept 函数尝试在 gcc 或 clang 中调用非 noexcept 函数时启用警告
- 在使用 GCC 4.8.5 构建的应用中对 cxx11 函数的未定义引用
- "朋友"成员函数和 GCC 与 Clang
- 使用具有默认参数的函数模板进行 decltype 会使结果混乱(一个有趣的问题或 gcc 的错误)
- 编译包含指向模板函数的指针的初始值设定项列表时,gcc 出错,但 clang 不出错
- GCC 7 中模板类的模板成员函数的专用化
- constexpr 函数的常量引用参数:gcc/msvc vs clang/icc
- GCC 能否优化具有相同主体的函数的代码大小?
- 在 gcc/clang (C++) 中获取函数范围之外的标签地址
- 如何将英特尔的数学函数库与 gcc 一起使用?
- 为什么这个自定义分配器的析构函数在 GCC/MSVS 的 stdlib 中被调用两次
- GCC 仪器 - 是否可以自动输出函数的参数?
- 给出一个方法作为回调函数(gcc 4.7.1)
- "is private within this context"被抛出用于不应是私有的函数(GCC 5.3.0,C++11)
- 如何在 EAX 和 ESI 中使用参数调用函数.GCC C++
- 返回模板类的模板函数 - GCC 编译问题 - 错误:令牌之前'<'预期非限定 ID