优化和调优

表 1. 优化和调整编译指示
编译指示 (pragma) 描述
基于 XL 的前端开始#pragma block_loop

使用特定于作用域的标识来标记块。

#pragma STDC CX_LIMITED_RANGE

通知编译器,仅限通过中间计算不会溢出或丢失基数的值来调用复杂除法和绝对值。

#pragma disjoint

列出未在其使用范围内彼此互为别名的标识。

#pragma execution_frequency

标记您期望执行频率非常高或非常低的程序源代码。

基于 XL 的前端开始#pragma expected_value 指定函数调用中传递的参数在运行时最有可能采用的值。 编译器可以使用此信息来执行某些优化,例如功能克隆和内联。
#pragma GCC visibility push 和 #pragma GCC visibility pop

指定对象文件中的外部链接实体的可视性属性。

基于 XL 的前端开始#pragma ibm iterations 指定所选循环的近似平均循环迭代次数。
基于 XL 的前端开始#pragma ibm max_iterations 指定所选循环的近似最大循环迭代次数。
基于 XL 的前端开始#pragma ibm min_iterations 指定所选循环的近似最小循环迭代次数。
基于 XL 的前端开始#pragma isolated_call

指定源文件中无任何副作用(其参数隐含的副作用除外)的函数。

基于 XL 的前端开始#pragma 离开

通知编译器,在调用指定的函数后,此函数从未返回指令。

基于 XL 的前端开始#pragma loopid

使用特定于作用域的标识来标记块。

基于 XL 的前端开始#pragma nosimd -qsimd=auto配合使用时,将禁止为下一个循环生成 SIMD 指令。
基于 XL 的前端开始#pragma novector -qhot=vector配合使用时,将禁用下一个循环的自动向量化。
#pragma option_override

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

#pragma reachable

通知编译器,程序中所指定函数后的点可作为来自某个未知位置的分支的目标。

基于 XL 的前端开始#pragma reg_killed_by

指定可由 #pragma mc_func 指定的函数修改的寄存器。

基于 XL 的前端开始#pragma simd_level

控制个别循环的向量指令的编译器代码生成。

基于 XL 的前端开始#pragma stream_unroll

启用优化后,将 for 循环中包含的流划分为多个流。

基于 XL 的前端开始#pragma展开

控制循环展开以提高性能。

基于 XL 的前端开始#pragma展开和融合

指示编译器尝试对嵌套的 for 循环执行 unroll 和 fuse 操作。