本附录列出了 Fortran 编译器的此发行版和最近的发行版中的新增和更改的功能。
Oracle Solaris Studio Fortran 95 编译器 8.7 版是 Oracle Solaris Studio 12.4 发行版中的一个组件。
用于 x86 上的 Intel Ivy Bridge 处理器的新的 -xarch、-xchip 和 -xtarget 值。
用于 SPARC T5、M5、M6 和 M10+ 处理器的新的 -xarch、-xchip 和 -xtarget 值。
支持 Ivy Bridge 汇编程序指令。
支持 Ivy Bridge 内部函数,可在 solstudio-install-dir/lib/compilers/include/cc/immintrin.h 中找到这些函数。
-xarch=generic 的缺省值针对 x86 上的 -m32 设置为 sse2。
支持 x86 上的 -xlinkopt。对适用于现代 Intel 处理器的大型企业应用程序进行的模块间、过程间代码排序优化。大型应用程序中的完全优化的二进制代码使性能提升了 5%。
增强的 -xs 选项,用于在可执行文件大小与为了调试而保留对象文件的需求之间进行权衡。
支持 Linux 上的 -xanalyze 和 -xannotate。
支持 -fopenmp 与 -xopenmp=parallel 等效。
对使用模块的应用程序进行编译的时间有明显改进,消除了由于模块处理而导致的内存溢出。
#pragma ident 可用于源文件中,以识别编译对象的源版本。
支持延迟类型参数(冒号)作为在声明中使用的字符类型中的 LEN 类型参数。例如:
character(LEN=:), pointer :: str
支持过程指针。
支持 Fortran 2003 标准中 ISO_C_BINDING 模块的 C_F_PROCPOINTER 函数。C_FUNLOC 函数扩展为允许过程指针作为参数。
支持 Fortran 2003 功能的 ABSTRACT 接口。
完全支持面向对象的 Fortran。现在允许使用具有 GENERIC、DEFERRED、NON_OVERRIDABLE、PASS 和 NOPASS 属性的类型绑定过程。
支持 Fortran 2003 功能,使派生类型和通用函数有相同的名称。
支持 Fortran 2008 功能,允许将 TARGET 对象传递到 INTENT(IN) 指针哑元。
支持 Fortran 2003 功能,允许在派生类型中完成例程。
新编译器选项:
-fma,启用自动生成浮点混合乘加指令。
-fserialio,指定程序不能一次在多个线程中执行 I/O。
(x86) -preserve_argvalues,在堆栈中保存基于寄存器的函数参数的副本。
-xdebuginfo,控制发出多少调试和监测信息。
-xglobalize,控制文件静态变量的全局化,但是不控制函数的全局化。
-xinline_param,可用于更改编译器用来确定何时内联函数调用的试探式方法。
-xinline_report,在编译器内联函数时生成报告并写入标准输出。
-xipo_build,通过避免在初始传递期间通过编译器进行优化(仅在链接时优化)而缩短编译时间。
-xkeep_unref,保留未引用函数和变量的定义。
-keepmod,保留编译时未发生更改的模块。缺省值是 -xkeepmod=yes,它代替了每次创建新模块文件时的旧行为,即使与上次编译相比没有任何变化。
-xM,自动生成 makefile 依赖性。与新的 -keepmod=yes 选项结合使用,允许使用模块在 Fortran 应用程序上实现最佳增量生成。
-xpatchpadding,在各函数启动之前保留内存区域。
(Oracle Solaris) -xsegment_align,使驱动程序在链接行上包括特殊映射文件。
-xthroughput,指示当多个进程同时在系统上运行时运行应用程序。
-xunboundsym,指定程序是否包含对动态绑定符号的引用。
自从 2005 年发行 Sun Studio 10 以来,Studio Fortran 编译器就没有使用 SPARC 平台上的库 libfmaxlai、libfmaxvai、libfminlai、libfminvai、libfprodai 和 libfsumai。
未来的发行版中将删除这些库。到那时候,将不再使用由 Sun Studio 10 发行版之前的 Studio 编译器生成的对象文件和可执行文件,并且必须在更新的 Studio 编译器中对这些文件重新进行编译。如果您有需要使用任何这些库的旧对象文件和可执行文件,但重新编译又不可行,则应保留旧编译器安装,或将所需的特定库从旧编译器安装复制到新编译器安装。
Oracle Solaris Studio Fortran 95 编译器 8.6 版是 Oracle Solaris Studio 12.3 发行版中的一个组件。
Fortran 运行时库现在支持大于 2GB 的连续访问无格式记录。
支持新 SPARC T4 平台:—xtarget=T4, —xchip=T4, —xarch=sparc4
支持新的 x86 平台 Sandy Bridge / AVX:—xtarget=sandybridge —xchip=sandybridge —xarch=avx
支持新的 x86 平台 Westmere / AES:—xtarget=westmere —xchip=westmere —xarch=aes
新编译器选项:—Xlinker arg 将参数传递给链接程序 ld(1)。与 —Wl,arg 等效。(-Xlinker arg)
OpenMP 缺省线程数 OMP_NUM_THREADS 现在为 2(过去为 1)。(–xopenmp[={parallel|noopt|none}])
支持 OpenMP 3.1 共享内存并行化规范。(–xopenmp[={parallel|noopt|none}])
使用 —library=sunperf 可链接到 Sun 性能库。这将废弃 -xlic_lib=sunperf。(-library=sunperf)
内部函数例程 LEADZ、POPCNT 和 POPPAR 以前的返回类型与参数类型相同。在此发行版中,为符合 Fortran 2008 标准,这些内部函数将返回一个缺省整数,无论参数为何种类型。这引入了与以前发行版的轻微不兼容性。
现在支持与多态性相关的面向对象的 Fortran 功能:
支持的 OOF 功能:类型扩展和多态实体:CLASS 语句、无限制多态性、SELECT TYPE 构造、ABSTRACT 派生类型、EXTENDS_TYPE_OF 和 SAME_TYPE_AS 内部函数,以及到无限制指针的序列类型分配。
不支持的 OOF 功能:typebound 过程:typebound PROCEDURE 声明、GENERIC、DEFERRED、NON_OVERRIDABLE、PASS、NOPASS。
其他 F2003/2008 新增功能:
增强的结构构造函数:使用组件名称构造结构常量。
模块派生类型和组件上的增强 PUBLIC/PRIVATE 访问控制。
更多 Fortran 2008 数学内部函数支持。在 x86 平台上,除了 ERFC_SCALED、NORM2 以及某些 REAL*16 变量外,现在多数 Fortran 2008 数学内部函数都受支持。
不带组件的派生类型。
KIND 参数已添加到 ICHAR、IACHAR、ACHAR、SHAPE、UBOUND、LBOUND、SIZE、MINLOC、MAXLOC、 COUNT、LEN、LEN_TRIM、INDEX、SCAN 和 VERIFY 内部函数中。
BACK 参数已添加到 MINLOC 和 MAXLOC 内部函数中。
添加了新的内部函数 FINDLOC 和 STORAGE_SIZE。
新的关键字 ERRMSG、SOURCE 和 MOLD 已添加到 ALLOCATE 语句中,ERRMSG 已添加到 DEALLOCATE 语句中。
Oracle Solaris Studio Fortran 95 编译器 8.5 版是 Oracle Solaris Studio 12.2 发行版中的一个组件。
支持 SPARC VIS3 版本的 SPARC-V9 指令集。如果使用 -xarch=sparcvis3 选项进行编译,编译器可以使用 SPARC-V9 指令集、UltraSPARC 扩展(包括可视指令集 (Visual Instruction Set, VIS) 版本 1.0)、UltraSPARC-III 扩展(包括可视指令集 (Visual Instruction Set, VIS) 版本 2.0)、混合乘加指令和可视指令集 (Visual Instruction Set, VIS) 版本 3.0)中的指令。
在基于 x86 的系统上,-xvector 选项的缺省值已更改为 -xvector=simd。在基于 x86 的系统上,缺省情况下以可产生有利结果的优化级别 3 和更高级别使用流扩展。可以使用子选项 no%simd 将其禁用。在基于 SPARC 的系统上,缺省值为 -xvector=%none。请参见-xvector[=a]。
现在提供了对 AMD SSE4a 指令集的支持。使用 -xarch=amdsse4a 选项进行编译。
新增的 -traceback 选项使可执行文件在出现严重错误时显示堆栈跟踪。使用此选项时,可执行文件将捕获一组信号,并显示堆栈跟踪和信息转储,然后退出。如果多个线程都生成一个信号,则只为第一个线程生成堆栈跟踪。要使用回溯,请在使用 f95、cc 或 CC 链接程序时添加 -traceback 选项。为了方便起见,也可在编译时接受此选项,但是会将其忽略。将 -traceback 选项与 -G 选项结合使用来创建共享库的做法是错误的。请参见–traceback[={%none|common|signals_list}]。
-mt 选项已更改为 -mt=yes 或 -mt=no。-mt=yes 选项确保按正确的顺序链接库。请参见-mt[={yes|no}]
-xprofile=tcov 选项经过增强,支持可选的分析目录路径名,还能够生成与 tcov 兼容的反馈数据。请参见–xprofile=p。
新增的 -xkeepframe[=[%all,%none ] 选项禁止对指定的函数进行与堆栈相关的优化。%all 禁止对所有代码进行与堆栈相关的优化。%none 允许对所有代码进行与堆栈相关的优化。缺省值为 -xkeepframe=%none。请参见–xkeepframe[=[%all,%none,name,no%name]]。
已经实现了其他 F2003 功能。请参见Fortran 200x 功能。
IVDEP 指令指示编译器忽略在循环中找到的部分或全部对数组引用的循环附带依赖性,以进行优化。这样,编译器将可以执行通过其他方式不能实现的各种循环优化。-xivdep 选项可用于禁用 IVDEP 指令或确定应如何解释指令。请参见IVDEP 指令。
对于编译器在 x86 平台上的 Solaris OS 或者 Linux OS 上创建的对象文件,如果应用程序代码包含参数或返回值为 _m128/_m64 数据类型的函数,则这些对象文件与先前版本的编译器不兼容。使用 .il 内联函数文件、汇编程序代码或调用这些函数的 asm 内联语句的用户,也需要了解这些不兼容的情况。
新增 x86 —xtarget 值 woodcrest、penryn、nehalem。
新增 SPARC —xtarget 值 ultraT2plus 和 sparc64vii。
新增 x86 —xarch 和 —xchip 值 ssse3、sse4_1、sse4_2、core2、penryn、nehalem、barcelona。
新增 SPARC —xarch 和 —xchip 值 sparcima、sparc64vii 和 ultraT2plus。
-xprofile=collect 和 -xprofile=use 选项在多线程动态链接应用程序的分析方面提供了改进的支持功能。
在 Solaris 平台上,-xpec[=yes|no] 选项会生成可重新编译用于自动调优系统 (Automatic Tuning System, ATS) 的 PEC 二进制文件。
现在,针对 -xO3 或更高优化级别隐式启用了 -xdepend 选项,该选项不再包括在 -fast 选项的扩展中。
支持 OpenMP 3.0 任务处理。
-xannotate[=yes|no](仅限 SPARC 平台)指示编译器创建稍后可用 binopt(1) 等二进制修改工具转换的二进制文件。
四精度 (REAL*16) 已在 x86 平台上实现。REAL*16 是 128 位 IEEE 浮点。
编译器通常会在 /tmp 目录中创建临时文件。可以通过设置 TMPDIR 环境变量来指定其他目录。
cpu_time() Fortran 内例程的行为在 Solaris 和 Linux 平台之间有所不同。
Fortran 2003 IMPORT 语句现已实现。
目前,Fortran 编译器适用于以下 Linux(x86 和 x64)分发包:SuSe Linux Enterprise Server 9 with Service Pack 3(或更新版本)、Red Hat Enterprise Linux 4 以及其他基于 2.6 内核的 Linux 分发包(尽管不会对这些分发包提供正式支持)。
使用 -m64 创建 64 位可执行文件和共享库。
使用 -xarch 新标志替换已过时的标志。
-xtarget 和 -xchip 的新值为 UltraSPARC T2 和 SPARC64VI 处理器提供代码生成功能。
-fma=fused 新标志允许在支持混合乘加指令的处理器上生成这些指令。
-xhwcprof 新标志为数据空间分析启用编译器支持。
-xinstrument 新标志使线程分析器支持性能分析。
-xregs=frameptr 已添加至 x86 的 -fast。
提供 -xarch=sse2 和 -xia 选项支持在 Solaris x86 平台上执行区间运算。
x86 平台和 SPARC 平台均接受显式预取指令。(—xprefetch=explicit)
调试信息的缺省格式由 "stabs" 标准格式更改为 "dwarf" 标准格式。(-xdebugformat=dwarf)。
新的 -xmodel 选项:使用新的 -xmodel 选项,可以在 64 位 AMD 体系结构上指定内核、小型或中型内存模型。如果全局变量和静态变量的大小超过 2 GB,请指定 -xmodel=medium。否则,请使用缺省设置 -xmodel=small。请参见–xmodel=[small | kernel | medium]。
为 x86 SSE2 平台扩展的 -xvector 选项:使用 -xvector 选项,可以自动生成向量库函数调用和/或生成 SIMD(Single Instruction Multiple Data,单指令多数据)指令。现在,此选项在 x86 SSE2 平台上提供扩展的语法。
STACKSIZE 环境变量已增强:STACKSIZE 环境变量的语法已加以改进,可以包括单位关键字。
-xpagesize 选项在 x86 平台上可用:现在,在 x86 平台以及 SPARC 上,启用了 -xpagesize、-xpagesize_heap 和 -xpagesize_stack 选项。请参见–xpagesize=size。
启用了新的 UltraSPARC T1 和 UltraSPARC IV+ 目标:-xarch、-xchip、-xcache 和 -xtarget 的值支持新的 UltraSPARC 处理器。请参见–xtarget=t。