最適化の範囲の制限

最適化の範囲を絞ったり、最適化を禁止したりする場合は、以下の各オプションを使います。

オプション 説明
-O0 最適化を一切禁止します。
-mp1 浮動小数点の精度を高くします。速度に与える影響は -mp より低くなります。
-fp
IA-32 のみ
汎用レジスタとしての EBP レジスタの使用を無効にします。
-prec_div
IA-32 のみ
浮動小数点除算から乗算へ変換する最適化処理を無効にします。

-fp_port
IA-32 のみ

代入&型キャスト時に浮動小数点の結果を丸めます(実行速度に少し影響があります)。
-ftz[-]
Itanium® ベース・
システムのみ
異常値の結果を0にフラッシュを有効 [無効] にします。
-IPF_fma[-]
Itanium ベース・システムのみ
浮動小数点乗算と加算/減算の組み合わせを有効[無効]にします。
-IPF_fltacc[-]
Itanium ベース・
システムのみ
浮動小数点の精度に影響する最適化を有効 [無効] にします。
-IPF_flt_eval_method0
Itanium ベース・
システムのみ
プログラムにより指定された精度で浮動小数点オペランド評が価されます。
-IPF_fp_speculation<mode>
Itanium ベース・
システムのみ
次のモード条件で浮動小数点の推測を有効にします。
  • fast - 浮動小数点演算を推測します
  • safe - 安全な場合のみ推測します
  • strict - off と同じです
  • off - 浮動小数点演算の推測を無効にします

#pragma optimizeを使用して、特定の関数のすべての最適化をオフにできます。次の例では、関数foo()ですべての最適化がオフになります。

#pragma optimize("", off)

foo(){

...

}

#pragma optimize の有効な2番目の引数は"on"または"off."です。"on" の引数を使用すると、foo() 関数は、残りのプログラム同じように最適化してコンパイルされます。コンパイラは、最初の引数の値を無視します。