插入填充以便提高高速缓存的使用效率。
如果数组或字符变量是静态的局部数组或变量且未初始化,或者位于通用块中,则此选项在数组之间或字符变量之间插入填充。额外填充将数据定位以便更好地利用高速缓存。在任意一种情况下,数组或字符变量都不能是等效的。
如果 p 存在,则 p 必须为 %none,或者为 local 或 common 之一(或两者):
local |
在邻近的局部变量之间添加填充。 |
common |
在通用块中的变量之间增加填充。 |
%none |
不增加填充。(编译器缺省值。) |
如果同时指定了 local 和 common,则它们可以以任意顺序显示。
-pad 的缺省值:
缺省情况下编译器不进行填充。
如果指定了 -pad 但不带值,则它与 -pad=local,common 等效。
-pad[=p] 选项适用于满足以下条件的项:
项是数组或字符变量
项是静态本地的或处于通用块中
有关本地或静态变量的定义,请参见3.4.91 –stackvar。
程序必须符合以下限制:
数组或字符串都不是等效的
如果为了对引用通用块的某个文件进行编译而指定了 -pad=common,则在对引用该通用块的所有文件进行编译时也必须指定它。此选项更改通用块内变量的间距。如果一个程序单元是使用该选项编译的,而另一个程序单元不是用该选项编译的,则在应该引用通用块中的同一位置时,可能会引用不同的位置。
如果指定了 -pad=common,不同程序单元中的通用块变量的声明除变量名称之外必须相同。通用块变量之间插入的填充量取决于这些变量的声明。如果变量在不同程序单元中的大小或等级不同,即使是在同一文件内,变量的位置也可能不同。
如果指定了 -pad=common,则用警告消息标记那些涉及通用块变量的 EQUIVALENCE 声明,而且不填充该块。
如果指定了 -pad=common,请避免通用块中出现索引超出数组边界的情况。如果更改已填充通用块中邻近数据的位置,将导致过度索引 (overindexing) 以不可预知的方式失败。
使用 -pad 时,程序员应确保以一致的方式编译通用块。如果不同程序单元中的通用块没有一致地使用 -pad=common 进行编译,则会导致错误。如果同名的通用块在不同的程序单元中具有不同的长度,则将报告正在使用 -Xlist 进行编译。