#pragma option_override
适用的调用
| 编译指示 (pragma) | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
#pragma option_override |
✓ | ✓ | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
用途
允许您在子程序级别指定优化选项,以覆盖命令行上指定的优化选项。
这支持对程序优化进行更精细的控制,并且可以帮助调试仅在优化下发生的错误。
语法
参数
- 标识
- 要覆盖其优化选项的函数的名称。
下表显示了每个编译指示子选项的等效命令行选项。
| #pragma option_override 值 | 等效编译器选项 |
|---|---|
| 级别, 0 | -O1 |
| 级别, 2 | -O21 |
| 级别, 3 | -O32 |
| registerspillsize , 大小 | -qspill=大小 |
| 大小 | -qcompact |
| 大小,是 | |
| 大小,否 | -qnocompact |
| strict | -qstrict 和 -qstrict=all |
| strict 和 yes | |
| 严格,不 | -qnostrict |
| 严格, suboption_list | -qstrict=suboption_list |
备注信息:
- 如果在命令行上指定了优化级别 -O3 或更高 ,那么
#pragma option_override(identifier, "opt(level, 0)")或#pragma option_override(identifier, "opt(level, 2)")不会关闭 -qhot 和 -qipa 选项的含义。 - 指定 -O3 意味着 -qhot=level=0。 但是,在源代码中指定
#pragma option_override(identifier, "opt(level, 3)")并不意味着 -qhot=level=0。
缺省值
请参阅上表中列出的选项的描述以了解缺省设置。
使用量
仅当命令行选项已启用优化时,编译指示才会生效。 只能在编译程序 低于 的编译程序的其余部分中指定优化级别。
#pragma option_override 伪指令仅影响在同一编译单元中定义的函数。 pragma 伪指令可以出现在转换单元中的任何位置。 即,它可以出现在函数定义之前或之后,在函数声明之前或之后,在函数被引用之前或之后,以及在函数定义内部或外部。
此实用程序不能用于重载的成员函数。
示例
假设您使用 -O2编译包含函数 foo 和 faa 的以下代码片段。 由于它包含 #pragma option_override(faa, "opt(level, 0)"),因此将不会优化函数 faa 。
foo(){
.
.
.
}
#pragma option_override(faa, "opt(level, 0)")
faa(){
.
.
.
}