#pragma option_override

适用的调用

表 1. 接受给定编译指示的调用
编译指示 (pragma) xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
#pragma option_override
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

优化和调整

用途

允许您在子程序级别指定优化选项,以覆盖命令行上指定的优化选项。

这支持对程序优化进行更精细的控制,并且可以帮助调试仅在优化下发生的错误。

语法

读取语法图跳过可视语法图#pragmaoption_override (标识," opt(level, 023 )"))
读取语法图跳过可视语法图#pragmaoption_override (标识 ,"opt(size, yes, nolevel,023registerspillsize,大小strict,yesnosuboption_list)" )

参数

标识
要覆盖其优化选项的函数的名称。

下表显示了每个编译指示子选项的等效命令行选项。

#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
备注信息:
  1. 如果在命令行上指定了优化级别 -O3 或更高 ,那么 #pragma option_override(identifier, "opt(level, 0)")#pragma option_override(identifier, "opt(level, 2)") 不会关闭 -qhot-qipa 选项的含义。
  2. 指定 -O3 意味着 -qhot=level=0。 但是,在源代码中指定 #pragma option_override(identifier, "opt(level, 3)") 并不意味着 -qhot=level=0

缺省值

请参阅上表中列出的选项的描述以了解缺省设置。

使用量

仅当命令行选项已启用优化时,编译指示才会生效。 只能在编译程序 低于 的编译程序的其余部分中指定优化级别。

#pragma option_override 伪指令仅影响在同一编译单元中定义的函数。 pragma 伪指令可以出现在转换单元中的任何位置。 即,它可以出现在函数定义之前或之后,在函数声明之前或之后,在函数被引用之前或之后,以及在函数定义内部或外部。

仅限 C + + 此实用程序不能用于重载的成员函数。

示例

假设您使用 -O2编译包含函数 foofaa 的以下代码片段。 由于它包含 #pragma option_override(faa, "opt(level, 0)"),因此将不会优化函数 faa

foo(){
     .
     .
     .
     }

#pragma option_override(faa, "opt(level, 0)")

faa(){
     .
     .
     .
     }

相关信息