外联函数可以在反馈优化编译期间创建。 它们表示正常情况下不执行的代码,特别是在用于生成最终优化编译反馈的训练运行期间不执行的代码。一个典型的示例是,对来自库函数的返回值执行错误检查的代码;正常情况下从不运行错误处理代码。为改进分页和指令高速缓存行为,将这样的代码移动到地址空间的其他位置,并使其成为单独的函数。外联函数的名称对有关外联代码段的信息进行编码,包括从其提取代码的函数的名称和源代码中该段开头的行号。这些改编名称 (mangled name) 可能随发行版的不同而不同。性能分析器提供了函数名称的可读版本。
外联函数不会被真正调用,而是跳转到它们;同样,它们不返回,而是跳回。为了使该行为与用户的源代码模型更紧密地匹配,性能分析器将来自主函数的人工调用转嫁于其外联部分。
外联函数显示为常规函数,具有相应的非独占度量和独占度量。此外,外联函数的度量作为代码从中进行外联的函数的非独占度量添加。
有关反馈优化编译的更多详细信息,请参见下列手册之一中的 –xprofile 编译器选项说明: