Sun Studio 12 Update 1:Fortran 用户指南

3.4.111 –xassume_control[ =keywords]

设置参数以控制 ASSUME pragma。

使用此标志可控制编译器处理源代码中 ASSUME pragma 的方式。

ASSUME pragma 为程序员提供了一种断言特殊信息(编译器使用这些特殊信息实现较佳的优化)的方法。可以使用可能值限定这些断言。可能值为 0 或 1 的断言将被标记为“确定”,否则视为不确定。

也可以使用可能性或确定性来断言将要执行的 DO 循环的行程计数,或断言将要采取的分支。

有关 f95 编译器可识别的 ASSUME pragma 的说明,请参见2.3.1.8 ASSUME 指令

-xassume_control 选项上的 keywords 可以是一个子选项关键字,也可以是关键字的逗号分隔列表。可以识别的关键字子选项如下:

optimize

ASSUME pragma 上作出的断言会影响程序的优化。

check

编译器生成用于检查标记为“确定”的所有断言是否正确的代码,并在断言被违反时发出运行时消息;如果没有同时指定 fatal,则程序继续运行。

fatal

check 一起使用时,如果标记为“确定”的断言被违反,则程序将终止。

retrospective[:d]

d 参数是可选的容差值,它必须是小于 1 的正实数常量。缺省值为 ".1"。retrospective 编译代码以确定所有断言的真假。那些超出容差值 d 的值将在程序终止时的输出中列出。

%none

忽略所有的 ASSUME pragma。

编译器的缺省值是

-xassume_control=optimize

这意味着,编译器可识别 ASSUME pragma,而且后者将影响优化,但不进行检查。

如果指定不带参数的 -xassume_control,则隐含

-xassume_control=check,fatal

在这种情况下,编译器接受并检查所有确定的 ASSUME pragma,但是后者不影响优化。无效的断言将导致程序终止。