func_spec 必须是下列值之一。
表 A–34 -xinline 值
值 |
含义 |
---|---|
%auto |
在 -xO4 或更高的优化级别上启用自动内联。此参数告知优化器它可以内联所选择的函数。请注意,如果没有指定 %auto,则在命令行上使用 -xinline=[no%]func_name... 指定显式内联后,通常会禁用自动内联。 |
func_name |
强烈请求优化器内联函数。如果函数未声明为 extern "C",则必须损坏 func_name 的值。可以对可执行文件使用 nm 命令来查找损坏的函数名。对于已声明为 extern "C" 的函数,编译器不损坏名称。 |
no%func_name |
如果为列表上的例程添加名称前缀 no%,则会禁止内联该例程。关于 func_name 的损坏名的规则也适用于 no%func_name。 |
只有使用了 -xcrossfile[=1] 时,才会链接要编译的文件中的例程。优化器决定适合内联的例程。
如果未指定 -xinline 选项,则编译器假定 -xinline=%auto。
如果指定了没有任何参数的 -xinline=,则不内联函数,而不管优化级别是什么。
要启用自动内联同时禁用内联声明为 int foo() 的函数,请使用
example% CC -xO5 -xinline=%auto,no%__1cDfoo6F_i_ -c a.cc |
要强烈要求内联声明为 int foo() 的函数,并使所有其他函数作为要内联的候选函数,请使用
example% CC -xO5 -xinline=%auto,__1cDfoo6F_i_ -c a.cc |
要强烈要求内联声明为 int foo() 的函数,且不允许内联任何其他函数,请使用
example% CC -xO5 -xinline=__1cDfoo6F_i_ -c a.cc |
优化级别低于 -xO3 时,-xinline 选项不起作用。在 -xO4 或更高的优化级别上,优化器会决定应该内联哪些函数,无需指定 -xinline 选项即可完成。另外,在 -xO4 或更高的优化级别上,编译器会尝试确定内联哪些函数可以提高性能。
如果出现以下任一情况,则不内联例程。不会省略任何警告。
优化级别低于 -xO3
无法找到例程
内联无益或不安全
源代码不在要编译的文件中,或者使用了 -xcrossfile[=1] 时,源代码不在命令行上指定的文件中
如果使用 -xinline 强制内联函数,实际上可能会降低性能。