GCC是否优化了调用约定
Does GCC optimize calling conventions
我想知道,有可能显式指定自定义调用约定,但考虑到编译器中发现的成熟和优化量,当没有指定调用约定时,我可以期望编译器为特定函数选择最好的一个,例如,如果参数很少,原始使用fastcall等等…
这是有原因的。每个人都必须遵守约定,否则你就不能从另一个模块调用你的函数。
但是,如果函数不可见,那么GCC有选项。它可以内联函数,也可以随意调用函数。它甚至可以将其分为"热"answers"冷"部分,并内联热代码路径。这通常只发生在使用配置文件引导优化构建时。
如果你想让GCC做这样的优化,努力隐藏你的函数。如果您正在构建一个可执行文件,请查看-fwhole-program。如果您正在构建库,请查看-fvisibility=hidden。同时查看-flto.
相关文章:
- 为什么在 x64 中忽略__stdcall调用约定?
- 窗口调用约定
- 我应该提到纯虚函数中的调用约定吗?
- 如何使用gcc指定stdcall调用约定
- Clang:x86 FPU调用约定
- 该标准是否说明了例外和不同调用约定的共存
- Clang++的InterlockedExchange的32位调用约定错误,但MSVC可以
- std::sort & comp - 调用约定?
- 如何为类 /块 /范围选择C 调用约定
- DLL 的"good"调用约定是什么?
- 结构中重载运算符的调用约定
- 'ShowSUM':__declspec(dllexport)不能应用于具有__clrcall调用约定的函数
- x86-64 调用约定中的返回值
- 内联功能和调用约定
- 正在直接显示筛选器中调用约定
- 何时使用`__fastcall`调用约定
- 为C++结构定义显式析构函数如何影响调用约定
- 由于使用 MFC 时"__cdecl"和"__thiscall"调用约定不匹配而导致的链接器错误?
- Microsoft Visual C++是否未使用带有浮点的C/C++调用约定
- 在Visual Studio中调用约定