Oracle® Solaris Studio 12.4:Fortran 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

3.4.46 –inline=[%auto][[,][no%]f1,…[no%]fn]

启用或禁用指定例程的内联。

请求优化器对出现在函数和子例程名称列表(用逗号分隔)中的用户编写例程进行内联。 在例程名之前加上 no% 可禁用对该例程的内联。

内联是一种优化方法,编译器可以通过该方法有效地将子程序引用(如 CALL 或函数调用)替换为实际的子程序代码本身。 内联通常为优化器提供更多生成高效代码的机会。

指定 %auto 可以在优化级别 -O4-O5 上启用自动内联。如果使用 -inline 指定了显式内联,则这些优化级别的自动内联会正常关闭。

如果在未指定任何函数或 %auto 的情况下指定了 -xinline=,则表示不内联源文件中的任何例程。

示例:对 xbarzbarvpoint 例程进行内联:

demo% f95 -O3 -inline=xbar,zbar,vpoint *.f

下面是一些限制;不发出任何警告:

  • 必须在 -O3 或更高级别进行优化。

  • 例程的源代码必须位于所编译的文件中,除非还指定了 -xipo–xcrossfile

  • 编译器确定实际内联是否有利和安全。

-inline-O4 一起使用可禁用编译器通常执行的自动内联,除非还指定了 %auto。如果使用 -O4,则编译器通常会尝试对用户编写的所有适当的子例程和函数进行内联。-inline-O4 一起使用可能会降低性能,因为优化器只能对列表中的那些例程进行内联。在这种情况下,请使用 %auto 子选项启用 -O4-O5 级别的自动内联。

demo% f95 -O4 -inline=%auto,no%zpoint *.f

在上例中,用户在禁止对编译器可能尝试的例程 zpoint() 进行任何可能的内联的同时,还启用了 -O4 级别的自动内联。