Sun Studio 12:Fortran 用户指南

3.4.123 –xcommonchk[ ={yes|no}]

启用通用块不一致性的运行时检查

此选项提供了检测使用 TASK COMMON 及并行化的程序中的通用块不一致性的调试检查。(请参见《Fortran 编程指南》的“并行化”一章中有关 TASK COMMON 指令的讨论。)

缺省值为 -xcommonchk=no;即,用于检测通用块不一致性的运行时检查处于禁用状态,因为它会导致性能降低。请仅在程序开发和调试过程中使用 -xcommonchk=yes,而不应将其用于符合最终产品质量的程序。

使用 -xcommonchk=yes 进行编译会启用运行时检查。如果在一个源程序单元中声明为正规通用块的通用块出现在 TASK COMMON 指令上的某个其他位置,则程序将停止并显示一条错误消息,指出第一个此类不一致。不带值的 -xcommonchk-xcommonchk=yes 等效。

示例:tc.f 中缺少 TASKCOMMON 指令


demo% cat tc.f
                common /x/y(1000)
                do 1 i=1,1000
 1              y(i) = 1.
                call z(57.)
                end
demo% cat tz.f
                subroutine z(c)
                common /x/h(1000)
C$PAR TASKCOMMON X
C$PAR DOALL
                do 1 i=1,1000
1                       h(i) = c* h(i)
                return
                end
demo% f95 -c -O4 -parallel -xcommonchk tc.f
demo% f95 -c -O4 -parallel -xcommonchk tz.f
demo% f95 -o tc -O4 -parallel -xcommonchk tc.o tz.o
demo% tc
ERROR(libmtsk): inconsistent declaration of threadprivate/taskcommon
   x_: not declared as threadprivate/taskcommon at line 1 of tc.f
demo%