-qisolated_call

説明

ソース・ファイル内の副次作用がない関数を指定する。

構文

構文図を読む構文図をスキップする                          .-:-------------.
                          V               |
>>- -q--isolated_call--=----function_name-+--------------------><
 

ここで、

function_name 副次作用がない関数 (ポインターまたは参照パラメーターが指す変数の値を変更する場合は除く)、 あるいは副次作用がある関数や処理に依存しない関数の名前です。

副次作用 とは、ランタイム環境の状態の変更です。 このような変更の例としては、 揮発オブジェクトへのアクセス、外部オブジェクトの変更、 ファイルの変更、またはこれらのいずれかを行う別の関数の呼び出しなどが挙げられます。 副次作用のない関数は、 外部変数および静的変数を変更しません。

function_name には、 関数をコロン (:) で区切ってリストすることができます。

#pragma isolated_callおよび#pragma optionsも参照してください。

関数に分離のマークを付けると、以下のことを最適化プログラムに示すことにより、最適化されたコードのランタイム・パフォーマンスを改善することができます。

#pragma options isolated_call ディレクティブは、 最初の C または C++ ステートメントの前の、ファイルの先頭に指定する必要があります。#pragma isolated_call ディレクティブは、 ソース・ファイルの任意の位置で使用することができます。

誤って副次作用を持っていないと関数が識別されると、結果のプログラムの振る舞いは予期しないものとなり、誤った結果が生み出される可能性があります。

関数 myfunction(int)classfunction(double) に副次作用がないことを指定して、myprogram.c をコンパイルするには、以下のように入力します。

xlc myprogram.c -qisolated_call=myfunction:classfunction

関連情報