Oracle® Solaris Studio 12.4: Fortran ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

3.4.172 –xrecursive

RECURSIVE 属性をもたないルーチンが自分自身を再帰的に呼び出せるようにします。

通常、RECURSIVE 属性によって定義された副プログラムのみが再帰的に自分自身を呼び出すことができます。

-xrecursive を使用してコンパイルすると、RECURSIVE 属性で定義されていない副プログラムも、再帰的に自分自身を呼び出すことができます。ただし、RECURSIVE で定義されたサブルーチンとは異なり、このフラグを使用しても、デフォルトで局所変数がスタックに割り当てられることはありません。副プログラムの再帰的な呼び出しごとに異なる局所変数を持つ場合は、-stackvar を使用してコンパイルし、局所変数をスタックに設定します。

-xO2 より上の最適化レベルで間接的な再帰 (ルーチン A がルーチン B を呼び出し、そのあとにルーチン B がルーチン A を呼び出す) を実行すると、得られる結果に一貫性がない場合があります。-xrecursive フラグを指定してコンパイルすると、-xO2 より上の最適化レベルであっても、間接的な再帰を実行した場合の正確さが保証されます。

-xrecursive を使用してコンパイルすると、パフォーマンスが低下する可能性があります。