c++ - GCC 是否优化调用约定

标签 c++ gcc compiler-optimization calling-convention

我想知道,是否可以显式指定自定义调用约定,但考虑到编译器中发现的成熟度和优化数量,当未指定调用约定时,我是否可以期望编译器为特定函数,例如,如果参数很少且原始,则使用 fastcall 等...

最佳答案

这是一个“约定”是有原因的。每个人都必须遵守约定,否则您无法从另一个模块调用您的函数。

但是,如果函数不可见,则 GCC 有选项。它可以内联函数或按需要调用它。它甚至可能将其拆分为“热”和“冷”部分,并内联热代码路径。这通常只发生在使用配置文件引导优化进行构建时。

如果您希望 GCC 进行这样的优化,请努力隐藏您的函数。如果您正在构建可执行文件,请查看 -fwhole-program。如果您正在构建库,请查看 -fvisibility=hidden。另请查看 -flto。

关于c++ - GCC 是否优化调用约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22331244/

相关文章:

java - 为什么优化的素因子计数算法运行速度较慢

algorithm - 是否存在从表达式中提取子表达式的算法?

c++ - Qt 中的正则表达式不匹配它应该匹配的字符串

c++ - 在 C++ 中删除 char 的动态数组

c++ - 将 const 字符串添加到非 const 字符串是否会给出一个 const 字符串

c++ - C++ 中的字符指针

gcc - 哪些 GCC 优化标志和技术跨 CPU 是安全的?

c - 如何避免 gcc 编译器使用 -l 选项?

c - 最小 C 程序中对 "main"的 undefined reference

c++ - 如何优化和提高这个涉及浮点运算的特定代码的效率?