Oracle® Solaris Studio 12.4:Fortran 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

3.4.74 –pad[=p]

插入填充以便提高高速缓存的使用效率。

如果数组或字符变量是静态的局部数组或变量且未初始化,或者位于通用块中,则此选项在数组之间或字符变量之间插入填充。额外填充将数据定位以便更好地利用高速缓存。在任意一种情况下,数组或字符变量都不能是等效的。

如果 p 存在,则 p 必须为 %none,或者为 localcommon 之一(或两者):

local
在邻近的局部变量之间添加填充。
common
在通用块中的变量之间增加填充。
%none
不增加填充。(编译器缺省值。)

如果同时指定了 localcommon,则它们可以以任意顺序显示。

-pad 的缺省值:

  • 缺省情况下编译器不进行填充。

  • 如果指定了 -pad 但不带值,则它与 -pad=local,common 等效。

-pad[=p] 选项适用于满足以下条件的项:

  • 项是数组或字符变量

  • 项是静态本地的或处于通用块中

有关本地或静态变量的定义,请参见–stackvar

程序必须符合以下限制:

  • 数组或字符串都不是等效的

  • 如果为了对引用通用块的某个文件进行编译而指定了 -pad=common,则在对引用该通用块的所有文件进行编译时也必须指定它。此选项更改通用块内变量的间距。如果一个程序单元是使用该选项编译的,而另一个程序单元不是用该选项编译的,则在应该引用通用块中的同一位置时,可能会引用不同的位置。

  • 如果指定了 -pad=common,不同程序单元中的通用块变量的声明除变量名称之外必须相同。通用块变量之间插入的填充量取决于这些变量的声明。如果变量在不同程序单元中的大小或等级不同,即使是在同一文件内,变量的位置也可能不同。

  • 如果指定了 -pad=common,则用警告消息标记那些涉及通用块变量的 EQUIVALENCE 声明,而且不填充该块。

  • 如果指定了 -pad=common,请避免通用块中出现索引超出数组边界的情况。如果更改已填充通用块中邻近数据的位置,将导致过度索引 (overindexing) 以不可预知的方式失败。

使用 -pad 时,程序员应确保以一致的方式编译通用块。如果不同程序单元中的 common 块没有一致地使用 -pad=common 进行编译,则会导致错误。如果同名的 common 块在不同的程序单元中具有不同的长度,则将报告正在使用 -Xlist 进行编译。