Oracle Solaris Studio 12.2 发行版的新增功能

Fortran

在此 f95 编译器发行版中应注意以下问题:

f95 编译器的早期发行版引入了某些不兼容性,并被此编译器发行版所继承,如果您是从 f95 早期发行版进行更新,应注意这一点。请注意下面的不兼容性:

数组内部函数使用全局寄存器:

数组内部函数 ANY、ALL、COUNT、MAXVAL、MINVAL、SUM、PRODUCTDOT_PRODUCTMATMUL 针对相应 SPARC 平台体系结构进行了高度优化。因此,它们使用全局寄存器 %g2、%g3%g4 作为临时寄存器。

如果调用了上述所列的数组内在函数,则用户代码不应该认为这些寄存器可用于暂时存储。当调用数组内在函数时,这些寄存器中的数据将被覆盖。

归档库中的 f95 模块不包括在可执行文件中:

调试器 dbx 要求编译中使用的所有目标文件都包含在可执行文件中。通常,无需用户执行额外操作,程序即可满足此要求。但使用含有模块的归档文件时例外。如果程序使用了一个模块,但没有引用模块中的任何过程或变量,则产生的目标文件不会包含对模块中定义的符号的引用。仅当引用目标文件中定义的符号时,链接程序才会链接归档文件中的目标文件。如果不存在此类引用,目标文件将不包括在可执行文件中。当 dbx 尝试查找与使用的模块相关联的调试信息时,将发出警告。对于缺少调试信息的符号,则无法提供有关这些符号的信息。

使用 -u 链接程序选项可以解决这个问题。此选项使用一个符号作为其选项参数。它会将该符号添加到未定义的链接程序符号集中,这就需要解析此符号。与模块关联的链接程序符号通常是模块名称,其所有字母均为小写,后面跟有一条下划线。

例如,为了强制包含模块 MODULE_1 的目标文件被归档文件采用,请指定链接程序选项 -u module_1_。如果使用 f95 命令进行链接,请在命令行上使用 -Qoption ld -umodule_1_