用于 -xinline 的 list 的格式如下所示:[{%auto,func_name ,no%func_name}[,{%auto ,func_name,no%func_name }]...]
-xinline 尝试只内联可选列表中指定的函数。该列表可为空,或者由逗号分隔的 func_name、no%func_name 或 %auto 列表组成,其中 func_name 是函数名称。仅在 -xO3 或更高级别上,-xinline 才起作用。
表 B–25 -xinline 标志
标志 |
含义 |
---|---|
%auto |
指定编译器将尝试自动内联源文件中的所有函数。仅在 -xO4 或更高优化级别上,%auto 才起作用。在 -xO3 或更低优化级别上,%auto 被忽略而无提示。 |
func_name |
指定编译器内联已命名的函数。 |
no%func_name |
指定编译器不内联已命名的函数。 |
该列表值从左至右进行累积。因此对于 -xinline=%auto,no%foo 的规范,编译器试图内联除 foo 之外的所有函数。对于 -xinline=%bar,%myfunc,no%bar 的规范,编译器仅尝试内联 myfunc。
在优化级别为 -xO4 或更高级别上编译时,编译器通常尝试内联源文件中定义的对函数的所有引用。通过指定 -xinline 选项,您可以限定编译器试图内联的函数集。如果只指定 -xinline=,即不指定任何函数或 %auto,这表示不内联源文件中的任何例程。如果您指定了一系列 func_name 和 no%func_name,而未指定 %auto,则编译器只试图内联列表中指定的函数。如果在优化级别设置为 -xO4 或更高级别时用 -xinline 选项在值列表中指定 %auto,编译器将试图内联所有未被 no%func_name 显式排除的函数。
如果以下任何条件适用,则不内联函数。且不发出任何警告。
优化级别低于 -xO3。
无法找到例程。
优化器无法内联例程。
正编译的文件中不存在该例程的源代码(请参见 -xcrossfile)。
如果在命令行指定多个 -xinline 选项,它们将不会累积。命令行上的最后一个 -xinline 指定编译器试图内联的函数。
另请参见 -xldscope。