C ユーザーズガイド

-fsimple[=n]

オプティマイザが浮動小数点演算に関する前提事項を単純化できるようにします。

n を指定する場合は、0、1、2 のいずれかでなければなりません。デフォルトは次のとおりです。

-fsimple=0

前提事項の単純化を行えないようにします。厳密に IEEE 754 に準拠します。

-fsimple=1

適度の単純化を行えるようにします。生成されるコードは IEEE 754 に厳密には準拠しませんが、大部分のプログラムの数値結果は変化しません。

-fsimple=1 を指定すると、オプティマイザは以下の事項を前提とします。

-fsimple=1 を指定した場合は、オプティマイザは必ず四捨五入や数値例外に応じた処理を行います。特に浮動小数点演算は、実行時に定数化される四捨五入モードでは異なる結果を生じる演算と、置き換えることはできません。-fast マクロフラグを使用すると、-fsimple=1 に設定されます。

-fsimple=2

高度な浮動小数点最適化を行うことができ、丸めの変化によって、多くのプログラムが異なる数値結果を生じる可能性があります。たとえば、オプティマイザはあるループ内に x/y の演算があった場合、x/y がループ内で少なくとも 1 回は必ず評価され、ループの実行中に y と z(=1/y) が一定の値をとると判断できると、x/y の演算をすべて x*z で置き換えることができると仮定します。

本来浮動小数点例外を発生しないプログラムならば、-fsimple=2 を指定してもオプティマイザが浮動小数点例外を発生させることはありません。