GCC是否优化了调用约定

Does GCC optimize calling conventions

本文关键字:调用 约定 优化 是否 GCC      更新时间:2023-10-16

我想知道,有可能显式指定自定义调用约定,但考虑到编译器中发现的成熟和优化量,当没有指定调用约定时,我可以期望编译器为特定函数选择最好的一个,例如,如果参数很少,原始使用fastcall等等…

这是有原因的。每个人都必须遵守约定,否则你就不能从另一个模块调用你的函数。

但是,如果函数不可见,那么GCC有选项。它可以内联函数,也可以随意调用函数。它甚至可以将其分为"热"answers"冷"部分,并内联热代码路径。这通常只发生在使用配置文件引导优化构建时。

如果你想让GCC做这样的优化,努力隐藏你的函数。如果您正在构建一个可执行文件,请查看-fwhole-program。如果您正在构建库,请查看-fvisibility=hidden。同时查看-flto.