ZHCUAQ1F july 2015 – april 2023
当使用 --opt_level=3 选项(别名为 -O3)进行优化时,编译器自动内联小函数。命令行选项 --auto_inline=size 指定自动内联的大小阈值。此选项仅控制未明确声明为内联的函数的内联。
当未使用 --auto_inline 选项时,编译器根据优化级别和优化目标(性能与代码大小)设置大小限制。如果 -auto_inline size 参数设置为 0,则禁用自动内联扩展。如果 --auto_inline size 参数设置为非零整数,则编译器自动内联任何小于 size 的函数。(这是对以前版本的更改;以前的版本会内联那些函数大小与函数调用次数的乘积小于size 的函数。新方案更简单,但通常会对给定的 size 值进行更多的内联。)
编译器以任意单位测量函数的大小;但是,优化器信息文件(使用 --gen_opt_info=1 或 --gen_opt_info=2 选项创建)报告 --auto_inline 选项使用的相同单位中每个函数的大小。当使用 --auto_inline 时,编译器不会试图阻止导致编译时间或大小过度增长的内联;故请小心使用。
当未使用 --auto_inline 选项时,在特定调用点内联函数的决策是基于试图优化效益和成本的算法。编译器在调用点内联符合条件的函数,直至达到有关大小或编译时间的限制。
内联行为因指定的编译时选项而异:
有关影响内联的命令行选项、pragma 和关键字之间的交互信息,请参阅节 3.11。