ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: C ユーザーガイド Oracle Solaris Studio 12.3 Information Library (日本語) |
2.11.3 does_not_read_global_data
2.11.5 does_not_write_global_data
2.11.26 warn_missing_parameter_info
2.14.5 __FUNCTION__ と __PRETTY_FUNCTION__
2.16.1 -I- オプションによる検索アルゴリズムの変更
2.18 Intel MMX および拡張 x86 プラットフォーム組み込み関数のためのコンパイラサポート
-fast を使用すると、コンパイラは errno 変数を設定しない同等の最適化コードを使用して呼び出しを浮動小数点関数に自由に置き換えることができます。さらに、-fast によってマクロ __MATHERR_ERRNO_DONTCARE も定義されます。これはコンパイラに対し、発行された errno や浮動小数点例外の妥当性の確認を無視するように要求します。結果として、浮動小数点関数呼び出しのあとに errno または適切な浮動小数点例外の値に依存するユーザーコードが、矛盾する結果を生成する可能性があります。
この問題を解決する 1 つの方法は、-fast を使用してそのようなコードをコンパイルしないことです。ただし、-fast の最適化が必要で、コードが浮動小数点ライブラリ呼び出しのあとに正しく設定される errno の値に依存している場合は、次のオプションを使用してコンパイルしてください。
-xbuiltin=none -U__MATHERR_ERRNO_DONTCARE -xnolibmopt -xnolibmil
コンパイラがそのようなライブラリ呼び出しの最適化を抑止し、errno が正しく処理されることを保証するには、これらのオプションをコマンド行で -fast のあとに使用すべきです。