后优化器在链接时对二进制对象代码执行一些高级性能优化。可以使用可选值来设置执行的优化级别,可选值必须为 0、1 或 2。
|
指定不带值的 -xlinkopt 标志即表示 -xlinkopt=1。
这些优化在链接时通过分析二进制对象代码来执行。虽然未重写对象文件,但生成的可执行代码可能与初始对象代码不同。
当与分析反馈一起用于编译整个程序时,此选项最有效。
如果在不同的步骤中进行编译,则 -xlinkopt 必须既出现在编译步骤中,也出现在链接步骤中。
demo% f95 -c -xlinkopt a.f95 b.f95 demo% f95 -o myprog -xlinkopt=2 a.o b.o
请注意,仅当编译器链接时才使用级别参数。在上述示例中,即使二进制对象代码是用隐含级别 1 编译的,使用的后优化级别仍然是 2。
不能将链接时后优化器与增量链接程序 ild 一起使用。-xlinkopt 标志会将缺省链接程序设置为 ld。如果使用 -xildon 标志显式启用增量链接程序,将禁用 -xlinkopt 选项(如果同时指定了二者)。
要使 -xlinkopt 选项有用,至少程序中的一些例程(但未必是全部例程)必须使用此选项编译。优化器仍可以对未使用 -xlinkopt 进行编译的二进制对象执行部分受限的优化。
-xlinkopt 选项优化出现在编译器命令行上的静态库代码,但不会优化出现在命令行上的共享(动态)库代码。生成共享库(用 -G 编译)时,您也可以使用 -xlinkopt。
-xlinkopt 选项需要分析反馈 (-xprofile) 来优化程序。分析功能会展示代码中最常用和最不常用的部分,从而使优化器相应地进行处理。链接时优化对大型应用程序尤为重要,因为在链接时执行代码优化放置可降低指令高速缓存未命中数。另外,-xlinkopt 在用于编译整个程序时最有效。此选项的用法如下所示:
demo% f95 -o progt -xO5 -xprofile=collect:prog file.f95 demo% progt demo% f95 -o prog -xO5 -xprofile=use:prog -xlinkopt file.95
有关使用分析反馈的详细信息,请参见 -xprofile 选项。
请注意,使用此选项编译会略微延长链接时间。对象文件的大小也会增加,但可执行文件的大小保持不变。如果使用 -xlinkopt 和 -g 标志进行编译,则会因包括调试信息而增加了可执行文件的大小。