実行時の浮動小数点の例外を検出してトラップするために追加の命令を生成する。
.-noflttrap----------------------------. >>- -q--+-flttrap--+-------------------------+-+--------------->< | .-:----------------. | | V | | '-=----+-overflow-----+-+-' +-underflow----+ +-zerodivide---+ +-invalid------+ +-inexact------+ +-enable-------+ +-imprecise----+ '-+----+--nanq-' '-no-'
サブオプションは以下のことを行います。
enable | メインプログラムのプロローグに指定された例外を使用可能にします。 nanq (下記) は例外ですが、ソース・コードを変更せずに以下にリストされた例外トラッピングをオンにする場合は、このサブオプションが必要です。 |
overflow | 浮動小数点のオーバーフローを検出およびトラップするためのコードを生成します。 |
underflow | 浮動小数点のアンダーフローを検出およびトラップするためのコードを生成します。 |
zerodivide | ゼロによる浮動小数点除算を検出およびトラップするためのコードを生成します。 |
invalid | 浮動小数点無効演算例外を検出およびトラップするためのコードを生成します。 |
inexact | 浮動小数点精度低下例外を検出およびトラップするためのコードを生成します。 |
imprecise | 指定された例外の不正確な検出のためのコードを生成します。 例外が引き起こされた場合は、 例外が検出されますが、例外の正確な位置は判別されません。 |
nanq | 浮動小数点演算子によって処理または生成される NaNQ (Not a Number Quiet) 例外を検出してトラップするためのコードを生成します。nanq および nonanq 設定は、-qnoflttrap、-qflttrap、または -qflttrap=enable による影響を受けません。 |
このオプションは、リンク時に認識されます。 -qnoflttrap は、 これらの追加の命令を生成する必要がないことを指定します。
サブオプションを指定せずに -qflttrap オプションを指定することは、 -qflttrap=overflow:underflow:zerodivide:invalid:inexact を指定することと同等です。 例外が自動的に使用可能にされることはなく、 全浮動小数点演算が検査されて、 正確な例外の位置に関する情報が提供されます。
#pragma options とともに指定する場合、 -qnoflttrap オプションは、 指定する最初のオプションでなければなりません。
プログラムにシグナル NaN が含まれる場合は、すべての例外をトラップするために、-qflttrap と共に -qfloat=nans を使用してください。
-qflttrap オプションが -qoptimize オプションと共に指定されている場合、コンパイラーは以下の例のように振る舞います。
浮動小数点のオーバーフローとアンダーフロー、およびゼロ除算を検出するように myprogram.c をコンパイルするには、以下のように入力します。
xlc myprogram.c -qflttrap=overflow:underflow:zerodivide:enable
関連情報