以下のアルファベット順のオプション・リストには、これらのオプションを効率的に使用するのに必要な全情報が記載されています。
構文情報の読み方
構文
-#
個々のコンポーネントを実際には実行せずに、コンパイルの進行に関する情報を生成します。
規則
このオプションは、さまざまなコンパイル・ステップのためにコンパイラーがコマンドを実行するポイントで、これらのアクションを実際には実行しないで、システム呼び出しと、渡すシステム引き数リストのシミュレーションを表示します。
このオプションの出力を調べると、特定のコンパイルに関して、次の事項を迅速かつ確実に判別することができます。
ソース・コードのコンパイルのオーバーヘッドを回避して、 .lst ファイルなどの既存のファイルの上書きも回避します。 (make コマンドに精通している方々にとっては、これは make -n に似ています。)
-qipa とともにこのオプションを指定する場合、コンパイラーは IPA リンク・ステップの後にリンカー情報を表示しないことにご注意ください。これは、コンパイラーが IPA を実際に呼び出していないためです。
関連情報
-v オプション|と -V オプションは、同じ出力を作成しますが、コンパイルも実行します。
構文
-1 ONETRIP | NOONETRIP
DO ステートメントが実行される場合、反復回数が 0 であったとしても、コンパイルされたプログラム内の個々の DO ループを最低 1 回実行します。このオプションを指定すると、FORTRAN 66 との互換性を保つことができます。デフォルトは、その後の Fortran 標準の動作に従うことで、この標準では反復回数が 0 の場合には DO ループは実行されません。
制限
このオプションは FORALL ステートメントや FORALL 構造体、あるいは配列コンストラクターによる DO ループには影響しません。
関連情報
構文
-Bprefix
コンパイル中に使用する実行可能ファイル (コンパイラー、リンカーなど) の代替パス名を決定します。これは -t オプションと組み合わせて使用することができ、これらのコンポーネントのどれが -B の影響を受けるかを決定します。
引き数
prefix は、代替の実行可能ファイルが常駐しているディレクトリーの名前です。これは / (斜線) で終わっていなければなりません。
規則
個々のコンポーネントの完全なパス名を形成するために、ドライバー・プログラムは標準プログラム名に prefix を追加します。 1 つまたは複数の -tmnemonic オプションを組み込むことによっても、このオプションの影響を受けるコンポーネントを制限することができます。
これらのコマンドのデフォルト・パス名を構成ファイルに指定することもできます。
このオプションを使用すると、コンポーネントの一部または全部の XL Fortran コンポーネントの複数レベルを保持したり、アップグレードされたコンポーネントを永続的にインストールする前に、試してみることができます。複数レベルの XL Fortran を使用可能にしておく場合は、適切な -B オプションおよび -t オプションを構成ファイルのスタンザに入れてから、-F オプションを使って、使用するスタンザを選択する必要があります。
例
この例では、初期レベルの XL Fortran コンポーネントが /usr/lpp/xlf/bin ディレクトリーにインストールされています。アップグレードした製品をテストして誰でも使用できるようにするために、システム管理者は /home/jim ディレクトリー下に最新のインストール・イメージを復元して、次のようなコマンドでテストします。
xlf95 -tc -B/home/jim/usr/lpp/xlf/bin/ test_suite.f
アップグレードが受け入れ基準を満たしたら、システム管理者は /usr/lpp/xlf/bin の以前のレベルにインストールします。
関連情報
-t オプション、-F オプション、構成ファイルのカスタマイズ、および 2 つのレベルの XL Fortran の実行を参照してください。
構文
-b64
AIX オペレーティング・システムは、libc.a と libm.a の両方で、 64 ビット共用オブジェクト・ファイルを提供しています。 64 ビット・モードでは、-b64 リンカー・オプションを使用して、 64 ビット・オブジェクトをバインドするよう ld に指示することができます。
関連情報
64 ビット環境の詳細については、第 6 章, 64 ビット環境での XL Fortran の使用を参照してください。 -b64 の詳細については、「AIX General Programming Concepts 」を参照してください。
構文
-bdynamic | -bshared | -bstatic
これらのオプションは、-l オプションの処理と、共用オブジェクトの処理方法を制御するのに使用するトグルです。
オプション -bdynamic とオプション -bshared は同義です。
-bstatic が有効になっていると、共用オブジェクトは出力ファイルに静的にリンクされます。 -bdynamic が有効になっていると、共用オブジェクトは動的にリンクされます。
-brtl を -bdynamic または -bshared と組み合わせて使用すると、-l オプションで指定されたライブラリーの検索は、サフィックス .so または .a によって行われます。検索する個々のディレクトリーでは、サフィックス .so を持つファイルが検索されます。 このファイルが見つからない場合は、サフィックス .a を持つファイルが検索されます。どちらのファイルも見つからない場合は、次のディレクトリーで検索が継続されます。
規則
これらのオプションは ld コマンドに直接渡され、 XL Fortran によって処理されることはありません。
これらのオプションは入力位置に意味があり、コマンド行でオプションの後で指定されたすべてのファイルに影響を与えます。
表 14 は、これらのオプションが -brtl および -bnortl と組み合わされた場合に、ファイル・サフィックスの検索にどのような影響を与えるかを要約したものです。
位置に意味あり | |||
---|---|---|---|
-bdynamic -bshared (デフォルト) | -bstatic | ||
グローバルな影響 | -brtl |
.so .a | .a |
-bnortl (デフォルト) | .a | .a |
例
xlf95 f.f -brtl -bshared -lmylib
この場合、リンカーは、探索パスにある個々のディレクトリー内で連続的に、どちらかが見つかるまで、まずライブラリー libmylib.so を検索し、次にライブラリー libmylib.a を検索します。
xlf95_r f.f -bdynamic -llib1 -bstatic -llib2 -brtl
この場合、リンカーは、(前の例のように) 個々のディレクトリー内でまずライブラリー liblib1.so を検索し、次にライブラリー liblib1.a を検索し、最初のライブラリー指定を基準にします。ただし、同じライブラリー内でリンカーが同時に検索するのは、 liblib2.a だけです。
関連情報
これらのオプションの詳細については、「AIX General Programming Concepts 」を参照してください。 -brtl オプションも参照してください。
構文
-bhalt:error_level
リンカー (ld) コマンドが停止する前に許可されている最大エラー・レベルを指定します。構成ファイルに指定されているとおり、デフォルト値は 4 です。 error_level 変数で指定されている値よりも大きいエラー戻り値をリンカー・コマンドが持っていると、リンクは停止します。
規則
このオプションは ld コマンドに直接渡され、 XL Fortran によって処理されることはありません。
構文
-bloadmap:name
リンカー・アクションおよびメッセージのログが name というファイルに保管されるように要求します。リンクの問題を診断する一助として、ログを使用することができます。たとえば、ログには、-qextchk オプションによって検出されたタイプの不一致に関する情報が含まれています。
規則
このオプションは ld コマンドに直接渡され、 XL Fortran によって処理されることはありません。
構文
-bmaxdata:bytes -bmaxstack:bytes
プログラムのデータ・セグメントおよびスタック・セグメント用に予約する空間の最大量を、これらの領域のサイズが制約されているプログラムに対して指定します。
背景情報
データ・セグメントは、特にプログラムが使用するヒープ領域を占めます。
プログラムが非常に大きな配列を静的または動的に割り振る場合は、プログラムをリンクするときに -bmaxdata を指定してください。その結果作成された実行可能プログラムは大きなデータ・モデルを使用し、単一セグメントよりも大きなデータ領域 (最大 2 GB まで) を持つことができます。許容される値については、「AIX コマンド・リファレンス 」で ld の資料を参照してください。コンパイラーはコンパイル中に一時配列を作成することがあるので、これを予想して -bmaxdata コンパイラー・オプションの値を定義しておくと役立ちます。
プログラムが大量の自動データを持っていたり、プログラムのスタック・サイズのソフト制限を超える場合は、プログラムをリンクするときに -bmaxstack を指定して、最大で 256 MB (32 ビット・モード) まで、またはシステム・リソースによって決められている限界 (64 ビット・モード) までのソフト制限を定義してください。ただし、各メインプログラムまたはサブプログラムは、インスタンス当たり 256 MB までに制限されることに注意してください。
引き数
サイズは、10 進値、8 進値 (プレフィックスとして 0 を付ける) または 16 進値 (プレフィックスとして 0x を付ける) として指定することができます。
規則
これらのオプションは ld コマンドに直接渡され、 XL Fortran によって処理されることはありません。
例
xlf95 -O3 -qhot -bmaxdata:0x20000000 huge_data_model.f xlf95 -O3 -qhot -bmaxstack:2000000 lots_of_automatic_data.f
関連情報
大きな AIX プログラムの作成に関係のある問題の説明は、「AIX General Programming Concepts 」の『Large Program Support Overview (大きなプログラムのサポートの概要)』の項を参照してください。
構文
-brtl | -bnortl
ライブラリー (-l オプションで指定する) の検出に使用するアルゴリズムを決定します。
背景情報
-brtl を指定すると、実行時リンクが使用可能になります。
-bdynamic または -bshared と組み合わせて使用すると、-l オプションで指定されたライブラリーの検索は、サフィックス .so または .a によって行われます。検索する個々のディレクトリーでは、サフィックス .so を持つファイルが検索されます。このファイルが見つからない場合は、サフィックス .a を持つファイルが検索されます。どちらのファイルも見つからない場合は、次のディレクトリーで検索が継続されます。 表 14 は、これらのオプションを組み合わせた場合に、検索されるファイル・サフィックスがどのように影響を受けるかを示したものです。
規則
これらのオプションは ld コマンドに直接渡され、 XL Fortran によって処理されることはありません。これらのオプションのうち最後に指定されたものだけが使用されます。これらのオプションにはグローバルな効果があります。コマンド行のどこにあるかに関係なく、コマンド全体が影響を受けます。
例
xlf95 -brtl f.f -lmylib xlf95_r -bnortl f.f -bdynamic -llib1 -bstatic -llib2
最後の例の終わりに -brtl を追加すると、その前にある -bnortl はオーバーライドされます。
関連情報
これらのオプションの詳細については、「AIX General Programming Concepts 」を参照してください。 -bdynamic、-bshared、-bstatic オプションも参照してください。
関連情報
-bdynamic、-bshared、-bstatic オプションを参照してください。
関連情報
-bdynamic、-bshared、-bstatic オプションを参照してください。
構文
-C CHECK | NOCHECK
配列エレメント、配列セクション、文字サブストリングなどへの個々の参照が正しいかどうかをチェックします。
規則
コンパイル時に、参照が境界外に及ぶことをコンパイラーが判別できる場合には、報告されるエラーの重大度が、このオプションの指定時に S (重大) に上がります。
実行時に、参照が境界外に及ぶと、プログラムは SIGTRAP シグナルを発生させます。デフォルト時には、このシグナルはプログラムを停止させて、メモリー・ダンプを作成します。
実行時検査を行うと実行速度が遅くなることがあるので、個々のプログラムにとって重要な要因は何か (パフォーマンスへの影響、または、エラーが検出されない場合に間違った結果が出る可能性など) をユーザー側で判別する必要があります。このオプションを使用するのは、プログラムのテスト中またはデバッグ中のみにする (パフォーマンスがより重要な場合) か、あるいは、プロダクション・バージョンをコンパイルするときだけ (安全性がより重要な場合) にしてください。
関連情報
-C オプションは、-qhot オプションによって行われる最適化をいくらか抑止します。コードのデバッグが完了した後に -C オプションを除去し、 -qhot オプションを追加すれば、より徹底的な最適化を実行することができます。
文字サブストリング式の有効な境界は、-qzerosize オプションの設定によって異なります。 -qzerosize オプションを参照してください。
-qsigtrap オプションおよび 例外ハンドラーのインストールには、SIGTRAP シグナルを検出してプログラムを終了させずに回復する方法が記述されています。
構文
-c
完成したオブジェクト・ファイルを、リンク・エディットのために ld コマンドに送りません。このオプションを指定すると、出力は個々のソース・ファイルの .o ファイルになります。
-c と組み合わせて -o オプションを使用すると、 .o ファイルの代わりに別の名前が選択されます。この場合、一度にコンパイルできるソース・ファイルは 1 つだけです。
関連情報
-o オプションを参照してください。
構文
-D DLINES | NODLINES
コンパイラーが桁 1 に D を持つ固定ソース形式行をコンパイルするか、注釈として扱うかを指定します。
-D を指定すると、桁 1 に D がある固定ソース形式行がコンパイルされます。デフォルトの動作は、これらの行を注釈行と見なして処理します。これらは通常、オン、オフにする必要のあるデバッグ・コードの部分に使用されます。
関連情報
構文
-d
cpp によって生成されるプリプロセス後のソース・ファイルを、削除せずに保持します。
規則
このオプションによって生成されるファイルには、元のソース・ファイルの名前から派生した Ffilename.f という形式の名前が付きます。
関連情報
C プリプロセッサーによる Fortran ファイルの引き渡しを参照してください。
構文
-Fconfig_file | -Fconfig_file:stanza | -F:stanza
代替構成ファイルを指定するか、その構成ファイル内で使用するスタンザを指定します (またはその両方を指定します)。
構成ファイルは、さまざまな種類のデフォルト、たとえば特定のコンパイル・ステップのためのオプション、コンパイラーが必要とするさまざまなファイルの位置を指定します。デフォルトの構成ファイル (/etc/xlf.cfg) は、インストール時に作成されます。デフォルトのスタンザは、コンパイラーを呼び出すために使用するコマンドの名前 (xlf90、xlf90_r、xlf90_r7、xlf95、xlf95_r、xlf95_r7、xlf、xlf_r、xlf_r7、f77、または fort77) に応じて異なります。
複雑なコンパイル・スクリプトを書かなくても、コンパイラーの基本機能をカスタマイズできる簡単な方法は、 /etc/xlf.cfg に新しいスタンザを追加して、個々のスタンザに異なる名前と異なるセットのデフォルト・コンパイラー・オプションを指定することです。多数の分散したコンパイル・スクリプトや makefile よりも、一か所に集めた単一ファイルの方が維持しやすいことがわかります。
適切な -F オプションを指定してコンパイラーを実行することにより、使用するオプションのセットを選択することができます。完全な最適化のために 1 セットのオプションを持ち、完全なエラー・チェックなどのためにもう 1 セットのオプションを持つことなどができます。
制限
新しいコンパイラーのリリースがインストールされるたびにデフォルトの構成ファイルが置き換えられるので、新しいスタンザや新しいコンパイラー・オプションを確実に保管するようにしてください。
例
# Use stanza debug in default xlf.cfg. xlf95 -F:debug t.f # Use stanza xlf90 in /home/fred/xlf.cfg. xlf95 -F/home/fred/xlf.cfg t.f # Use stanza myxlf in /home/fred/xlf.cfg. xlf95_r -F/home/fred/xlf.cfg:myxlf t.f
関連情報
構成ファイルのカスタマイズでは、構成ファイルの内容と、-F オプションを使用せずに|ファイル内の別のスタンザを選択する方法が説明されています。
構文
-g DBG | NODBG
シンボリック・デバッガーで使用するデバッグ情報を生成します。
関連情報
Fortran 90 または Fortran 95 プログラムのデバッグ、XL Fortran プログラムのサンプル dbx セッション、および シンボリック・デバッガー・サポートを参照してください。
構文
-Idir
インクルード・ファイルおよび .mod ファイルの探索パスにディレクトリーを追加します。 XL Fortran が cpp を呼び出す場合、このオプションを指定しておくと、#include ファイルの検索パスにディレクトリーが追加されます。コンパイラーは、インクルード・ファイルおよび .mod ファイルのデフォルト・ディレクトリーを検査する前に、探索パス内の個々のディレクトリーを検査します。インクルード・ファイルの場合は、INCLUDE 行のファイル名が絶対パスで示されていない場合にのみ、このパスが使用されます。 #include ファイルの -I オプションについての詳細は、cpp の資料を参照してください。
引き数
dir は有効なパス名 (たとえば /home/dir、/tmp、./subdir など) でなければなりません。
規則
検索を行う前に、コンパイラーは dir に / を追加して、ファイル名 と連結します。複数の -I オプションがコマンド行に指定されると、ファイルはコマンド行上の dir 名の順序で検索されます。
-I オプションで指定した任意のパスを検索した後、以下のディレクトリーが次のような順序で検索されます。
関連情報
-qmoddir オプションは、モジュールを含んでいるファイルをコンパイルするときに .mod ファイルを特定のディレクトリーに置きます。
構文
-k FREE(F90)
プログラムが自由ソース形式になることを指定します。
該当する製品レベル
このオプションの意味は、XL Fortran バージョン 2 とは異なっています。 -k の前の動作を実行するには、代わりに -qfree=ibm オプションを使用してください。
関連情報
-qfree オプションおよび「XL Fortran for AIX ランゲージ・リファレンス 」の『自由ソース形式』を参照してください。
構文
-Ldir
指定されたディレクトリーの -l オプションで指定されたライブラリーを調べます。デフォルト・ライブラリー以外のライブラリーを /usr/lib で使用する場合は、その他のライブラリーの位置を指し示す 1 つまたは複数の -L オプションを指定することができます。また、実行時にライブラリーの検索パスを指定できるようにする LIBPATH 環境変数を設定することもできます。
規則
このオプションは ld コマンドに直接渡され、 XL Fortran によって処理されることはありません。
関連情報
リンクを制御するオプションおよび XL Fortran プログラムのリンクを参照してください。
構文
-lkey
指定されたライブラリー・ファイル (key はライブラリー libkey.a を選択します) を検索します。
規則
このオプションは ld コマンドに直接渡され、 XL Fortran によって処理されることはありません。
関連情報
リンクを制御するオプションおよび XL Fortran プログラムのリンクを参照してください。
構文
-NSbytes SPILLSIZE(bytes)
内部プログラムのストレージのサイズを指定します。
規則
レジスターに保持する変数の数が多過ぎて、プログラムがレジスターの内容用の一時ストレージを必要とする場合に備えて、個々のサブプログラムに確保するスタック空間のバイト数を定義します。
デフォルト
デフォルト時には、個々のサブプログラムのスタックには、512 バイトの予備空間が確保されます。
このオプションが必要な場合は、コンパイル時メッセージでその旨をユーザーに通知します。
関連情報
構文
-O[level] OPTimize[(level)] | NOOPTimize
コンパイル中にコードを最適化するかどうかを指定し、最適化する場合にはそのレベルも指定します。
引き数
また、このレベルの最適化は -qfloat オプションの設定にも影響を与え、デフォルト時には fltint オプションと rsqrt サブオプションをオンにして、 -qmaxmem=-1 を設定します。
-O4 は、次のオプションを暗黙指定します。
-qarch、-qtune、-qcache の「auto」設定は、実行環境がコンパイル環境と同じであることを暗黙指定します。
このオプションは「最後のオプションが選択される」という競合解決規則に従っており、そのため、-O4 によって変更されるオプションを後から変更できます。特に、次のように指定するならば、積極的に内部手順の最適化を行えるだけでなく、コードの移植性を保持することもできます。
-O4 -qarch=com
制限
普通は、コンパイルとリンク・ステップの両方に同じ最適化レベルを使用します。 -O4 あるいは -O5 最適化レベルを使用して、最良のランタイム・パフォーマンスを得るにはこうすることが重要です。-O5 レベルの場合、すべてのループ変換 (-qhot オプションを介して指定したように) は、リンク・ステップで行われます。
最適化のレベルを高くすることで、パフォーマンスがさらに改善される場合と、されない場合があります。これは、分析を加えてさらに最適化の機会を見い出せるかどうかによって決まります。
-O3 以上の最適化レベルでは、プログラムの動作を変更することがあり、その結果、普通起こらない例外事項が起こる可能性があります。 -qstrict オプションを使用すると、潜在的な変更や例外が起こるのをなくすことができます。
最適化とともにコンパイルを行うと、時間とマシン・リソースが他のコンパイルよりも必要になる場合があります。
コンパイラーがプログラムを最適化すればするほど、プログラムをシンボリック・デバッガーでデバッグするのが難しくなります。
関連情報
-qessl オプション では ESSL ルーチンを使用することができます。
-qstrict オプションには、プログラムのセマンティクスを変える場合のある -O3 の影響を取り去る方法が示されています。
-qipa オプション、-qhot オプションと -qpdf オプションは、一部のプログラムについて、パフォーマンスを向上させる可能性がある追加の最適化をオンにします。
第 8 章, XL Fortran プログラムの最適化には、コンパイラーが使用する最適化技法の技術的な詳細と、ご使用のコードから最高のパフォーマンスを得るために行う方法が説明されています。
構文
-o name
出力オブジェクト・ソース・ファイル、実行可能ソース・ファイル、アセンブラー・ソース・ファイルなどの名前を指定します。
オブジェクト・ファイルの名前を選択するには、このオプションを -c オプションと組み合わせて使用してください。アセンブラー・ソース・ファイルの場合は、これを -S オプションと組み合わせて使用してください。
デフォルト
実行可能ファイルのデフォルト名は、a.out です。オブジェクト・ソース・ファイルまたはアセンブラー・ソース・ファイルのデフォルト名はソース・ファイルと同じですが、拡張子 .o または .s が付きます。
規則
オプション -c または -S が指定されている場合を除き、 -o オプションは XL Fortran で処理されないで、ld コマンドに直接渡されます。
例
xlf95 t.f # Produces "a.out" xlf95 -c t.f # Produces "t.o" xlf95 -o test_program t.f # Produces "test_program" xlf95 -S -o t2.s t.f # Produces "t2.s"
構文
-P{v|k}[!]
選択された最適化プリプロセッサーを呼び出します。 ! を追加することにより、コンパイル・ステップでプリプロセスを行うことはなくなります。
次のプリプロセッサー・オプションのいずれか 1 つだけをコマンド行に指定できます。
例
次の例は、妥当な量の最適化を実行するプリプロセッサー・オプションのセットを示しています。
xlf95 test.f -Pk -Wp,-r=3 -O # Reasonable set of KAP options xlf95 test.f -Pv -Wp,-ew -O # Reasonable set of VAST-2 options
次の例は、プリプロセス済みの出力をファイルに保管する方法を示して、プリプロセッサーがどのような変換を行ったかを見ることができるようにします。
# Produces KAP preprocessor output file Ploops.f xlf95 -Pk! -Wp,-f loops.f # Produces VAST preprocessor output file Ploops.f xlf95 -Pv! -Wp,-o loops.f
関連情報
その他の種類の (条件付きコンパイルおよびマクロ展開用の) プリプロセスについては、C プリプロセッサーによる Fortran ファイルの引き渡しを参照してください。
構文
-p[g]
プロファイル用のオブジェクト・ファイルをセットアップします。
-p はプロファイル用のプログラムを用意します。プログラムを実行すると、プロファイル情報を使用する mon.out ファイルが作成されます。これで、prof コマンドを使用して実行時プロファイルを作成することができます。
-pg は -p に似ていますが、より詳細な統計を作成します。 -pg でコンパイルしたプログラムを実行すると、 gmon.out ファイルが作成されます。このファイルは、実行時プロファイルを作成するために、 gprof コマンドとともに使用します。
規則
プロファイルのために、コンパイラーは個々のルーチンが呼び出される回数をカウントするモニター・コードを作成します。コンパイラーは、個々のサブプログラムの始動ルーチンを、開始時にモニター・サブルーチンを呼び出すルーチンと置き換えます。プログラムが正常に終了すると、記録された情報が mon.out ファイルまたは |gmon.out ファイルに書き込まれます。
例
$ xlf95 -p needs_tuning.f $ a.out $ prof . . . profiling data . . . $ xlf95 -pg needs_tuning.f $ a.out $ gprof . . . detailed and verbose profiling data . . .
関連情報
プロファイルと、prof および| gprof コマンドについて詳しくは、「AIX コマンド・リファレンス 」を参照してください。
構文
-Q+names | -Q-names | -Q | -Q!
Fortran 90 または Fortran 95 プロシージャーをインライン化するかどうか、および/または、インライン化しなければならないかインライン化してはならない特定のプロシージャーの名前を指定します。names はプロシージャー名をコロンで区切ったリストです。
規則
デフォルトでは、呼び出し元と呼び出される側が両方とも同じソース・ファイルにあるか、INCLUDE ディレクティブによって接続されたファイルのセットにある場合のみ、 -Q がプロシージャーに影響を与えます。別のソース・ファイルのプロシージャーへの呼び出しに対するインライン展開をオンにするには、-qipa オプションも使用してください。
引き数
リストなしの -Q オプションは、インライン化される呼び出し数の制限、および結果としてのコード・サイズの増加量に従って、適切なすべてのプロシージャーをインライン化します。 +names は、インライン化するプロシージャー名をコロンで区切って指定し、それぞれのプロシージャーに対する限界値を上げます。-names は、インライン化しないプロシージャー名をコロンで区切って指定します。これらのオプションを複数指定して、どのプロシージャーが最もインライン化されやすいかを厳密に制御することができます。
-Q! オプションは、インライン化をオフにします。
制限
-Q のインライン化を有効にするには、最低でもレベル 2 の -O を指定する必要があります。
ファイルに対してインライン化が指定されると、以下の @PROCESS コンパイラー・ディレクティブが有効になるのは、ファイル内の最初のコンパイル単位の前にある場合だけです。 ALIAS、ALIGN、ATTR、COMPACT、 DBG、EXTCHK、EXTNAME、FLOAT、 FLTTRAP、HALT、IEEE、LIST、 MAXMEM、OBJECT、OPTIMIZE、PHSINFO、 SPILLSIZE、STRICT、XREF。
例
xlf95 -O -Q many_small_subprogs.f # Compiler decides what to inline. xlf95 -O -Q+bigfunc:hugefunc test.f # Inline even though these are big. xlf95 -O -Q -Q-only_once pi.f # Inline except for this one procedure.
関連情報
-qipa オプションを参照してください。
関連情報
-q32 オプションを参照してください。
関連情報
-q64 オプションを参照してください。
構文
-qalias={[no]aryovrlp | [no]intptr | [no]pteovrlp | [no]std}... ALIAS( {[NO]ARYOVRLP | [NO]INTPTR | [NO]PTEOVRLP | [NO]STD}... )
ある種の別名付けが、プログラムに含まれているかどうかを示します。コンパイラーは、同じストレージ・ロケーションにさまざまな名前が別名として付けられている可能性がある場合、最適化の有効範囲を制限します。
引き数
規則
ストレージ内の項目が複数の名前で参照できる場合には、別名が存在します。 Fortran 90 および Fortran 95 標準では、別名付けが可能なタイプと不可能なタイプがあります。以下の状況のように非標準の別名付けが存在すると、 XL Fortran コンパイラーが実行する非常に複雑な最適化によって、好ましくない結果が生じる可能性があります。
該当する製品レベル
-qxflag=xalias は廃止され、-qalias=nostd オプションに代わっています。
-qipa オプションを使用しても、-qalias は必要です。
Examples of aryovrlp/noaryovrlp/pteovrlp
-qalias=nopteovrlp を使って以下のサブルーチンをコンパイルすると、さらに効率のよいコードをコンパイラーが生成できる場合があります。整数ポインター (ptr1 および ptr2) が、動的に割り振られたメモリーだけを指しているため、 -qalias=nopteovrlp を使ってこのサブルーチンをコンパイルすることができます。
subroutine sub(arg) real arg pointer(ptr1, pte1) pointer(ptr2, pte2) real pte1, pte2 ptr1 = malloc(%val(4)) ptr2 = malloc(%val(4)) pte1 = arg*arg pte2 = int(sqrt(arg)) arg = pte1 + pte2 call free(%val(ptr1)) call free(%val(ptr2)) end subroutine
コンパイル単位内のほとんどの配列の割り当てが、オーバーラップしない配列に関与しており、少数の割り当てがストレージ関連配列に関与している場合、オーバーラップした割り当てを追加ステップでコーディングすれば NOARYOVRLP サブオプションを安全に使うことができます。
@PROCESS ALIAS(NOARYOVRLP) ! The assertion that no array assignments involve overlapping ! arrays allows the assignment to be done without creating a ! temporary array. program test real(8) a(100) integer :: j=1, k=50, m=51, n=100 a(1:50) = 0.0d0 a(51:100) = 1.0d0 ! Timing loop to achieve accurate timing results do i = 1, 1000000 a(j:k) = a(m:n) ! Here is the array assignment end do print *, a end program
Fortran では、J または K が更新される場合は別名付けは許可されず、検出されないままであると、予測不能な結果が起きることがあります。 -qalias=nostd が指定されている場合は、J を変更すると K の値も変更され (その反対も言える)、結果は予測できます。
! We cannot assert that this unit is free ! of array-assignment aliasing because of the assignments below. subroutine sub1 integer a(10), b(10) equivalence (a, b(3)) a = b ! a and b overlap. a = a(10:1:-1) ! The elements of a are reversed. end subroutine ! When the overlapping assignment is recoded to explicitly use a ! temporary array, the array-assignment aliasing is removed. ! Although ALIAS(NOARYOVRLP) does not speed up this assignment, ! subsequent assignments of non-overlapping arrays in this unit ! are optimized. @PROCESS ALIAS(NOARYOVRLP) subroutine sub2 integer a(10), b(10), t(10) equivalence (a, b(3)) t = b; a = t t = a(10:1:-1); a = t end subroutine
|SUB1 が呼び出される場合は、J と K の間に別名が存在します。 |J と K は、ストレージ内の同じ項目を参照します。
CALL SUB1(I,I) ... SUBROUTINE SUB1(J,K)
以下の例では、別名が存在する可能性があることを -qalias=nostd が示さない限り、プログラムは 6 の代わりに 5 を J に保管します。
INTEGER BIG(1000) INTEGER SMALL(10) COMMON // BIG EQUIVALENCE(BIG,SMALL) ... BIG(500) = 5 SMALL (I) = 6 ! Where I has the value 500 J = BIG(500)
制限
このオプションはいくつかの変数の最適化を禁止しているので、それを使用するとパフォーマンスが低下します。
ある非標準または整数 POINTER 別名付けが含まれているプログラムは、正しい -qalias 設定でコンパイルしないと、誤った結果を作成する場合があります。xlf90、xlf90_r、xlf90_r7、xlf95、xlf95_r、および xlf95_r7 コマンドは、プログラムに標準的な別名だけが入っている (-qalias=aryovrlp:pteovrlp:std:nointptr) と想定しますが、xlf_r、xlf_r7、xlf、および f77 コマンドは、XL Fortran バージョン 2 との互換性を保持するために、整数 POINTER が存在する可能性がある (-qalias=aryovrlp:pteovrlp:std:intptr) と想定します。
構文
-qalign={[no]4k|struct={natural|packed|port}} ALIGN({[NO]4K|STRUCT{(natural)|(packed)|(port)}})
誤って位置合わせされたデータによるパフォーマンス問題を回避する、ストレージ内でのデータ・オブジェクトの位置合わせを指定します。 [no]4k および struct オプションを一緒に指定することができ、しかも互いに排他的ではありません。デフォルトの設定は、 -qalign=no4k:struct=natural です。 [no]4K オプションは、基本的には論理ボリューム I/O とディスク・ストライピングの組み合わせに有効です。
引き数
タイプ | 自然の位置合わせ (バイトの倍数) |
---|---|
INTEGER(1), LOGICAL(1), BYTE, CHARACTER | 1 |
INTEGER(2), LOGICAL(2) | 2 |
INTEGER(4), LOGICAL(4), REAL(4) | 4 |
INTEGER(8), LOGICAL(8), REAL(8), COMPLEX(4) | 8 |
REAL(16), COMPLEX(8), COMPLEX(16) | 16 |
派生 | そのコンポーネントの最大位置合わせ |
natural サブオプションを struct オプションで指定すると、派生型の配列はその他にストレージ・アソシエーションを要求していないなら、自然の位置合わせ境界で各エレメントの各コンポーネントが保管されるように保管されます。
port サブオプションを struct オプションで指定すると、
制限
port サブオプションは AUTOMATIC 属性を持つ配列または構造、あるいは動的に割り振られる配列には影響を及ぼしません。このオプションは非シーケンス派生型のレイアウトを変更する場合があるので、不定様式ファイルを使用してそのようなオブジェクトを読み書きするプログラムをコンパイルする場合は、すべてのソース・ファイルについてこのオプションには同じ設定を使用してください。
論理ボリューム I/O とデータ・ストライピングによるスループットの向上で説明されている I/O の技法を使用する場合は、必ず -qalign=4k を使用する必要があります。
関連情報
配列が AUTOMATIC 属性を持つかどうか、また、そのために -qalign=4k によって影響を受けないかどうかは、 -qattr オプションのリストで AUTOMATIC キーワードまたは CONTROLLED AUTOMATIC キーワードを探せば知ることができます。 このリストには、データ・オブジェクトのオフセットも示されています。
構文
-qarch=architecture
コンパイラーが生成する命令を制御します。デフォルトを変更すると、パフォーマンスを向上させることができますが、特定のマシンでしか実行できないコードが生成される可能性があります。
引き数
architecture の選択項目は次のとおりです。
-q64 オプションと -qarch=com オプションを同時に指定した場合、ターゲット・プラットフォームは 64 ビットになります。命令セットは、すべての 64 ビット・マシンに共通の命令に制限されます。詳細については、第 6 章, 64 ビット環境での XL Fortran の使用を参照してください。 -qfloat オプションの rndsngl サブオプションは自動的にオンにされます。オフにはできません。この場合に、PowerPC システムではパフォーマンスが向上しますが、 -qarch=com と -q32 でコンパイルすると結果がやや異なる場合があります。
-qfloat オプションの rndsngl サブオプションは自動的にオンにされます。オフにはできません。 |
|64 ビット・モードでは、64 ビット PowerPC プラットフォームで |実行され、32 ビットのみのプラットフォームでは実行されない、 |オプションのグラフィックス命令を含むオブジェクト・コードを生成します。 |
pwrx は pwr2 の同義語ですが、pwr2 を使用することをお勧めします。
プログラムを特定マシン上でのみ稼動させたい場合は、-qarch オプションを使用して、該当するアーキテクチャーに特定のコードを生成するようにコンパイラーに指示することができます。これにより、コンパイラーは、マシン特定の命令を活用してパフォーマンスを向上させることができます。 -qarch オプションは、特定のチップ・モデルを指定する引き数を用意しています。たとえば、-qarch=604 を指定して、プログラムが PowerPC 604 ハードウェア・プラットフォームで|実行されるように指示することができます。
所定のアプリケーション・プログラムに対しては、それぞれのソース・ファイルをコンパイルするときに必ず同じ -qarch 設定を指定してください。互換性のない -qarch 設定でコンパイルされたオブジェクト・ファイルをリンカーとローダーで検出することができますが、それは、信頼性がありません。
さらに、-qcache および -qhot オプションのような|その他のパフォーマンス関連オプションを使用して、特定のマシンを対象としたプログラムのパフォーマンスを向上させることができます。
以下の指針を使用して、このオプションを使用するかどうかを決定する一助としてください。
その他の考慮事項
PowerPC 命令セットには、特定のハードウェア・プラットフォームにインプリメントされる 2 つの任意指定の命令セット・グループが入っています。ただしこれらは必須ではありません。この 2 つのグループとは、グラフィックス命令グループと sqrt 命令グループです。特定の -qarch オプションを指定してコンパイルされるコード (そのすべては特定の PowerPC マシンを参照する) は、同じ命令グループがある、任意の同等な PowerPC マシン上で実行されます。以下の表では、さまざまな PowerPC マシンに組み込まれる命令グループを示します。
プロセッサー | グラフィックス・グループ | sqrt グループ | 64 ビット |
---|---|---|---|
601 | いいえ | いいえ | いいえ |
603 | はい | いいえ | いいえ |
604 | はい | いいえ | いいえ |
rs64a | いいえ | いいえ | はい |
rs64b | はい | はい | はい |
rs64c | はい | はい | はい |
pwr3 | はい | はい | はい |
pwr4 | はい | はい | はい |
-qarch=pwr3 オプションを使ってコードをコンパイルすると、このコードは RS64B プラットフォームでは実行されますが、命令グループが異なるため、RS64A プラットフォームでは |実行されない可能性があります。同様に、-qarch=603 オプションを使ってコンパイルされたコードは、POWER3 マシンでは実行されますが、RS64A マシンでは|実行されない可能性があります。
関連情報
POWER4、POWER3、 POWER2、 あるいは PowerPC システムでのコンパイル、-qtune オプション、および -qcache オプションを参照してください。
構文
-qassert={ deps | nodeps | itercnt=n}
最適化を微調整するのに役立つファイルの特性に関する情報を指定します。
引き数
関連情報
このような断定を使用する際の背景情報および指示については、 ループ変換用のコスト・モデルを参照してください。また、「XL Fortran for AIX ランゲージ・リファレンス 」で ASSERT ディレクティブの説明も参照してください。
構文
-qattr[=full] | -qnoattr ATTR[(FULL)] | NOATTR
属性の属性コンポーネントおよびリストの相互参照セクションを作成するかどうかを指定します。
引き数
-qattr だけを指定すると、使用される識別子だけが報告されます。 -qattr=full が指定されると、参照されてもされなくても、すべての識別子が報告されます。
-qattr=full の後に -qattr が指定されると、完全な属性リストが依然として作成されます。
属性リストを使用して、正しく指定されていない属性が起こす問題のデバッグを支援することができます。あるいは、新しいコードを書いている際に各オブジェクトの属性の覚え書きとして使用することもできます。
関連情報
リストとメッセージを制御するオプションおよび 属性および相互参照セクションを参照してください。
構文
-qautodbl=setting AUTODBL(setting
互換性の利点
単精度浮動小数点を倍精度へ自動的に変換する方法、そして倍精度を拡張精度へ自動的に変換する方法を提供します。
ストレージの関係が重要で、XL Fortran のデフォルトとは異なっている場合に、コードを移植する際にこのオプションを使用すると便利なことがわかります。たとえば、IBM VS FORTRAN コンパイラー用に書かれたプログラムは、そのコンパイラーの同等のオプションを使用することができます。
パフォーマンス上の利点
POWER および POWER2 の浮動小数点ユニットは、高速の REAL(8) 算術演算を使用して REAL(4) 計算を内部的に実行しますが、多くの場合、これらの計算では、REAL(8) または DOUBLE PRECISION であるデータ・エンティティーを全面的に使用して行った方が効率的です。これらの計算値が REAL または REAL(4) データ・エンティティーを使用してコード化されると、中間計算は IEEE 倍精度で行われても、REAL(4)-REAL(8)-REAL(4) 変換で余分な精度と範囲が落ちてしまい、パフォーマンスの低下を招きます。
サブオプション
-qautodbl サブオプションを使用して、プロモーションまたは埋め込みが行われるオブジェクト間、あるいはプロモーションまたは埋め込みが行われないオブジェクト間のストレージの関係を保持するための別の方法を選択します。
使用できる設定は次のとおりです。
このサブオプションは、リンク中に libxlfpmt4.a ライブラリーを必要とします。
このサブオプションは、リンク中に libxlfpmt8.a ライブラリーを必要とします。
このサブオプションは、リンク中に libxlfpmt4.a および libxlfpmt8.a ライブラリーを必要とします。
このサブオプションは、リンク中に libxlfpmt4.a および libxlfpad.a ライブラリーを必要とします。
このサブオプションは、リンク中に libxlfpmt8.a および libxlfpad.a ライブラリーを必要とします。
このサブオプションは、リンク中に libxlfpmt4.a、libxlfpmt8.a および libxlfpad.a ライブラリーを必要とします。
リンク
リンク中に適切な -qautodbl オプションが指定されると、プログラムは必要なエクストラ・ライブラリーと自動的にリンクされます。自動的にリンクされない場合は、手操作でリンクする必要があります。
使用法
dbl4 または dblpad4 を使用することにより、 REAL(8) オブジェクトを REAL(16) オブジェクトに変換せずに、 REAL(4) のサイズを増やすことができます。 REAL(16) は、計算処理の点で、REAL(8) ほど効率がよくありません。
-qautodbl オプションは、プロモートされる引き数を持つ組み込み関数への呼び出しを処理します。必要な場合は、正しい高精度の組み込み関数が代わりに使用されます。たとえば、単精度項目がプロモートされている場合は、プログラム内で SIN を呼び出すと、それが自動的に DSIN への呼び出しになります。
制限
関連情報
プロモーション、埋め込み、ストレージ / 値の関係に関する背景情報を得たり、ソースの例を参照するには、-qautodbl のプロモーションと埋め込みの実行の詳細を参照してください。
-qrealsize オプションには、-qautodbl のように機能しますが、デフォルトの kind タイプの項目にのみ影響を与え、埋め込みはまったく行わない、別のオプションについて説明してあります。 -qrealsize および -qautodbl オプションの両方を指定する場合、-qautodbl だけが有効になります。
ld コマンドを使用した 32 ビット非 SMP オブジェクト・ファイルのリンクには、-qautodbl でコンパイルされたオブジェクト・ファイルと追加のライブラリーを手操作でリンクする方法が説明されています。
構文
-qcache= { assoc=number | auto | cost=cycles | level=level | line=bytes | size=Kbytes | type={C|c|D|d|I|i} }[:...]
特定の実行マシンに対して、キャッシュ構成を指定します。コンパイラーはこの情報を使用して、特に、データ・キャッシュに適合するデータ量に限定して処理するように構造化 (あるいはブロック化 ) 可能なループ演算の場合に、プログラムのパフォーマンスを調整します。
プログラムの実行場所となるシステムの種類が明確で、かつこのシステムの命令 / データ・キャッシュの構成が、デフォルトの構成 (-qtune 設定による) とは異なる場合は、キャッシュの特性を正確に指定することにより、コンパイラーは、特定のキャッシュ関連最適化によって得られる利点をさらに正確に算定できるようになります。
このオプションを有効にするには、最低でもレベル 2 の -O を指定して、 level サブオプション type とサブオプションを含める必要があります。
指針
サブオプション
他のレベルも使用できますが、現在のところ未定義です。システムに複数のレベルのキャッシュがある場合は、別の -qcache オプションを使用して各レベルを説明してください。
制限
キャッシュ構成に対して誤った値を指定したり、構成の異なるマシン上でプログラムを実行した場合は、プログラムの実行速度は遅くなりますが、正しく機能します。キャッシュ・サイズの正確な値がわからない場合は、無難な予想値を使用してください。
現在、-qcache オプションが効果を持つのは、-qhot オプションも指定された場合だけです。
例
システムが、命令用とデータ・レベル 1 用に複合キャッシュを持ち、キャッシュが双方向連結で、サイズが 8 KB で、64 バイトのキャッシュ・ラインを持つ場合にシステムのパフォーマンスを調整するには、次のようにします。
xlf95 -O3 -qhot -qcache=type=c:level=1:size=8:line=64:assoc=2 file.f
2 つのレベルのキャッシュを持つシステムのパフォーマンスを調整するには、次のように -qcache オプションを 2 つ使用します。
xlf95 -O3 -qhot -qcache=type=D:level=1:size=256:line=256:assoc=4 \ -qcache=type=D:level=2:size=512:line=256:assoc=2 file.f
2 つのタイプのキャッシュを持つシステムのパフォーマンスを調整する場合も、次のように -qcache オプションを 2 つ使用します。
xlf95 -O3 -qhot -qcache=type=D:level=1:size=256:line=256:assoc=4 \ -qcache=type=I:level=1:size=512:line=256:assoc=2 file.f
関連情報
-qtune オプション、 -qarch オプション、および -qhot オプションを参照してください。
構文
-qcclines | -qnocclines CCLINES | NOCCLINES
コンパイラーが条件付きコンパイル行を、固定ソース形式および F90 自由ソース形式で認識するかどうかを決定します。 IBM 自由ソース形式はサポートされていません。
デフォルト
-qsmp=omp をオンにした場合、デフォルトは -qcclines です。オフにした場合、デフォルトは -qnocclines です。
関連情報
「XL Fortran for AIX ランゲージ・リファレンス 」で『言語エレメント 』の章の「条件付きコンパイル 」を参照してください。
構文
-qcharlen=length CHARLEN(length)
これは廃止されたオプションです。依然として受け入れますが、無効です。文字定数の最大長は 32 767 バイト (32 KB) です。また文字変数の最大長は 32 ビット・モードで 268 435 456 バイト (256 MB) です。また文字変数の最大長は 64 ビット・モードで 2**40 バイトです。この限界は常に有効で、長いストリングを含むプログラムに移植性の問題が生じるのを防ぐのに十分な大きさとなっています。
構文
-qcheck | -qnocheck CHECK | NOCHECK
-qcheck は、-C オプションの長い形式です。
構文
-qci=numbers CI(numbers)
処理する INCLUDE 行の識別番号 (1 から 255) を指定します。 INCLUDE 行の終わりに数字が入っている場合は、 -qci オプションでその番号が指定されている場合のみ、そのファイルが含まれます。認識される識別番号のセットは、-qci オプションのすべてのオカレンスに対して指定されているすべての識別番号のユニオンです。
このオプションを使用すると、一種の条件付きコンパイルができます。あまり使用しないコード (たとえば WRITE ステートメントのデバッグ、追加のエラー・チェック・コード、XLF 固有のコード) を別のファイルに入れて、それらを処理するかどうかを個々のコンパイルに対して決定することができるからです。
例
REAL X /1.0/ INCLUDE 'print_all_variables.f' 1 X = 2.5 INCLUDE 'print_all_variables.f' 1 INCLUDE 'test_value_of_x.f' 2 END
この例では、-qci オプションを指定しないでコンパイルすると、単に X が宣言されて、それに値が割り当てられます。 -qci=1 を指定してコンパイルすると、インクルード・ファイルの 2 つのインスタンスが含まれ、 -qci=1:2 を指定してコンパイルすると、両方のインクルード・ファイルが含まれます。
制限
INCLUDE 行の任意の数字は広く行き渡っている Fortran 機能ではないので、それを使用すると、プログラムの移植性が制限される場合があります。
関連情報
「XL Fortran for AIX ランゲージ・リファレンス 」の INCLUDE ディレクティブについての節を参照してください。
構文
-qcompact | -qnocompact COMPACT | NOCOMPACT
コード・サイズを大きくする最適化を抑制します。
デフォルトでは、パフォーマンスを改善するために最適化プログラムが使用する手法のために、プログラムが大きくなってしまう場合があります。ストレージが限られているシステムの場合は、-qcompact を使用して、発生する拡張を少なくすることができます。
規則
-qcompact を有効にしても、-Q とその他の最適化オプションは依然として機能しています。コード・サイズは、最適化中に自動的に行われるコードの複製を制限することで縮小されます。
構文
-qctyplss[(=[no]arg)] | -qnoctyplss CTYPLSS[([NO]ARG)]| NOCTYPLSS
タイプが指定されていない定数を使用できる場合に、必ず文字定数式が許可されるかどうかを指定します。他のプラットフォームからプログラムを移植するとき、この言語拡張機能が必要となる場合があります。
引き数
規則
-qctyplss を指定すると、文字定数式はホレリス定数であるかのように扱われ、したがって論理式および演算式で使用することができます。
制限
例
例 1 : 次の例では、コンパイラー・オプション -qctyplss を指定すると、文字定数式を使用することができます。
@PROCESS CTYPLSS INTEGER I,J INTEGER, PARAMETER :: K(1) = (/97/) CHARACTER, PARAMETER :: C(1) = (/'A'/) I = 4HABCD ! Hollerith constant J = 'ABCD' ! I and J have the same bit representation ! These calls are to routines in other languages. CALL SUB(%VAL('A')) ! Equivalent to CALL SUB(97) CALL SUB(%VAL(1HA)) ! Equivalent to CALL SUB(1627389952)" ! These statements are not allowed because of the constant-array ! restriction. ! I = C // C ! I = C(1) ! I = CHAR(K(1)) END
例 2: 次の例では、変数 J は、参照用に渡されます。サブオプション arg は、ホレリス定数が実整数引き数であるかのように渡されることを指定します。
@PROCESS CTYPLSS(ARG) INTEGER :: J J = 3HIBM ! These calls are to routines in other languages. CALL SUB(J) CALL SUB(3HIBM) ! The Hollerith constant is passed as if ! it were an integer actual argument
関連情報
「XL Fortran for AIX ランゲージ・リファレンス 」の『ホレリス定数』および 参照または値による引き数の引き渡しを参照してください。
構文
-qdbg | -qnodbg DBG | NODBG
-qdbg は -g オプションの長い形式です。
構文
-qddim | -qnoddim DDIM | NODDIM
配列が参照されるたびに、ポインティング先の境界が再評価されることを指定し、ポインティング先用の境界式に対する制約事項をいくつか除去します。
規則
デフォルト時には、ポインティング先配列のみが変数名を含む次元宣言子を持つことができ (その配列がサブプログラム内にある場合)、次元宣言子の変数は仮引き数、共通ブロックのメンバー、使用アソシエーションまたはホスト・アソシエーションでなければなりません。次元のサイズは、サブプログラムに対するエントリーで計算され、サブプログラムの実行中は一定の状態に保たれます。
例
|@PROCESS DDIM |INTEGER PTE, N, ARRAY(10) |POINTER (P, PTE(N)) |DO I=1, 10 | ARRAY(I)=I |END DO |N = 5 |P = LOC(ARRAY(2)) |PRINT *, PTE ! Print elements 2 through 6. |N = 7 ! Increase the size. |PRINT *, PTE ! Print elements 2 through 8. |END
構文
-qdirective[=directive_list] | -qnodirective[=directive_list] DIRECTIVE[(directive_list)] | NODIRECTIVE[(directive_list)]
トリガー定数として知られる文字列を指定します。これらの文字列は、注釈行をコンパイラーの注釈ディレクティブとして識別します。
背景情報
ディレクティブとは、Fortran ステートメントではない行ですが、コンパイラーが認識し動作させる行のことです。たとえば @PROCESS ディレクティブのように、コンパイラーが常に認識するディレクティブもあります。最大限の柔軟性を持たせるようにするため、将来の XL Fortran コンパイラーに付属する可能性がある新しいディレクティブは、注釈行に含められます。これにより、他のコンパイラーがそれらのディレクティブを認識しなければ、移植性の問題を避けられます。
コンパイラーは、デフォルト時にはトリガー定数 IBM* を認識します。 -qsmp の指定には暗黙的に -qdirective=smp\$:\$omp:ibmp が含まれており、デフォルト時にはトリガー定数 SMP$、$OMP、IBMP もオンになります。 -qsmp=omp を指定する場合、コンパイラーはその時点までに指定したすべてのトリガー定数を無視し、 $OMP トリガー定数だけを認識します。 -qthreaded の指定には暗黙的に -qdirective=ibmt が含まれており、デフォルト時にはトリガー定数 IBMT もオンになります。
引き数
directive_list を持たない -qnodirective オプションは、以前に指定したディレクティブ識別子をすべてオフにします。 directive_list を持っている場合は、選択された識別子だけをオフにします。
directive_list を持たない -qdirective は以前の -qnodirective によってオフにされている場合でも、デフォルトのトリガー定数 IBM* をオンにします。
注
xlf95 -qdirective='dbg*' -qnodirective='IBM*' directives.f
例
@PROCESS FREE PROGRAM DIRECTV INTEGER A, B, C, D, E, F A = 1 ! Begin in free source form. B = 2 !OLDSTYLE SOURCEFORM(FIXED) ! Switch to fixed source form for this include file that has not ! been converted yet. INCLUDE 'set_c_and_d.inc' !IBM* SOURCEFORM(FREE) E = 5 ! Back to free source form. F = 6 END
この例の場合は、-qdirective=oldstyle オプションを指定してコンパイルし、INCLUDE 行の前の SOURCEFORM ディレクティブをコンパイラーが必ず認識するようにします。自由ソース形式を使用するためにインクルード・ファイルを変換した後は、-qnodirective オプションを指定してコンパイルすることができ、SOURCEFORM(FIXED) ディレクティブは無視されます。
関連情報
「XL Fortran for AIX ランゲージ・リファレンス 」の SOURCEFORM ディレクティブについての節を参照してください。
誤ったトリガー定数を使用すると、警告メッセージまたはエラー・メッセージ、あるいはその両方が生成されることがあります。適切な関連するトリガー定数については、「XL Fortran for AIX ランゲージ・リファレンス 」の『ディレクティブ 』の章にある特定のディレクティブ・ステートメントを確認してください。
構文
-qdlines | -qnodlines DLINES | NODLINES
-qdlines は -D オプションの長い形式です。
構文
-qdpc[=e] | -qnodpc DPC[(E)] | NODPC
実定数を DOUBLE PRECISION 変数に割り当てるときに、最大の精度を得られるように実定数の精度を高めます。他のプラットフォームからプログラムを移植するとき、この言語拡張機能が必要となる場合があります。
規則
-qdpc を指定すると、すべての基本実定数 (たとえば 1.1) が倍精度定数として処理されます。コンパイラーは、これを指定しないと DOUBLE PRECISION 変数への割り当て中に失われてしまう精度を持つ数字を保存します。 -qdpc=e を指定すると、指数 e を持つ定数も含め、すべての単精度定数が倍精度定数として処理されます。
このオプションは、kind タイプのパラメーターが指定されている定数には影響を与えません。
例
@process nodpc subroutine nodpc real x double precision y data x /1.000000000001/ ! The trailing digit is lost data y /1.000000000001/ ! The trailing digit is lost print *, x, y, x .eq. y ! So x is considered equal to y end @process dpc subroutine dpc real x double precision y data x /1.000000000001/ ! The trailing digit is lost data y /1.000000000001/ ! The trailing digit is preserved print *, x, y, x .eq. y ! So x and y are considered different end program testdpc call nodpc call dpc end
コンパイルされると、このプログラムは次のように印刷して、
1.000000000 1.00000000000000000 T 1.000000000 1.00000000000100009 F
-qdpc によって余分な精度が保持されていることを示します。
関連情報
-qautodbl オプションと -qrealsize オプションは、さらに汎用的なオプションで、-qdpc が実行することも実行できます。これらのオプションのいずれかが指定されている場合には、-qdpc は効力を持ちません。
構文
-qdpcl | -qnodpcl DPCL | NODPCL
実行可能ファイルの構造を見るときに、動的プローブ・クラス・ライブラリー (DPCL) に基づくツールが使用することのできるシンボルを生成します。
-qdpcl オプションを指定すると、コンパイラーはプログラム内でコードのブロックを定義するためのシンボルを発行します。その後、DPCL インターフェースを使用するツールを使って、このオプションを指定してコンパイルしたオブジェクト・ファイル用に、メモリー使用状況などのパフォーマンス情報を調べることができます。
制限
-qdpcl を指定するときには、-g オプションも指定する必要があります。
構文
-qescape | -qnoescape ESCAPE | NOESCAPE
ストリング、ホレリス定数、H 編集記述子、ストリング編集記述子で、バックスラッシュがどのように扱われるかを指定します。バックスラッシュは、エスケープ文字またはバックスラッシュ文字として扱うことができます。他のプラットフォームからプログラムを移植するとき、この言語拡張機能が必要となる場合があります。
デフォルト
デフォルト時には、バックスラッシュはこれらのコンテキスト内のエスケープ文字であると解釈されます。 -qnoescape を指定した場合、バックスラッシュはバックスラッシュ文字として扱われます。
デフォルト設定は、次のようなことを行う場合に便利です。
変更されないままで渡されるバックスラッシュ文字に依存するコードを書いたり移植したりする場合は、-qnoescape を指定して、特殊な解釈が行われないようにします。また、デフォルト設定下の単一のバックスラッシュ文字を表すのに、\\ を書くこともできます。
例
$ # Demonstrate how backslashes can affect the output $ cat escape.f PRINT *,'a\bcde\fg' END $ xlf95 escape.f ** _main === End of Compilation 1 === 1501-510 Compilation successful for file escape.f. $ a.out cde g $ xlf95 -qnoescape escape.f ** _main === End of Compilation 1 === 1501-510 Compilation successful for file escape.f. $ a.out a\bcde\fg
デフォルト設定 -qescape による最初のコンパイルで、バックスペース文字として \b が印刷され、用紙送り文字として \f が印刷されます。 -qnoescape オプションを指定すると、他の文字と同じようにバックスラッシュが印刷されます。
関連情報
XL Fortran が認識するエスケープ・シーケンスのリストは、表 25 に記載されています。
構文
-qessl | -qnoessl
Fortran 90 組み込みプロシージャーの代わりに ESSL ルーチンを使用することができます。
科学技術計算サブルーチン・ライブラリー (ESSL) は、サブルーチンの集まりで、各種科学技術計算アプリケーション用に幅広い算術関数を提供します。これらのサブルーチンでは、RS/6000(R) ワークステーションでパフォーマンス調整が行われます。 Fortran 90 組み込みプロシージャーの中には ESSL と類似のものがあります。これらの Fortran 90 組み込みプロシージャーを ESSL とリンクするとパフォーマンスが向上します。この場合、Fortran 90 組み込みプロシージャーのインターフェースを保持することができ、 ESSL を使用してパフォーマンスを向上させる追加の利点を得ることができます。
規則
-lessl でリンクするときは、ESSL シリアル・ライブラリーを使用します。 -lesslsmp でリンクするときは、ESSL SMP ライブラリーを使用します。
-qessl でコードをコンパイルするときは常に、-lessl または -lesslsmp を使用する必要があります。 ESSL は、v3.1.2 以降が推奨されます。ライブラリーは、 32 ビット環境と 64 ビット環境をサポートします。
次の MATMUL 関数呼び出しでは、-qessl を使用可能にすると、ESSL ルーチンを使用することができます。
real a(10,10), b(10,10), c(10,10) c=MATMUL(a,b)
例
関連情報
ESSL ライブラリーは、XL Fortran コンパイラーと一緒に出荷されることはありません。これら 2 つのライブラリーの詳細については、「Engineering and Scientific Subroutine Library for AIX Guide and Reference 」を参照してください。
構文
-qextchk | -qnoextchk EXTCHK | NOEXTCHK
共通ブロック、プロシージャー定義、プロシージャー参照、モジュール・データのタイプ・チェック情報を設定します。リンカーは後でこの情報を使用して、コンパイル単位間の不一致を検出できます。
規則
コンパイル時に、-qextchk はプロシージャー定義、参照、モジュール・データの整合性を検査します。
-qextchk はリンク時に、タイプ、形状、引き渡しモード、クラスなどの点で実引き数が対応する仮引き数と一致するかどうか、また、共通ブロックの宣言とモジュールの宣言に整合性があるかどうかを検査します。
構文
-qextern=names
ユーザー作成のプロシージャーを、XL Fortran 組み込み関数の代わりに呼び出せるようにします。names はプロシージャー名をコロンで区切ったリストです。プロシージャー名は、コンパイル中の個々のコンパイル単位の EXTERNAL ステートメント内にあるかのように扱われます。プロシージャー名が XL Fortran 組み込みプロシージャーと競合する場合は、このオプションを使用して組み込みプロシージャーの代わりにソース・コード内のプロシージャーを呼び出します。
引き数
プロシージャー名をコロンで区切ってください。
該当する製品レベル
Fortran 90 および Fortran 95 は組み込み関数およびサブルーチンを多数持っているので、 FORTRAN 77 プログラムではこのオプションが必要なかった場合でも、このオプションを使用しなければならない場合があります。
例
SUBROUTINE GETENV(VAR) CHARACTER(10) VAR PRINT *,VAR END CALL GETENV('USER') END
オプションを指定しないでこのプログラムをコンパイルすると、GETENV への呼び出しが実際には組み込みサブルーチンを呼び出していて、プログラムに定義されているサブルーチンを呼び出さないため、コンパイルが失敗します。 -qextern=getenv を指定してコンパイルを行うと、プログラムを正しくコンパイルして実行することができます。
構文
|-qextname[=name1[:name2...]] | -qnoextname |EXTNAME[(name1: name2:...)] | NOEXTNAME
グローバル・エンティティーの名前に下線を追加して、システムからプログラムを移植する場合に役立ちます (これが混合言語プログラムに対する規則であるシステムの場合)。 |-qextname=name1[:name2...] を使用して、特定の |グローバル・エンティティーを識別します。 |名前付きエンティティーのリストの場合、それぞれの名前をコロンで区切ってください。
メインプログラムの名前は影響を受けません。
-qextname オプションは、XL Fortran に混合言語プログラムを変更しないで移植する一助となります。このオプションを使用して以下が原因となって発生する命名の問題を回避します。
-qextname が解決する命名の問題のインスタンスを数個しかプログラムが持っていない場合は、 ld コマンドの -brename オプションを使用して、新しい名前を選択した方がよい場合もあります。
制限
プログラムのすべてのソース・ファイルは、必須モジュール・ファイルのソース・ファイルも含め、同じ -qextname 設定でコンパイルする必要があります。
|xlfutility モジュールを使用してサービスおよびユーティリティー・サブプログラムが |正しく宣言されていることを確認する場合は、-qextname を指定してコンパイルする際に名前を |xlfutility_extname に変更する必要があります。
|コンパイル単位内に参照される複数のサービスおよびユーティリティー・サブプログラムがある場合、 |名前が指定されていない -qextname と xlfutility_extname モジュールを使用すると、 |プロシージャー宣言検査が正しく機能しない可能性があります。
例
@PROCESS EXTNAME SUBROUTINE STORE_DATA CALL FLUSH(10) ! Using EXTNAME, we can drop the final underscore. END SUBROUTINE
|@PROCESS(EXTNAME(sub1)) |program main | external :: sub1, sub2 | call sub1() ! An underscore is added. | call sub2() ! No underscore is added. |end program |
関連情報
このオプションは、他のオプションに指定された名前にも影響を与えます。したがって、コマンド行上の名前に下線を入れる必要はありません。影響を受けるオプションは、-qextern オプション、-Q オプション、および -qsigtrap オプションです。
構文
-qfdpr | -qnofdpr
AIX フィードバック指定プログラム再構築 (fdpr) パフォーマンス調整ユーティリティーが、生成される実行可能ファイルを最適化する際に必要とする情報をオブジェクト・ファイルに提供します。
制限
fdpr パフォーマンス調整ユーティリティーには独自の制限がいくつかあるため、このユーティリティーを使用しても、どのプログラムの実行時間も必ず短縮されるとは限りません。また、オリジナル・プログラムとまったく同じ結果が得られる実行可能プログラムが必ず生成されるとも限りません。
-qfdpr コンパイラー・オプションを使用した場合、リオーダーされるオブジェクト・ファイルは、このフラグを付けて作成されたオブジェクト・ファイルだけです。そのため、-qfdpr を使用する場合には、プログラム内のすべてのオブジェクト・ファイルにこのオプションを使用するべきです。 -qfdpr コンパイラー・オプションを使用した場合、静的リンクを作成してもパフォーマンスは向上しません。
ある実行可能プログラムに組み込まれたオブジェクトのうち、その一部にだけ -qfdpr を使用してしまうと、 fdpr は、fdpr を付けて作成されたオブジェクトに対してだけしか最適化を実行しません。このことは、-qfdpr を使用してコンパイルされたプログラムでは、fdpr を使用してもあまり効果は上がらないことを意味します。 (ライブラリー・コードは、-qfdpr を使用してコンパイルされないため) ライブラリー・コードは最適化されないからです。
fdpr コマンドで実行する最適化は、-qpdf オプションで実行する最適化と似たものです。
関連情報
詳細については、fdpr について説明しているページと「AIX コマンド・リファレンス 」を参照してください。
構文
-qfixed[=right_margin] FIXED[(right_margin)]
入力ソース・プログラムが固定ソース形式になっていることを示し、任意で行の最大長を指定します。
FREE ディレクティブまたは FIXED @PROCESS ディレクティブを使用してコンパイル単位の形式を切り換えたり、 SOURCEFORM 注釈ディレクティブを使用して (コンパイル単位内部でも) ファイルの残りの形式を切り換えることはできますが、コンパイラーの実行時に指定されたソース形式は、すべての入力ファイルに適用されます。
他のシステムのソース・コードの場合、デフォルトよりも大きい右マージンを指定しなければならない場合もあります。このオプションを使用すれば、最大右マージン 132 を指定することができます。
デフォルト
-qfixed=72 は、xlf、xlf_r、xlf_r7、fort77、および f77 コマンドのデフォルトです。 -qfree=f90 は xlf90、xlf90_r、xlf90_r7、xlf95、xlf95_r、および xlf95_r7 コマンド用のデフォルトです。
関連情報
-qfree オプションを参照してください。
このソース形式の正確な仕様については、「XL Fortran for AIX ランゲージ・リファレンス 」の「固定ソース形式 」を参照してください。
構文
-qflag=listing_severity:terminal_severity FLAG(listing_severity,terminal_severity)
listing_severity と terminal_severity の両方を指定する必要があります。
診断メッセージを指定されたレベルまたはそれ以上のレベルに限定します。 listing_severity またはそれ以上の重大度を持つメッセージだけがリスト・ファイルに書き込まれます。 terminal_severity またはそれ以上の重大度を持つメッセージだけが端末装置に書き込まれます。 -w は、-qflag=e:e の短い形式です。
引き数
重大度レベル (最低から最高) は次のとおりです。
|
-qflag オプションは、指定された -qlanglvl、-qsaa などのオプションをオーバーライドします。
デフォルト
このオプションのデフォルトは i:i です。そのため、重要な通知メッセージを見逃すことはありません。
関連情報
-qlanglvl オプションおよび XL Fortran エラー・メッセージに関する情報を参照してください。
構文
-qfloat=options FLOAT(options)
浮動小数点計算のスピードを上げて精度を改善するための、別の方法を選択します。
このオプションは、複数の個別のオプションに代わるものです。これは、-qfold、 -qmaf、または新規コード用の関連オプションの代わりに使用する必要があります。
-qfloat 設定を変更する場合には、その前に 第 7 章, XL Fortran 浮動小数点処理に記述されている事柄と IEEE 標準を熟知しておかなければなりません。
デフォルト
デフォルト設定はサブオプション nofltint、fold、nohsflt、nohssngl、maf、nonans、norndsngl、norrm、norsqrt、および nostrictnmaf を使用します。以下に示すように、このデフォルトを変更するオプションもいくつかあります。
個々のサブオプションのデフォルト設定は、明示的に変更されない限り有効です。たとえば、-qfloat=nofold を選択すると、nohsflt、nohssngl、または関連オプションの設定は影響を受けません。
引き数
使用可能なサブオプションにはそれぞれ、 fold と nofold のような肯定の形式と否定の形式があります。否定の形式は肯定の形式の反対です。
ライブラリー関数 (-qfloat=fltint が指定されていない場合、または別のオプションによって示されていない場合、デフォルトで呼び出される) は、整数の表現可能範囲外の浮動小数点値をチェックし、範囲外の浮動小数点値が渡された場合は、最小または最大の表現可能整数を戻します。
Fortran 言語では、整数の表現可能範囲外の浮動小数点値をチェックする必要がありません。効率を向上させるために、-qfloat=fltint によって使用されるインライン・シーケンスはこのチェックを行いません。範囲外の値が渡された場合、インライン・シーケンスは未定義の結果を生成します。
このサブオプションは、デフォルトではオフになりますが、 -O3 の最適化レベルでは、-qstrict も指定されている場合を除いてオンになります。
注:
PowerPC 浮動小数点ユニットの機能のために、この設定は、任意の -qarch PowerPC サブオプションでコンパイルしたプログラムには常に有効です。 -q64 と -qarch=com を同時に指定する場合、rndsngl サブオプションもオンになります。
このサブオプションは、デフォルトではオフになりますが、 -O3 を指定すると、-qstrict も指定されている場合を除いてオンになります。
セマンティクスを厳密にするには、-qstrict と -qfloat=strictnmaf を両方とも指定します。
構文
-qflttrap[=suboptions] | -qnoflttrap FLTTRAP[(suboptions)] | NOFLTTRAP
実行時に検出する浮動小数点演算例外条件のタイプを決定します。該当する例外が発生すると、プログラムは SIGTRAP シグナルを受信します。
引き数
デフォルト
サブオプションなしの -qflttrap オプションは -qflttrap=ov:und:zero:inv:inex と同等ですが、このデフォルトには enable が含まれていません。このため、fpsets または類似のサブルーチンがソースに既存している場合のみ、有効になる可能性があります。サブオプションを使ったり、使わなかったりして -qflttrap を複数回指定すると、サブオプションなしの -qflttrap は無視されます。
AIX バージョン 4.3.3 以降では、無効な IEEE SQRT 演算を含むプログラムをコンパイルし、その後そのプログラムを実行するときに -qflttrap=inv:en を使用する場合、 PowerPC マシンでは予定の SIGTRAP シグナルが発生しなかったり、 POWER マシン上ではまったく発生しないことがあります。
この問題が修正されるのは、AIX バージョン 4.3.3 およびそれ以降のレベルのオペレーティング・システムだけです。 次のコマンドを指定します。
export SQRT_EXCEPTION=3.1
例
次のプログラムをコンパイルします。
REAL X, Y, Z DATA X /5.0/, Y /0.0/ Z = X / Y END
次のコマンドを使用します。
xlf95 -qflttrap=zerodivide:enable -qsigtrap divide_by_zero.f
除算が実行されると、プログラムは停止します。
zerodivide サブオプションは、ガードすべき例外のタイプを識別します。 enable サブオプションは、例外が発生すると SIGTRAP シグナルを出します。 -qsigtrap オプションは、シグナルがプログラムを停止すると、通知出力を出します。
関連情報
-qsigtrap オプションを参照してください。
どんな場合にどんな方法で -qflttrap オプションを使用するかについての詳細な説明は、浮動小数点演算例外の検出とトラップを参照してください。特に、このオプションを使用し始めたばかりのときは、これを参照してください。
構文
-qfree[={f90|ibm}] FREE[({F90|IBM})]
ソース・コードが自由ソース形式になっていることを示します。 ibm サブオプションと f90 サブオプションは、それぞれ VS FORTRAN と Fortran 90 に対して定義されている自由ソース形式との互換性を指定します。 Fortran 90 用に定義した自由ソース形式は、Fortran 95 にも適用されることに注意してください。
FREE ディレクティブまたは FIXED @PROCESS ディレクティブを使用してコンパイル単位の形式を切り換えたり、 SOURCEFORM 注釈ディレクティブを使用して (コンパイル単位内部でも) ファイルの残りの形式を切り換えることはできますが、コンパイラーの実行時に指定されたソース形式は、すべての入力ファイルに適用されます。
デフォルト
-qfree そのものは、Fortran 90 自由ソース形式を指定します。
-qfixed=72 は xlf、xlf_r、xlf_r7、および f77/fort77 コマンド用のデフォルトです。-qfree=f90 は xlf90、xlf90_r、xlf90_r7、xlf95、xlf95_r、および xlf95_r7 コマンド用のデフォルトです。
関連情報
-qfixed オプションを参照してください。
-k は -qfree=f90 と同等です。
Fortran 90 自由ソース形式については、「XL Fortran for AIX ランゲージ・リファレンス 」の『自由ソース形式 』で説明されています。この形式は、現在および将来 Fortran 90 および Fortran 95 機能をサポートするコンパイラーに最大の移植性を与えるために使用される形式です。
IBM 自由ソース形式は、IBM VS FORTRAN コンパイラーの自由形式と同等で、System/370(TM) プラットフォームからのプログラムの移植を支援するためのものです。この形式については、「XL Fortran for AIX ランゲージ・リファレンス 」の「IBM 自由ソース形式 」に説明されています。
構文
-qfullpath | -qnofullpath
ソース・ファイルとインクルード・ファイルの完全なパス名、つまり絶対パス名は、コンパイルされたオブジェクト・ファイルの中にデバッグ情報と一緒に記録されます (-g オプション)。
実行可能ファイルをデバッグの前に別のディレクトリーへ移動する必要がある場合、または複数のバージョンのソース・ファイルがあってデバッガーが必ず元のソース・ファイルを使用するようにしたい場合は、 -qfullpath オプションを -g オプションと組み合わせて使用すると、ソース・レベル・デバッガーは正しいソース・ファイルを見つけることができます。
デフォルト
デフォルトでは、コンパイラーは元のソース・ファイルの相対パス名をそれぞれの .o ファイルの中に記録します。また、インクルード・ファイルの相対パス名が記録される場合もあります。
制限
-qfullpath は -g オプションがなくても機能しますが、 -g オプションを一緒に指定しなかった場合にはソース・レベルのデバッグはできません。
例
この例では実行可能ファイルは作成後に移動されますが、デバッガーは元のソース・ファイルを引き続き見つけることができます。
$ xlf95 -g -qfullpath file1.f file2.f file3.f -o debug_version ... $ mv debug_version $HOME/test_bucket $ cd $HOME/test_bucket $ xldb debug_version
関連情報
-g オプションを参照してください。
構文
-qhalt=severity HALT(severity)
コンパイル時メッセージの最大の重大度が、指定した重大度と等しいか、それを上回る場合、オブジェクト・ファイル、実行可能ファイル、アセンブラー・ソース・ファイルを作成する前に動作を停止します。 severity (重大度) は、i (通知)、l (言語)、w (警告)、 e (エラー)、s (重大エラー)、u (回復不能エラー)、q (「停止しない」を示す重大度) のいずれかです。
引き数
重大度レベル (最低から最高) は次のとおりです。
デフォルト
デフォルトは -qhalt=s です。この場合コンパイラーはコンパイルが失敗してもオブジェクト・ファイルを生成しません。
-qhalt オプションは -qobject オプションを、そして -qnoobject オプションは -qhalt オプションをオーバーライドできます。
構文
-qhot[=suboptions] | -qnohot HOT[=suboptions] | NOHOT
最適化実行時にループおよび配列言語に高位変換を実行するかどうか、また配列次元とデータ・オブジェクトに埋め込みを行いキャッシュ・ミスを避けるかどうかを決定します。
キャッシュ・アーキテクチャーをインプリメントしたことが原因となって、 2 の累乗となっている配列次元がキャッシュの使用効率を低下させる場合があります。オプションの arraypad サブオプションを使用すれば、コンパイラーは配列処理ループの効率を高められそうな配列次元を増やすことができます。 2 の累乗となっている複数の次元 (特に第 1 次元) を持った大きな配列がある場合や、キャッシュ・ミスやページ不在が原因で配列処理プログラムの実行速度が落ちる場合には、 -qhot=arraypad の指定を考慮してください。
-qhot を有効にするには、最低でもレベル 2 の -O を指定する必要があります。コンパイラーでは -O2 を想定しています。
引き数
n は整数値であるため、埋め込み値には配列エレメントの最大サイズを倍数にしたものを使用するようお勧めします。通常は 4、8、16 などを使用します。
-qhot=novector を指定すると、コンパイラーはループと配列に対して高位演算を実行しますが、特定のコードがベクトル・ライブラリー・ルーチンに対する呼び出しによって置換されている場所では最適化を実行しません。 -qhot=vector オプションは、プログラムの結果の精度に影響を及ぼす場合があります。それで、精度についての変更を受け入れられない場合は、 -qhot=novector または -qstrict のいずれかを指定する必要があります。
arraypad オプションと arraypad=n オプションの両方で、プログラム変更または等価のチェックは行われません。埋め込みが行われる場合、コンパイル済みプログラムが予測不能な結果を生成することがあります。
デフォルト
-C オプションは、変換をオフにします。
例
以下の例では、-qhot=vector オプションをオンにしますが、コンパイラーがコードを処理する前に、そのオプションをオフにします。
xlf95 -qhot=vector t.f -qhot=novector
関連情報
ループおよび配列言語の最適化には、実行される変換がリストされています。
構文
-qhsflt | -qnohsflt HSFLT | NOHSFLT
これは廃止されたオプションです。-qfloat オプションの hsflt サブオプションおよび nohsflt サブオプションに置き換えられました。
関連情報
このオプションの目的と制限については、浮動小数点パフォーマンスの最大化および -qfloat=hsflt オプションの技術情報を参照してください。
構文
-qhssngl | -qnohssngl HSSNGL | NOHSSNGL
これは廃止されたオプションです。-qfloat オプションの hssngl サブオプションおよび nohssngl サブオプションに置き換えられました。
構文
-qieee={Near | Minus | Plus | Zero} IEEE({Near | Minus | Plus | Zero})
コンパイル時に定数浮動小数点式を評価するときにコンパイラーが使用する丸めモードを指定します。
選択項目は次のとおりです。
このオプションは、XL Fortran サブルーチン fpsets など実行時に丸めモードを変更する方法と組み合わせて使用することを想定しています。このオプションは、コンパイル時の演算 (たとえば、 2.0/3.5 などのような定数式の計算) に使用される丸めモードを設定します。コンパイル時の演算と実行時の演算に同じ丸めモードを指定することにより、浮動小数点結果に矛盾が生じることを回避します。
実行時のデフォルト (最も近い値への丸め) モード以外に丸めモードを変更する場合は、必ず -qfloat=rrm も指定して、デフォルトの丸めモードでのみ適用される最適化をオフにしてください。
関連情報
丸めモードの選択、-O オプション、および -qfloat オプションを参照してください。
構文
-qinit=f90ptr INIT(F90PTR)
ポインターの初期アソシエーション状態をアソシエーション解除にします。これは、Fortran 90 だけでなく Fortran 95 にも当てはまることに注意してください。
このオプションを使用して、ポインターを定義する前に使用することによって生じた問題の発見および修正を行うことができます。
関連情報
「XL Fortran for AIX ランゲージ・リファレンス 」の『ポインター・アソシエーション』を参照してください。
構文
-qinitauto[=hex_value] | -qnoinitauto
hex_value の長さに応じて、自動変数用のストレージの個々のバイトまたはワード (4 バイト) を、特定の値に初期設定します。これにより、定義前に参照される変数を見つけることができます。たとえば、REAL 変数を NaNS 値に初期設定するための -qinitauto オプションと、-qflttrap オプションの両方を使用することにより、実行時に初期設定されていない REAL 変数を参照していないかどうかを識別することができます。 XL Fortran バージョン 5.1.1 以前は、このオプションを使用できたのは、ストレージの各バイトを初期設定するときだけでした。
hex_value をゼロに設定すると、自動変数はすべて使用前にクリアされます。プログラムの中には、変数はゼロに初期設定され、それらの変数が存在しないと機能しないと想定したり、プログラムが最適化されなければ機能し、最適化されると障害が発生すると想定するプログラムもあります。一般に、変数をすべてゼロ・バイトに設定すれば、そのような実行時エラーは回避されます。
それらのエラーを見つけて修正するには、正しくない結果が常に再生成されるようバイトの値をゼロ以外に設定します。この方法は、デバッグ・ステートメントを追加したり、シンボリック・デバッガーにプログラムをロードしてエラーを排除する場合に、特に価値があります。
hex_value を FF (255) に設定すると、「数字ではない」、つまり -NaNQ の初期値が REAL 変数および COMPLEX 変数に与えられます。これらの変数で演算を行っても、結果は NaNQ 値になり、初期設定されていない変数が計算で使用されたことが明らかになります。
このオプションは、サブプログラム内に初期設定されていない変数を含んでいるプログラムをデバッグするときに役立ちます。たとえば、NaNS 値を使用して REAL 変数を初期設定するときに使用できます。繰り返したときに倍精度の NaNS 値を持つ 8 桁の 16 進数を指定することにより、8 バイトの REAL 変数を倍精度の NaNS 値に初期設定することができます。たとえば、7FBFFFFF のような数値を指定することができます。これは、REAL(4) 変数に入れられると、単精度の NaNS 値を持つことになります。 7FF7FFFF は、REAL(4) 変数に入れられると、単精度の NaNQ 値を持つことになります。 REAL(8) 変数に同じ数値を 2 回入れる (7FF7FFFF7FF7FFFF) と、倍精度の NaNS 値を持つようになります。
引き数
デフォルト
制限
例
次の例では、自動変数のワード初期設定を実行する方法が示されています。
subroutine sub() integer(4), automatic :: i4 character, automatic :: c real(4), automatic :: r4 real(8), automatic :: r8 end subroutine
次のオプションを指定してコードをコンパイルする場合、 hex_value が 3 桁以上になったら、コンパイラーはワード初期設定を実行します。
-qinitauto=0cf
コンパイラーは、i4、r4、および r8 変数の場合には、
hex_value にゼロを埋め込み、
c 変数の場合には最初の 16 進数字を切り捨てることにより、変数を初期設定します。
変数 | 値 |
---|---|
i4 | 000000CF |
c | CF |
r4 | 000000CF |
r8 | 000000CF000000CF |
関連情報
-qflttrap オプション、および「XL Fortran for AIX ランゲージ・リファレンス 」の AUTOMATIC ディレクティブについての節を参照してください。
構文
-qintlog | -qnointlog INTLOG | NOINTLOG
式およびステートメント内に整数と論理データ・エンティティーを混在させることができることを指定します。整数オペランドで指定する論理演算子は、それらの整数に対してビット単位で操作し、整数演算子は論理オペランドの内容を整数と見なします。
制限
次の演算では、論理変数を使用することができません。
例
INTEGER I, MASK, LOW_ORDER_BYTE, TWOS_COMPLEMENT I = 32767 MASK = 255 ! Find the low-order byte of an integer. LOW_ORDER_BYTE = I .AND. MASK ! Find the twos complement of an integer. TWOS_COMPLEMENT = .NOT. I END
関連情報
組み込み関数 IAND、IOR、IEOR、および NOT を使用して、ビット単位の論理演算を行うこともできます。
構文
-qintsize=バイト INTSIZE(バイト)
デフォルトの INTEGER および LOGICAL データ・エンティティー (つまり、長さまたは種類が指定されていないデータ・エンティティー) のサイズを設定します。
指定されたサイズ 1 は、以下のようなデータ・エンティティーに適用されます。
バイト で許可されているサイズは、以下のとおりです。
このオプションは、データのデフォルト・サイズが異なるシステムから、プログラムを変更せずに移植できるようにするためのものです。たとえば、16 ビットのマイクロプロセッサー用に書かれたプログラムには -qintsize=2 が必要で、 CRAY コンピューター用に書かれたプログラムには -qintsize=8 が必要です。このオプションのデフォルト値 4 は、大方の 32 ビット・コンピューター用に書かれたコードに適しています。 -q64 コンパイラー・オプションを指定しても、 -qintsize のデフォルト設定に影響はないことに注意してください。
制限
このオプションは、データ・エンティティーのサイズを大きくするための一般的な方法として機能させるためのものではありません。用途は、他のシステム用に作成されたコードとの互換性を維持することに限定されています。
PARAMETER ステートメントを追加して、引き数として渡す定数に明示的な長さを指定する必要がある場合があります。
例
次の例を見れば、変数、リテラル定数、組み込み関数、算術演算子、I/O 操作が、変更されたデフォルト整数サイズをどのように処理するかが理解できます。
@PROCESS INTSIZE(8) PROGRAM INTSIZETEST INTEGER I I = -9223372036854775807 ! I is big enough to hold this constant. J = ABS(I) ! So is implicit integer J. IF (I .NE. J) THEN PRINT *, I, '.NE.', J END IF END
次の例は、整数のデフォルト・サイズでのみ機能します。
CALL SUB(17) END SUBROUTINE SUB(I) INTEGER(4) I ! But INTSIZE may change "17" ! to INTEGER(2) or INTEGER(8). ... END
デフォルト値を変更する場合は、INTEGER(4) の代わりに INTEGER として I を宣言するか、以下のように、実引き数に長さを指定する必要があります。
@PROCESS INTSIZE(8) INTEGER(4) X PARAMETER(X=17) CALL SUB(X) ! Use a parameter with the right length, or CALL SUB(17_4) ! use a constant with the right kind. END
関連情報
-qrealsize オプションおよび「XL Fortran for AIX ランゲージ・リファレンス 」の 『タイプ・パラメーターおよび指定子』を参照してください。
構文
-qipa[=suboptions] -qnoipa
プロシージャー間で詳細な分析 (プロシージャー間分析、つまり IPA) を行うことによって、-O 最適化を増大させます。
-qipa を指定するときには、-O、-O2、-O3、-O4、または -O5 オプションも指定する必要があります。 (-O5 オプションを指定することは、 -O4 オプションと -qipa=level=2 を指定することと同じです。) パフォーマンスをさらに改善するために、-Q オプションを指定することができます。 -qipa は、最適化実行中、および単一プロシージャーから複数プロシージャー (おそらく別のソース・ファイル内にある) へのインライン化実行中、そして、それらのリンク実行中に調べられる区域を拡張します。
サブオプションを指定することによって、実行される最適化を微調整することができます。
このオプションを使用するために必要なステップは、次のとおりです。
コンパイル中に、コンパイラーは .o ファイルにプロシージャー間分析情報を格納します。リンク中に、-qipa オプションはアプリケーション全体の完全な最適化を再発生させます。
-# とともにこのオプションを指定する場合、コンパイラーは IPA リンク・ステップの後にリンカー情報を表示しないことにご注意ください。これは、コンパイラーが IPA を実際に呼び出していないためです。
IPA は、コンパイル時間のフェーズで以下のサブオプションを使用します。
コンパイルとリンクを同じステップで実行した場合で、 -S あるいはリストされているオプションを指定しない場合、-qipa=noobject は暗黙になります。
プログラムに noobject サブオプションを使用して作成したオブジェクト・ファイルが含まれる場合、 -qipa を使用してプログラムをリンクする前に、エントリー・ポイント (実行可能プログラムの場合はメインプログラム、ライブラリーの場合はエクスポートされたプロシージャー) を含むファイルがあれば -qipa オプションを指定してコンパイルする必要があります。
IPA は、リンク時間のフェーズで以下のサブオプションを使用します。
デフォルト・レベルは 1 です。
-qlist コンパイラー・オプションまたは -qipa=list コンパイラー・オプションによってオブジェクト・リストが要求されたイベントにおいて、リンク・フェーズ中に出力リスト・ファイル名を指定することにより、ユーザーが出力のタイプを指示できるようにします。 filename サブオプションを指定しなかった場合、デフォルト・ファイル名は「a.lst」になります。
short を指定した場合は、オブジェクト・ファイル・マップ、ソース・ファイル・マップ、グローバル・シンボル・マップのセクションが組み込まれます。long を指定した場合は、オブジェクト解像度警告、オブジェクト参照マップ・セクション、インライン報告書、区画マップ・セクションに加えて、それに先行するセクションも表示されます。
-qipa オプションと -qlist オプションを同時に指定すると、IPA は a.lst ファイルを生成し、既存の a.lst ファイルがあればそれらを上書きします。 a.f というソース・ファイルがあるとすると、IPA のリストにより、通常のコンパイラー・リスト a.lst が上書きされます。代替のリスト・ファイル名を指定するときには、 list=filename サブオプションを使用できます。
PDF プロファイル情報を含むプロファイル・データ・ファイルの名前を指定します。 filename を指定しない場合は、デフォルト・ファイル名は、 __pdf になります。プロファイルは現行作業ディレクトリーか、 PDFDIR 環境変数が指名しているディレクトリーに置かれます。これにより、プログラマーは、同時に複数の実行可能ファイルを同じ PDFDIR を使用して稼動することができます。こうすると、動的ライブラリーの PDF を使用したチューニングに特に有効です。 (チューニングの最適化についての詳細は、-qpdf オプションを参照してください。)
isolated、missing、pure、safe、および unknown の主な使用目的は、 -qipa を指定してコンパイルしていないライブラリー・ルーチンへの呼び出しに対して、最適化をどの程度安全に実行するかを指定することです。
以下のコンパイラー・オプションは、 -qipa のリンク時間のフェーズに影響があります。
該当する製品レベル
このオプションは XL Fortran バージョン 3 の -qipa オプションと類似していますが、まったく同じではありません。すでに -qipa オプションが入っている makefile がある場合は、新規のサブオプションを使用するよう必要に応じて修正してください。
規則
正規表現は、以下のサブオプションでサポートされています。
正規表現の構文規則について、以下に説明します。
式 | 説明 |
---|---|
string | string で指定したすべての文字と突き合わせます。たとえば、test は、testimony、 latest、intestine と突き合わせます。 |
^string | 行の先頭に置かれている場合にのみ、 string によって指定されているパターンと突き合わせます。 |
string$ | 行の末尾に置かれている場合にのみ、 string によって指定されているパターンと突き合わせます。 |
str.ing | すべての文字と突き合わせます。たとえば、t.st は test、tast、tZst、および t1st と突き合わせます。 |
string\.$ | バックスラッシュ (\) は、その文字を突き合わせるための特殊エスケープ文字に使用することができます。たとえば、ピリオドで終了する行を検索する場合、 .$ という式では、最低でも 1 つの文字を含むすべての行が表示されます。ピリオド (.) をエスケープするには、\.$ と指定します。 |
[string] | string で指定したすべての文字と突き合わせます。たとえば、t[a-g123]st は tast および test とは突き合わせますが、 t-st または tAst とは突き合わせません。 |
[^string] | string で指定した文字とは突き合わせません。たとえば、t[^a-zA-Z]st は t1st、 t-st、および t,st とは突き合わせますが、 test または tYst とは突き合わせません。 |
string* | string によって指定されたパターンの、ゼロ回以上のオカレンスと突き合わせます。たとえば、te*st は、tst、test、および teeeeeest と突き合わせます。 |
string+ | string によって指定されたパターンの、1 回以上のオカレンスと突き合わせます。たとえば、t(es)+t は、test、 tesest とは突き合わせますが、tt. との突き合わせは行いません。 |
string? | string によって指定されたパターンの、ゼロ回以上のオカレンスと突き合わせます。たとえば、te?st は、tst または test のいずれかと突き合わせます。 |
string{m,n} | string によって指定されたパターンの m 回と n 回の間のオカレンスを突き合わせます。たとえば、a{2} は aa と、また b{1,4} は b、bb、bbb、および bbbb とそれぞれ突き合わせます。 |
string1 | string2 | string1 または string2 のいずれかによって指定されたパターンと突き合わせます。たとえば、s | o は s と o の両方の文字と突き合わせます。 |
関数名だけが考慮されるため、正規表現は自動的に ^ および $ 文字で囲まれます。たとえば、-qipa=noinline=^foo$ は -qipa=noinline=foo と同一です。 そのため、 -qipa=noinline=bar の場合、bar は決してインライン化されませんが、 bar1、teebar、barrel はインライン化される可能性があります。
例
一連のファイルをプロシージャー間分析でコンパイルする方法を次に示します。
xlf95 -O -qipa f.f xlf95 -c -O3 *.f -qipa=noobject xlf95 -o product *.o -qipa -O
次の例では、パフォーマンスを向上させるために正規表現を使って、上で示したのと同じファイルとプロシージャー間分析とをリンクする方法を示します。この例では、関数 user_abort はプログラムを終了し、その関数のルーチン user_trace1、user_trace2、および user_trace3 はまれにしか呼び出されないものと想定します。
xlf95 -o product *.o -qipa=exit=user_abort:lowfreq=user_trace[123] -O
関連情報
-O オプション、-p オプション、および -Q オプションを参照してください。
構文
-qkeepparm
背景情報
プロシージャーは、通常、着信パラメーターを入り口点のスタックに格納します。しかし、-O を指定してコードをコンパイルすれば、格納されているパラメーターのうち、その後プロシージャーで使用する予定のないものを最適化プログラムによって取り除ける場合があります。
-qkeepparm コンパイラー・オプションを指定して、最適化しているときでもそのパラメーターがスタックに保管されることを保証します。これは実行のパフォーマンスにマイナスの影響を与える可能性があります。このオプションは、さらに、着信パラメーターの値をスタックにただ保存しておくことにより、デバッガーなどのツールに送られる着信パラメーターの値を使用できるようにします。
構文
-qlanglvl={suboptions} LANGLVL({suboptions})
非適合の検査を行う言語標準 (または標準のスーパーセットまたはサブセット) を決定します。非適合のソース・コード、およびそのような非適合を許可するオプションを識別します。
規則
コンパイラーは、言語レベルで許可されていない構文を指定していることを検出すると、重大度コード L のメッセージを送出します。
引き数
デフォルト
デフォルトは -qlanglvl=extended です。 XL Fortran バージョン 6.1 以前は、デフォルトは -qlanglvl=90ext でした。 90ext サブオプションは、Fortran 90 言語標準の全機能と、拡張機能 (現在 Fortran 95 標準は含む) を受け入れるものであり、 extended と同等の働きをします。しかし、90ext サブオプションは廃止されているため、将来の問題を回避するには、できるだけ早く extended サブオプションの使用を開始する必要があります。
-qflag オプションは、このオプションをオーバーライドすることができます。
例
次の例では、Fortran 標準の組み合わせに準拠するソース・コードが示されています。
!---------------------------------------------------------- ! in free source form program tt integer :: a(100,100), b(100), i real :: x, y ... goto (10, 20, 30), i 10 continue pause 'waiting for input' 20 continue y= gamma(x) 30 continue b = maxloc(a, dim=1, mask=a .lt 0) end program !----------------------------------------------------------
次の図には、特定の -qlanglvl サブオプションがこのサンプル・プログラムに与える影響についての例が示されています。
指定した -qlanglvl サブオプション | 結果 | 理由 |
---|---|---|
95pure |
PAUSE ステートメントにフラグを 付ける 計算された GOTO ステートメント にフラグを付ける GAMMA 組み込み関数にフラグを 付ける |
Fortran 95 で削除された機能
|
95std |
PAUSE ステートメントにフラグを 付ける GAMMA 組み込み関数にフラグを 付ける |
Fortran 95 で削除された機能
|
extended | フラグを付けられるエラーはなし |
|
関連情報
-qflag オプション、-qhalt オプション、および -qsaa オプションを参照してください。
実行時オプションの設定に記載されている langlvl 実行時オプションは、コンパイル時にチェックできない実行時拡張機能を見つけるのに役立ちます。
構文
-qlargepage | -qnolargepage
ラージ・ページ・メモリー環境で実行するように設計されているプログラムが、 POWER4 およびより早いベース・システムで提供される大きな 16 MB ページを活用できるようにコンパイラーに指示します。 -qlargepage をラージ・ページ環境用に設計されたプログラムに使用すると、パフォーマンスが向上する可能性があります。ラージ・ページ・サポートを使用するための詳細については、「AIX パフォーマンス・マネージメント・ガイド 」を参照してください。
-qlargepage コンパイラー・オプションは、最適化プログラムをオンにする最適化レベルを指定したときだけ効果があります。最適化レベルを上げるほど効果が上がります。
関連情報
-qipa オプションを参照してください。
関連情報
-qipa オプションを参照してください。
関連情報
-qipa オプションを参照してください。
構文
-qlist | -qnolist LIST | NOLIST
リストのオブジェクト・セクションを作成するかどうかを指定します。
オブジェクト・リストを使用すると、生成コードのパフォーマンス特性の理解、および実行時の問題の診断に役立ちます。
-qipa オプションと -qlist オプションを同時に指定すると、IPA は a.lst ファイルを生成し、既存の a.lst ファイルがあればそれらを上書きします。 a.f というソース・ファイルがあるとすると、IPA のリストにより、通常のコンパイラー・リスト a.lst が上書きされます。これを回避するには、-qipa の list=filename サブオプションを使用して、代わりのリストを生成してください。
関連情報
リストとメッセージを制御するオプション、 オブジェクト・セクション、および -S オプションを参照してください。
構文
-qlistopt | -qnolistopt LISTOPT | NOLISTOPT
リスト・ファイル内のすべてのコンパイラー・オプションの設定を表示するか、または、選択したオプションだけを表示するかを決定します。これらの選択したオプションには、コマンド行またはディレクティブに指定されているオプションと、常にリストにあるオプションが含まれます。
このオプション・リストは、デバッグ中に使用すると、コンパイラー・オプションの特定の組み合わせにおいて問題が起きるかどうかをチェックすることができます。また、パフォーマンス・テスト中に使用すると、特定のコンパイルに対して有効な最適化オプションを記録することができます。
規則
リストに常に表示されるオプションは次のとおりです。
関連情報
リストとメッセージを制御するオプションおよび オプション・セクションを参照してください。
構文
-qlm | -qnolm LM | NOLM
ライセンス管理制御システム (LM) を使用可能にしたり、使用不能にしたりします。 -qnolm オプションを指定しない場合、LM はデフォルトで使用可能になります。
デフォルトで LM を使用不能にしたい場合は、プログラムのコンパイル時にコマンド行で -qnolm コンパイラー・オプションを使用するか、構成ファイル (xlf.cfg) 内にこのオプションを入れてください。
関連情報
コンパイラーの使用状況の追跡を参照してください。
構文
-qlog4 | -qnolog4 LOG4 | NOLOG4
論理オペランドを持つ論理演算の結果が、LOGICAL(4) であるか、それともオペランドの最大長を持つ LOGICAL であるかを指定します。
このオプションを使用すると、元々 IBM VS FORTRAN コンパイラー用に書かれたコードを移植することができます。
引き数
-qlog4 は常に結果を LOGICAL(4) にし、 -qnolog4 は結果をオペランドの長さに依存させます。
制限
論理値のデフォルト・サイズを変更するのに -qintsize を使用する場合、-qlog4 は無視されます。
構文
-qmaxmem=Kbytes MAXMEM(Kbytes)
コンパイラーが特定のメモリー集中の最適化を実行するときに、割り振るメモリーの量を指定キロバイト数に制限します。値 -1 を指定すれば、制限チェックは行わず、必要なだけメモリーを使って最適化を実行します。
デフォルト
-O2 最適化レベルでは、デフォルトの -qmaxmem 設定は 2048 KB です。 -O3 最適化レベルでは、デフォルトの設定は無制限 (-1) です。
規則
指定されたメモリーの容量が不十分で、コンパイラーが特定の最適化を算出できない場合は、コンパイラーがメッセージを発行し最適化の度合いが減ります。
このオプションは、 -O オプションと組み合わせた場合のみ効果があります。
-O2 を指定してコンパイルするときには、コンパイル時メッセージが限界を上げるように指示する場合にその指示に従うだけで十分です。-O3 を指定してコンパイルするときには、マシンの実行によりストレージが不足するためにコンパイルが停止する場合に、限界を設定する必要がある場合があります。この場合は、2048 以上の値で開始し、過大なストレージをコンパイルが要求し続ける場合にはこの値を減らします。
注:
制限
コンパイルされるソース・ファイル、ソース・コード内のサブプログラムのサイズ、マシン構成、システム上の作業負荷によっては、限界を高く設定し過ぎると、ページング・スペースを使い果たしてしまう場合があります。特に、値 -1 は、装備の充実したマシンでも、リソースを使い果たす場合があります。
関連情報
-O オプションおよび 第 8 章, XL Fortran プログラムの最適化を参照してください。
構文
-qmbcs | -qnombcs MBCS | NOMBCS
文字リテラル定数、ホレリス定数、H 編集記述子、文字列編集記述子にマルチバイト文字セット (MBCS) 文字または Unicode 文字を含めることができるかどうかをコンパイラーに示します。
このオプションは、日本語のようなマルチバイト言語でデータを処理しなければならないアプリケーションのためのものです。
実行時にマルチバイト・データを正しく処理するには、コンパイル中と同じ値にロケールを設定してください (LANG 環境変数を使用するか、または libc setlocale ルーチンへの呼び出しを使用)。
規則
マルチバイト文字の個々のバイトは、1 桁としてカウントされます。
制限
Unicode データの読み書きを行うには、実行時にロケール値を UNIVERSAL に設定します。ロケールが設定されていないと、 Unicode が使用可能なアプリケーションとデータを交換できない場合があります。
構文
-qmixed | -qnomixed MIXED | NOMIXED
これは、-U オプションの長い形式です。
構文
-qmoddir=directory
コンパイラーが書き込むモジュール・ファイル (.mod) の位置を指定します。
デフォルト
-qmoddir を指定しない場合、 .mod ファイルは現行ディレクトリーに置かれます。
関連情報
XL Fortran 出力ファイルを参照してください。
モジュールは Fortran 90 または 95 の機能で、「XL Fortran for AIX ランゲージ・リファレンス 」で説明されています。
モジュールを参照するファイルをコンパイルしているときに、このディレクトリーから .mod ファイルを読むには、 -I オプションを使用してください。
構文
-qnoprint
他のリスト・オプションの設定とは関係なく、コンパイラーがリスト・ファイルを作成しないようにします。
コマンド行に -qnoprint を指定すれば、構成ファイルまたは @PROCESS ディレクティブに他のリスト・オプションを入れることができ、リスト・ファイルが作成されるのを防げます。
規則
通常、リスト・ファイルは、-qattr、-qlist、-qlistopt、-qphsinfo、-qsource、 -qreport または -qxref のいずれかのオプションを指定すると作成されます。 -qnoprint は、名前を /dev/null (書き込まれたあらゆるデータを廃棄するデバイス) に変更してリスト・ファイルが作成されるのを防止します。
関連情報
リストとメッセージを制御するオプションを参照してください。
構文
-qnullterm | -qnonullterm NULLTERM | NONULLTERM
仮引き数として渡される文字定数式に NULL 文字を付加することによって、ストリングを C 関数に渡しやすくします。
このオプションを使用すると、個々のストリング引き数に NULL 文字を追加しなくても C 関数へストリングを渡すことができます。
背景情報
このオプションの影響を受けるのは、基本文字定数、複数の文字定数を連結したもの、文字タイプの名前付き定数、ホレリス定数、2 進、8 進、16 進の無タイプの定数から構成された引き数 (インターフェース・ブロックが使用可能な場合) か、それらのオブジェクトから全体が構成されているすべての文字式です。 CHAR および ACHAR 組み込み関数からの結果値にも、組み込み関数への引き数が初期設定式である場合は NULL 文字が追加されます。
規則
このオプションは仮引き数の長さ (XL Fortran 呼び出し規則の一部として渡された追加の長さの引き数で定義されたもの) を変更しません。
制限
このオプションは %REF 組み込み関数を使用して渡された引き数にもそうでない引き数にも影響を及ぼしますが、|値によって組み込み関数を使用して渡された引き数には影響を及ぼしません。このオプションは、I/O ステートメントの中の文字式に影響を与えません。
例
このオプションを指定する場合と指定しない場合の 2 つの例を、同じ C 関数を使用して次に示します。
@PROCESS NONULLTERM SUBROUTINE CALL_C_1 CHARACTER*9, PARAMETER :: HOME = "/home/luc" ! Call the libc routine mkdir() to create some directories. CALL mkdir ("/home/luc/testfiles\0", %val(448)) ! Call the libc routine unlink() to remove a file in the home directory. CALL unlink (HOME // "/.hushlogin" // CHAR(0)) END SUBROUTINE @PROCESS NULLTERM SUBROUTINE CALL_C_2 CHARACTER*9, PARAMETER :: HOME = "/home/luc" ! With the option, there is no need to worry about the trailing null ! for each string argument. CALL mkdir ("/home/luc/testfiles", %val(448)) CALL unlink (HOME // "/.hushlogin") END SUBROUTINE !
関連情報
言語間の文字タイプの引き渡しを参照してください。
構文
-qOBJect | -qNOOBJect OBJect | NOOBJect
オブジェクト・ファイルを作成するか、または、ソース・ファイルの構文をチェックした直後に停止するかを指定します。
コンパイルに時間がかかる大きなプログラムをデバッグするときは、 -qnoobject オプションを使用するようお勧めします。このオプションを使用すれば、コード作成のオーバーヘッドなしに、プログラムの構文をすばやくチェックすることができます。 .lst ファイルは依然として作成されるので、デバッグを開始するための診断情報を得ることができます。
プログラム・エラーを修正した後に再びデフォルト (-qobject) に変更して、プログラムが正しく機能するかをテストし、正しく機能しない場合は、対話式デバッグのための -g オプションでコンパイルすることができます。
-qhalt オプションは -qobject オプションを、そして -qnoobject オプションは -qhalt オプションをオーバーライドできます。
関連情報
リストとメッセージを制御するオプションおよび オブジェクト・セクションを参照してください。
コンパイラー・フェーズには、コンパイラー・フェーズに関する技術情報が記載されています。
構文
-qonetrip | -qnoonetrip ONETRIP | NOONETRIP
これは、-1 オプションの長い形式です。
構文
-qOPTimize[=level] | -qNOOPTimize OPTimize[(level)] | NOOPTimize
これは、-O オプションの長い形式です。
構文
-qpdf{1|2}
プロファイルの結果を反映したフィードバック (profile-directed feedback (PDF)) によって最適化を調整します。その場合、条件付き分岐の近辺および頻繁に実行されるコード・セクション内の最適化が、サンプル・プログラムの実行結果を使用して改善されます。
PDF を使用する場合、次のステップに従ってください。
大きなアプリケーションでは、最適化から最も利益を得られる範囲のコードを集中的に作成します。アプリケーションのコードすべてを -qpdf1 オプション付きでコンパイルする必要はありません。
最善のパフォーマンスを得るため、 PDF を使用する場合は (上記の例のように) あらゆるコンパイルに -O3、-O4、または -O5 オプションを使用してください。
規則
プロファイルは現行の作業ディレクトリーか、 PDFDIR 環境変数が設定されている場合はその変数が指定するディレクトリーに置かれます。
コンパイルと実行で時間を無駄にしないために、 PDFDIR 環境変数には必ず絶対パスを指定してください。そうしなかった場合、アプリケーションを誤ったディレクトリーから実行し、アプリケーションがプロファイル・データ・ファイルを見つけられないこともあります。その場合、プログラムが正しく最適化されなかったり、セグメント化障害によって停止する可能性があります。セグメント化障害は、PDFDIR 変数の値を変更し、 PDF プロセスを完了する前にアプリケーションを実行した場合にも起きることがあります。
背景情報
このオプションは、アプリケーション全体を 2 回コンパイルする必要があるので、他のデバッグと調整が済んだ後、アプリケーションを実動させる前の最終ステップの 1 つとして使用されるよう設計されています。
制限
例
簡単な例を次に示します。
# Set the PDFDIR variable. export PDFDIR=$HOME/project_dir # Compile all files with -qpdf1. xlf95 -qpdf1 -O3 file1.f file2.f file3.f # Run with one set of input data. a.out <sample.data # Recompile all files with -qpdf2. xlf95 -qpdf2 -O3 file1.f file2.f file3.f # The program should now run faster than without PDF if # the sample data is typical.
より複雑な例を次に示します。
# Set the PDFDIR variable. export PDFDIR=$HOME/project_dir # Compile most of the files with -qpdf1. xlf95 -qpdf1 -O3 -c file1.f file2.f file3.f # This file is not so important to optimize. xlf95 -c file4.f # Non-PDF object files such as file4.o can be linked in. xlf95 -qpdf1 file1.o file2.o file3.o file4.o # Run several times with different input data. a.out <polar_orbit.data a.out <elliptical_orbit.data a.out <geosynchronous_orbit.data # Do not need to recompile the source of non-PDF object files (file4.f). xlf95 -qpdf2 -O3 file1.f file2.f file3.f # Link all the object files into the final application. xlf95 file1.o file2.o file3.o file4.o
関連情報
XL Fortran 入力ファイル、XL Fortran 出力ファイル、および 条件付き分岐の最適化を参照してください。
以下のコマンドは /usr/lpp/xlf/bin ディレクトリーにあり、PDFDIR ディレクトリーの管理に使用できます。
resetpdf [pathname] | pathname ディレクトリー、または pathname が指定されていない場合は PDFDIR ディレクトリー、あるいは PDFDIR が設定されていない場合は現行ディレクトリーに入っているすべてのプロファイル情報をゼロに設定します (しかしデータ・ファイルは除去されません)。
アプリケーションに変更を加えて一部のファイルを再コンパイルした場合、それらのファイルのプロファイル情報は自動的にリセットされます。変更によってプログラムの流れが変わった可能性があるためです。重要な変更を加えた場合、再コンパイルされなかったプログラム部分の実行カウントがその変更によって変わる可能性があるときは、変更後に resetpdf を実行してアプリケーション全体のプロファイル情報をリセットしてください。 |
cleanpdf [pathname] | pathname ディレクトリー、または pathname が指定されていない場合は PDFDIR ディレクトリー、あるいは PDFDIR が設定されていない場合は現行ディレクトリーに入っているすべてのプロファイル情報を除去します。
プログラムを変更して PDF プロセスを再度実行した場合、プロファイル情報を除去すると、実行時オーバーヘッドが低減されます。 このプログラムは、-qpdf2 でコンパイルした後か、特定のアプリケーションについて PDF を済ませた後に実行してください。 cleanpdf を実行した後にアプリケーションで PDF を引き続き使用する場合は、 -qpdf1 を指定してすべてのファイルを再コンパイルする必要があります。 |
構文
-qphsinfo | -qnophsinfo PHSINFO | NOPHSINFO
各コンパイラー・フェーズのタイミング情報が端末に表示されるかどうかを決定します。
関連情報
コンパイラー・フェーズを参照してください。 | |
|構文
|-qpic[=suboptions]
|-qpic コンパイラー・オプションは、共用ライブラリーで |使用できる位置独立コード (PIC) を生成します。
|引き数 |
|デフォルトは -qpic=small です。
|-qpic=large を指定すると、 |-bbigtoc を ld コマンドに渡した場合と同じ効果があります。 |
構文
-qport[=suboptions]| -qnoport PORT[(suboptions)]| NOPORT
-qport コンパイラー・オプションは、他の Fortran 言語拡張機能を収容するために幾つかのオプションを提供して、 XL Fortran にプログラムを移植すると柔軟性が増加します。特定のサブオプションは常に、他の -qport およびコンパイラー・オプションとは独立して機能します。
引き数
|このオプションを使用した場合、いくつかの組み込みプロシージャーの種類が |一致しないことがあります。 |その種類を最も長い引き数の種類に変換するには、-qxlf77=intarg を指定してください。
関連情報
詳細については、「XL Fortran for AIX ランゲージ・リファレンス 」の INT および MOD 組み込み関数に関する節を参照してください。
構文
-qposition={appendold | appendunknown} ... POSITION({APPENDOLD | APPENDUNKNOWN} ...)
POSITION= 指定子を持たない OPEN ステートメントの後にデータが書き込まれ、対応する STATUS= 値 (OLD または UNKNOWN) が指定されると、ファイル・ポインターをファイルの終わりに置きます。
規則
最初の I/O 操作がファイル・ポインターを移動させ、その操作が WRITE ステートメントまたは PRINT ステートメントであると、位置は APPEND になります。また、BACKSPACE、ENDFILE、READ、 REWIND ステートメントであると、位置は REWIND になります。
該当する製品レベル
appendunknown サブオプションは XL Fortran バージョン 2 append サブオプションと同じですが、紛らわしさを避けるために、appendunknown の方を使用するようお勧めします。
-qposition=appendold:appendunknown は、 XL Fortran バージョン 1 および初期のバージョン 2 の動作との互換性を提供します。 -qposition=appendold は、 XL Fortran バージョン 2.3 の動作との互換性を提供します。
例
|次の例では、POSITION= 指定子を指定せずに STATUS='old' を |指定する OPEN ステートメントは、POSITION='append' が指定されているかのように |ファイルをオープンします。
xlf95 -qposition=appendold opens_old_files.f
|次の例では、POSITION= 指定子を指定せずに STATUS='unknown' を |指定する OPEN ステートメントは、POSITION='append' が指定されているかのように |ファイルをオープンします。
|xlf95 -qposition=appendunknown opens_unknown_files.f |
|次の例では、POSITION= 指定子を指定せずに STATUS='old' か |STATUS='unknown' のいずれかを指定する OPEN ステートメントは、POSITION='append' が |指定されているかのようにファイルをオープンします。
|xlf95 -qposition=appendold:appendunknown opens_many_files.f
関連情報
ファイルの位置決め、および「XL Fortran for AIX ランゲージ・リファレンス 」の OPEN ステートメントについての節を参照してください。 |
|構文
|-qprefetch | -qnoprefetch
|プリフェッチ命令を自動的に挿入するようにコンパイラーに指示します。
|関連情報
|プリフェッチ・ディレクティブについて詳しくは、「XL Fortran for AIX ランゲージ・リファレンス 」および |「The POWER4 Processor Introduction and Tuning Guide 」の『PREFETCH ディレクティブ』を |参照してください。 |トリガー制約を使用してプリフェッチ・ディレクティブを選択的に |制御するには、-qdirective オプションを |参照してください。
構文
-qqcount | -qnoqcount QCOUNT | NOQCOUNT
拡張精度 Q 編集記述子 (Qw.d) だけではなく、 Q 文字カウント編集記述子 (Q) を受け入れます。-qnoqcount を使用すると、すべての Q 編集記述子が拡張精度 Q 編集記述子として解釈されます。
規則
コンパイラーは、Q 編集記述子を構文によって拡張精度 Q 編集記述子または Q 文字カウント編集記述子であると解釈して、どちらの記述子が指定されるかを判別できない場合に、警告を出します。
関連情報
「XL Fortran for AIX ランゲージ・リファレンス 」の『Q (文字カウント) 編集』を参照してください。
構文
-qrealsize=バイト REALSIZE(バイト)
REAL、DOUBLE PRECISION、 COMPLEX、および DOUBLE COMPLEX 値のデフォルト・サイズを設定します。
このオプションは、他のシステム用に書かれたコードとの互換性を維持することを意図しています。ある状況においては、-qautodbl の代替オプションとして便利なことがわかります。
このオプションは定数、変数、派生型コンポーネント、および kind タイプ・パラメーターが指定されていない関数 (組み込み関数を含む) のサイズ 2 に影響を及ぼします。 REAL(4) や COMPLEX*16 など、 kind タイプ・パラメーターまたは長さ (length) で宣言されたオブジェクトは影響を受けません。
引き数
バイト に使用できる値は次のとおりです。
結果
このオプションは、影響を受けるオブジェクトのサイズを次のように判別します。
Data Object REALSIZE(4) in Effect REALSIZE(8) in Effect ------------------------------------------------------------------- 1.2 REAL(4) REAL(8) 1.2e0 REAL(4) REAL(8) 1.2d0 REAL(8) REAL(16) 1.2q0 REAL(16) REAL(16) REAL REAL(4) REAL(8) DOUBLE PRECISION REAL(8) REAL(16) COMPLEX COMPLEX(4) COMPLEX(8) DOUBLE COMPLEX COMPLEX(8) COMPLEX(16)
組み込み関数にも同様の規則が当てはまります。
このオプションは、データのデフォルト・サイズが異なるシステムから、プログラムを変更せずに移植できるようにするためのものです。たとえば、CRAY コンピューター用に書かれたプログラムには -qrealsize=8 が必要です。このオプションのデフォルト値 4 は、大方の 32 ビット・コンピューター用に書かれたプログラムに適しています。
-qrealsize を 8 に設定すると、 -qdpc オプションの設定がオーバーライドされます。
例
この例には、-qrealsize の設定を変更すると代表的なエンティティーがどのように変形するかが示されています。
@PROCESS REALSIZE(8) REAL R ! treated as a real(8) REAL(8) R8 ! treated as a real(8) DOUBLE PRECISION DP ! treated as a real(16) DOUBLE COMPLEX DC ! treated as a complex(16) COMPLEX(4) C ! treated as a complex(4) PRINT *,DSIN(DP) ! treated as qsin(real(16)) ! Note: we cannot get dsin(r8) because dsin is being treated as qsin. END
-qrealsize=8 を指定すると、以下のように DABS などの組み込み関数に影響を与えます。
INTRINSIC DABS ! Argument and return type become REAL(16). DOUBLE PRECISION DABS ! OK, because DOUBLE PRECISION = REAL(16) ! with -qrealsize=8 in effect. REAL(16) DABS ! OK, the declaration agrees with the option setting. REAL(8) DABS ! The declaration does not agree with the option ! setting and is ignored.
関連情報
-qintsize オプションは、整数と論理オブジェクトに影響を与える同様のオプションです。 -qautodbl オプションは -qrealsize に関連していますが、これらのオプションは結合することはできません。 -qautodbl オプションが自動精度倍増、埋め込み (またはその両方) をオンにすると、 -qrealsize オプションは効果がなくなります。
「XL Fortran for AIX ランゲージ・リファレンス 」の『タイプ・パラメーターおよび指定子』では、 kind タイプ・パラメーターについて説明しています。
構文
-qrecur | -qnorecur RECUR | NORECUR
このオプションの使用はお勧めできません。外部サブプログラムを再帰的に呼び出すことができるかどうかを指定します。新規プログラムの場合、RECURSIVE キーワードを使用すると、標準適応した方法で再帰的プロシージャーを使用することができます。 -qrecur オプションを指定すると、コンパイラーはすべてのプロシージャーが再帰的であると見なしてしまいます。再帰的プロシージャーのコード生成の効率が落ちる可能性があります。 RECURSIVE キーワードを使用すれば、どのプロシージャーを再帰的にするかを正確に指定することができます。
例
! The following RECUR recursive function: @process recur function factorial (n) integer factorial if (n .eq. 0) then factorial = 1 else factorial = n * factorial (n-1) end if end function factorial ! can be rewritten to use F90/F95 RECURSIVE/RESULT features: recursive function factorial (n) result (res) integer res if (n .eq. 0) then res = 1 else res = n * factorial (n-1) end if end function factorial
制限
xlf、xlf_r、 xlf_r7、f77 、あるいは fort77 コマンドを使用して再帰呼び出しを含むプログラムをコンパイルする場合は、-qnosave を指定して、デフォルトのストレージ・クラスを自動的に作成します。
構文
-qreport[={smplist | hotlist}...] -qnoreport REPORT[({SMPLIST | HOTLIST}...)] NOREPORT
プログラムの並列化方法とループの最適化方法を示す変換報告書を作成するかどうかを決定します。
smplist サブオプションを使用すると、低レベルの変換が調べられるため、 SMP プログラムのパフォーマンスをデバッグしたり調整したりできます。プログラムのデータ処理方法や、ループの自動並列化方法を知ることもできます。リスト内の注釈は、変換後のプログラムが元のソース・コードにどのように対応しているかを示したり、特定のループが並列化されなかった理由などを示したりします。
hotlist サブオプションを使用すると、ループの変換過程を示す報告書を生成することができます。
また、-qsmp オプションが有効なときに -qreport=hotlist オプションが指定された場合は、SMP 実行時への呼び出し、および並列状態を構成するために作成されたプロシージャーへの呼び出しを示す疑似 Fortran リストが作成されます。
背景情報
変換リストはコンパイラー・リスト・ファイルの一部です。
制限
ループ変換および自動並列化は、-O5 (あるいは -qipa=level=2) 最適化レベルを使用して、リンク・ステップで行われます。 -qreport オプションは、リンク・ステップで、リスト・ファイルに報告書を生成します。
ループ変換リストを生成する場合には、 -qsmp オプションか -qhot オプションを必ず指定します。並列変換リストまたは並列パフォーマンス・メッセージを生成する場合には、 -qsmp オプションを必ず指定します。
リストに示されるコードはコンパイル可能であるというわけではありません。プログラムにこのコードを組み込んだり、名前がリストに出ている内部ルーチンを明示的に呼び出したりしないでください。
例
並列の調整に使用できるリスト・ファイルを作成するには、次のようにします。
xlf_r -qsmp -O3 -qhot -qreport=smplist needs_tuning.f
並列調整とループ・パフォーマンス調整の両方に使用できるリスト・ファイルを作成するには、次のようにします。
xlf_r -qsmp -O3 -qhot -qreport=smplist:hotlist needs_tuning.f
ループ・パフォーマンスの調整にだけ使用できるリスト・ファイルを作成するには、次のようにします。
xlf95_r -O3 -qhot -qreport=hotlist needs_tuning.f
関連情報
リストとメッセージを制御するオプションおよび 変換報告書セクションを参照してください。
構文
-qsaa | -qnosaa SAA | NOSAA
SAA FORTRAN 言語定義に従っているかどうかをチェックします。非適合のソース・コード、およびそのような非適合を許可するオプションを識別します。
規則
これらの警告には、言語レベル関係の問題を示すプレフィックス (L) が付きます。
-qflag オプションは、このオプションをオーバーライドすることができます。
関連情報
国際標準の重要性が高まりつつあるので、 -qlanglvl オプションは、言語が標準に適しているかどうかをチェックするのに、ますます適したオプションになる可能性があります。
構文
-qsave[={all|defaultinit}] | -qnosave SAVE[({all|defaultinit})] NOSAVE
これには、ローカル変数のデフォルト・ストレージ・クラスを指定します。
-qsave=all を指定する場合は、デフォルト・ストレージ・クラスは STATIC です。-qnosave を指定する場合は、デフォルト・ストレージ・クラスは AUTOMATIC です。-qsave=defaultinit を指定する場合は、デフォルト・ストレージ・クラスは、デフォルト初期設定の指定がある派生型の変数においては STATIC、その他の場合は AUTOMATIC です。 -qsave オプションのデフォルト・サブオプションは、all です。 2 つのサブオプションは相互に排他的です。
|このオプションのデフォルトは、使用される起動によって異なります。 |たとえば、-qsave を指定して、FORTRAN 77 プログラムの動作を再現しなければならない場合があります。 xlf_r、 xlf_r7、 xlf、f77、および fort77 コマンドは、前の動作を保持するために、 /etc/xlf.cfg にデフォルト時オプションとしてリストされている -qsave を持っています。
以下には、派生データ型での -qsave オプションの影響を例示しています。
PROGRAM P CALL SUB CALL SUB END PROGRAM P SUBROUTINE SUB LOGICAL, SAVE :: FIRST_TIME = .TRUE. STRUCTURE /S/ INTEGER I/17/ END STRUCTURE RECORD /S/ LOCAL_STRUCT INTEGER LOCAL_VAR IF (FIRST_TIME) THEN LOCAL_STRUCT.I = 13 LOCAL_VAR = 19 FIRST_TIME = .FALSE. ELSE ! Prints " 13" if compiled with -qsave or -qsave=all ! Prints " 13" if compiled with -qsave=defaultinit ! Prints " 17" if compiled with -qnosave PRINT *, LOCAL_STRUCT ! Prints " 19" if compiled with -qsave or -qsave=all ! Value of LOCAL_VAR is undefined otherwise PRINT *, LOCAL_VAR END IF END SUBROUTINE SUB
関連情報
-qrecur オプションでコンパイルされた|マルチスレッド・アプリケーション |およびサブプログラムには、通常、-qnosave オプションが必要です。
このオプションが変数のストレージ・クラスにどのような影響を与えるかについては、「XL Fortran for AIX ランゲージ・リファレンス 」の『変数のストレージ・クラス』を参照してください。
構文
-qsclk[=centi | micro]
SYSTEM_CLOCK 組み込みプロシージャーがプログラム内で使用する解決を指定します。デフォルトは、センチ秒解決 (-qsclk=centi) です。マイクロ秒解決を使用するには、-qsclk=micro を指定します。
関連情報
リアルタイム・クロックからの整数データの戻りに関する詳細については、「XL Fortran for AIX ランゲージ・リファレンス 」の『SYSTEM_CLOCK 』を参照してください。
構文
-qsmallstack | -qnosmallstack
可能な限りコンパイラーがスタック使用を最小化するように指定します。
構文
-qsigtrap[=trap_handler]
メインプログラムが入っているファイルをコンパイルするときに、このオプションは、指定されたトラップ・ハンドラーをセットアップして SIGTRAP 例外をキャッチします。このオプションを使用すれば、プログラム内の SIGNAL サブプログラムを呼び出さなくても、 SIGTRAP シグナル用にハンドラーをインストールすることができます。
xl__trce トラップ・ハンドラーを使用可能にするには、ハンドラー名なしで -qsigtrap を指定してください。 別のトラップ・ハンドラーを使用可能にするには、 -qsigtrap オプションでそのハンドラー名を指定してください。
別のハンドラーを指定する場合は、それが入っているオブジェクト・モジュールがプログラムとリンクされていることを確認してください。
関連情報
考えられる例外の原因については、 XL Fortran 実行時例外で説明されています。浮動小数点演算例外の検出とトラップでは、浮動小数点計算の結果生じる例外を扱う多くの方法を説明しています。 例外ハンドラーのインストールには、 XL Fortran で使用できる例外ハンドラーのリストが掲載されています。
構文
-qsmp[=suboptions] -qnosmp
コードを SMP システムに対応するようにして生成すべきかどうかを示します。デフォルトでは、単一処理装置マシンを想定してコードを生成します。このオプションを指定した場合、コンパイラーはトリガー定数 SMP$、$OMP、および IBMP にあるすべてのディレクティブを認識します (ただし omp サブオプションを指定した場合は認識されません)。
すべてのスレッド・セーフ・コンポーネントで自動的にリンクを行うものは、xlf_r、xlf_r7、xlf90_r 、xlf90_r7、xlf95_r、および xlf95_r7 呼び出しコマンドのみです。 xlf、xlf90、xlf95、f77、および fort77 呼び出しコマンドと一緒に -qsmp オプションを使用することもできますが、適切なコンポーネントにリンクさせるのはユーザー側の責任で行います。このことの説明については、 ld コマンドを使用した 32 ビット SMP オブジェクト・ファイルのリンクを参照してください。-qsmp オプションを使ってプログラム内のソース・ファイルをコンパイルする場合、 ld コマンドを使ってリンクしないならば、リンク時に -qsmp も一緒に指定する必要があります。
引き数
nested_par サブオプションを設定しても、これは OpenMP Fortran API に従っているわけではないことに注意してください。このサブオプションを指定する場合、実行時ライブラリーは、 PARALLEL 構造体を囲むのに使用したのと同じスレッドを、PARALLEL DO および PARALLEL SECTIONS 構造体にも使用します。
C プリプロセッサーの起動時にこのオプションを指定すると、_OPENMP C プリプロセッサー・マクロも自動的に値 200011 と一緒に定義されます。これは、条件付きコンパイルをサポートするのに役立ちます。このマクロは、C プリプロセッサーの呼び出し時にのみ定義されます。
詳細については、「XL Fortran for AIX ランゲージ・リファレンス 」で『言語エレメント 』の章の「条件付きコンパイル 」を参照してください。
デフォルトは、norec_locks または正規のロックです。
スレッドは、解放されると、最初に割り当てられた区画から次のチャンクへとマイグレーションしていきます。その区画の中にチャンクが 1 つも無くなったら、最初に別のスレッドに割り当てられた区画から使用可能な次のチャンクを探します。
スリープ状態のスレッドに最初から割り当てられていた区画の処理は、活動状態にある別のスレッドにより完了されます。
活動状態のスレッドがチャンクに割り当てられる仕方は、「先着順実行」の原則に基づいています。残りの処理のチャンクは、すべての処理の割り当てが終了するまで、活動状態のスレッドに割り当てられていきます。
スリープ状態のスレッドに割り当てられた処理は、そのスレッドが使用可能にならない限り、活動状態の別のスレッドに引き継がれます。
最初のチャンクには CEILING(number_of_iterations / number_of_threads) 回の反復が含まれます。次のチャンクには CEILING(number_of_iterations_left / number_of_threads) 回の反復が含まれます。活動状態のスレッドがチャンクに割り当てられる仕方は、「先着順実行」の原則に基づいています。
n を指定しない場合、チャンクには CEILING (number_of_iterations / number_of_threads) 反復が入ります。 各スレッドは、これらのチャンクのいずれかに割り当てられます。これをブロック・スケジューリング と言います。
スリープ状態のスレッドに処理が割り当てられている場合、その処理を完了できるようにするため、そのスレッドは活動状態にさせられます。
チャンク入れのアルゴリズムと SCHEDULE の詳細については、「XL Fortran for AIX ランゲージ・リファレンス 」の『ディレクティブ』という章を参照してください。
規則
制限
-qsmp=noopt サブオプションは、プログラムのパフォーマンスに影響することがあります。
-qsmp を指定してある状態では、特定のサブオプションの前後に omp サブオプションを指定することはできません。 omp を使用してそれらのサブオプションを指定しようとする場合、コンパイラーは警告メッセージを発行します。
例
-qsmp=noopt サブオプションは、コマンド行上のどこにあっても、パフォーマンス最適化オプションをオーバーライドします (-qsmp の前に -qsmp=noopt が現れる場合以外は)。次の例では、-qsmp=noopt の後にあるすべての最適化オプションが、通常の有効範囲と優先順位の規則に従って処理されることを示します。
例 1
xlf90 -qsmp=noopt -O3... これは次のものと同じです。 xlf90 -qsmp=noopt...
例 2
xlf90 -qsmp=noopt -O3 -qsmp... これは次のものと同じです。 xlf90 -qsmp -O3...
例 3
xlf90 -qsmp=noopt -O3 -qhot -qsmp -O2... これは次のものと同じです。 xlf90 -qsmp -qhot -O2...
次を指定すると、コンパイラーは $OMP ディレクティブ・トリガーと SMP$ ディレクティブ・トリガーの両方を認識し、いずれかのトリガーで指定したディレクティブが OpenMP では許可されていない場合に警告を発行します。
-qsmp=omp -qdirective=SMP$
次を指定すると、noauto サブオプションが使用されます。コンパイラーは警告メッセージを出し、auto サブオプションを無視します。
-qsmp=omp:auto
以下の例では、CRITICAL 構造体が原因で生じるデッドロックを回避するために、 -qsmp=rec_locks を指定する必要があります。
program t integer i, a, b a = 0 b = 0 !smp$ parallel do do i=1, 10 !smp$ critical a = a + 1 !smp$ critical b = b + 1 !smp$ end critical !smp$ end critical enddo end
関連情報
|xlf、xlf_r、xlf_r7、f77、 |または fort77 コマンドを -qsmp オプションと一緒に使用して |プログラムをコンパイルする場合は、デフォルト・ストレージ・クラスを自動的に |作成するために -qnosave を指定し、スレッド・セーフ・コードを生成するよう |コンパイラーに指示するために -qthreaded を指定します。
構文
-qsource | -qnosource SOURCE | NOSOURCE
リストのソース・セクションを作成するかどうかを指定します。
コンパイラーが問題を検出すると、このオプションは端末に個々のソース行を表示します。これは、Fortran ソース・ファイルにおけるプログラム・エラーを診断するのに非常に役立ちます。
印刷したいプログラムのそれらのソース・コード部分を囲むソース・ファイル内の @PROCESS ディレクティブに SOURCE および NOSOURCE を使用することにより、ソース・コードの一部を選択的に印刷することができます。この場合に限り、@PROCESS ディレクティブはコンパイル単位の最初のステートメントの前にある必要はありません。
例
次の例では、 -qsource オプションでプログラムがコンパイルされた場合に、誤った呼び出しが行われる時点がさらにはっきりと識別されます。
$ cat argument_mismatch.f subroutine mult(x,y) integer x,y print *,x*y end program wrong_args interface subroutine mult(a,b) ! Specify the interface for this integer a,b ! subroutine so that calls to it end subroutine mult ! can be checked. end interface real i,j i = 5.0 j = 6.0 call mult(i,j) end $ xlf95 argument_mismatch.f ** mult === End of Compilation 1 === "argument_mismatch.f", line 16.12: 1513-061 (S) Actual argument attributes do not match those specified by an accessible explicit interface. ** wrong_args === End of Compilation 2 === 1501-511 Compilation failed for file argument_mismatch.f. $ xlf95 -qsource argument_mismatch.f ** mult === End of Compilation 1 === 16 | call mult(i,j) ............a... a - 1513-061 (S) Actual argument attributes do not match those specified by an accessible explicit interface. ** wrong_args === End of Compilation 2 === 1501-511 Compilation failed for file argument_mismatch.f.
関連情報
リストとメッセージを制御するオプションおよび ソース・セクションを参照してください。
構文
-qspillsize=bytes SPILLSIZE(bytes)
-qspillsize は -NS の長い形式です。 -N オプションを参照してください。
構文
-qstrict | -qnostrict STRICT | NOSTRICT
これを使用すれば、-O3、-qhot、および -qipa オプションで行われた最適化によって Fortran 90 または Fortran 95 プログラムのセマンティクスが変更されないことを保証します。
デフォルト
デフォルトの場合、-O3、-qhot、および -qipa の最適化では、コードを再調整して結果と例外が、最適化されていないプログラムのものとは異なるようにします。
このオプションは、最適化されているプログラムでのプログラムの実行における変更が、最適化されていないプログラムの場合とは異なった結果を発生させる状況を意図したオプションです。 IEEE 浮動小数点算術計算用のほとんど使用されない規則と関連があるので、このような状況はめったに発生しません。
規則
-O3、-qhot、または -qipa が有効である場合には、 -qstrict も指定されていない限り、以下の最適化がオンになります。
関連情報
-O オプション、-qhot オプション、および -qfloat オプションを参照してください。
構文
-qstrictieeemod | -qnostrictieeemod STRICTIEEEMOD | NOSTRICTIEEEMOD
ieee_arithmetic および ieee_exceptions 組み込みモジュール用の Fortran 2000 IEEE 演算規則をコンパイラーに順守させるかどうかを指定します。 -qstrictieeemod を指定すると、コンパイラーは、次の規則を順守します。
上記の規則はパフォーマンスに影響を与えるため、-qnostrictieeemod を指定すると、浮動小数点状況を保持したり、復元したりする規則から解放されます。これは関連するパフォーマンスの影響を防ぎます。
構文
-qSTRICT_INDUCtion | -qNOSTRICT_INDUCtion
コンパイラーが帰納 (ループ・カウンター) 変数の最適化を実行してしまわないようにします。そのような最適化を実行した場合、帰納変数が関係した整数オーバーフローの動作が発生したときに 安全ではない 可能性があります (プログラムのセマンティクスが変更される可能性があります)。
-qstrict_induction を指定すると性能低下の恐れがあるため、どうしても必要な場合を除き、指定しないようにする必要があります。
例
以下の 2 つの例を見てください。
例 1
integer(1) :: i, j ! Variable i can hold a j = 0 ! maximum value of 127. do i = 1, 200 ! Integer overflow occurs when 128th j = j + 1 ! iteration of loop is attempted. enddo
例 2
integer(1) :: i i = 1_1 ! Variable i can hold a maximum ! value of 127. 100 continue if (i == -127) goto 200 ! Go to label 200 once decimal overflow i = i + 1_1 ! occurs and i == -127. goto 100 200 continue print *, i end
-qstrict_induction オプションを指定してこれらの例をコンパイルすると、コンパイラーは帰納変数の最適化を実行しませんが、コードのパフォーマンスに影響する可能性があります。 -qnostrict_induction オプションを指定してこれらの例をコンパイルすると、コンパイラーはプログラムのセマンティクスを変えることのある最適化を実行する可能性があります。
構文
-qsuffix=option=suffix
xlf.cfg ファイルの代わりに、コマンド行でソース・ファイルのサフィックスを指定します。このオプションを使用すれば、makefile の名前をほんの少し修正するだけでファイルを使用でき、無駄な時間を節約できるだけでなく、 xlf.cfg ファイルの修正に関連した問題のリスクを削減できます。どのファイル・タイプの場合にも、 1 度に 1 つの設定だけがサポートされます。
引き数
規則
例
以下に例を示します。
xlf a.f90 -qsuffix=f=f90:cpp=F90
これにより、以下の効果があります。
構文
|-qsuppress[=nnnn-mmm[:nnnn-mmm ...] | cmpmsg] |-qnosuppress
引き数
|このサブオプションは、出力されるエラー・メッセージには影響しません。
背景情報
状況によっては、非常に多くのコンパイラー・メッセージがユーザーに送られてくることがあります。多くの場合、これらのコンパイラー・メッセージには重要な情報が示されています。しかし、そのようなメッセージの中には大変長いものや、まったく無視して問題がないものもあります。コンパイル時に複数のエラーや警告メッセージが表示された場合には、どのメッセージに注意を払うべきか非常に判断の難しい場合があります。 -qsuppress を使用すれば、無関係なメッセージを除去できます。
制限
例
@process nullterm i = 1; j = 2; call printf("i=%d\n",%val(i)); call printf("i=%d, j=%d\n",%val(i),%val(j)); end
このサンプル・プログラムをコンパイルすると、通常は次のような出力が得られます。
"t.f", line 4.36: 1513-029 (W) The number of arguments to "printf" differ from the number of arguments in a previous reference. You should use the OPTIONAL attribute and an explicit interface to define a procedure with optional arguments. ** _main === End of Compilation 1 === 1501-510 Compilation successful for file t.f.
-qsuppress=1513-029 を指定してプログラムをコンパイルした場合、出力は次のようになります。
** _main === End of Compilation 1 === 1501-510 Compilation successful for file t.f.
関連情報
その他のタイプのメッセージ表示抑止については、 -qflag オプションを参照してください。
構文
-qswapomp | -qnoswapomp SWAPOMP | NOSWAPOMP
コンパイラーが、XL Fortran プログラムにある OpenMP ルーチンを認識して置換するように指定します。
Fortran と C の OpenMP ルーチンには、別々のインターフェースがあります。 OpenMP ルーチンを使用する複数言語アプリケーションをサポートするには、コンパイラーは OpenMP ルーチン名を認識し、そうしたルーチンの他のインプリメンテーションが存在しているかどうかにかかわらず、そのルーチンを XL Fortran バージョンのルーチンに置換する必要があります。
コンパイラーは、-qnoswapomp オプションを指定すると、 OpenMP ルーチンの置換は実行しません。
制限
-qswapomp および -qnoswapomp オプションは、プログラムに存在する OpenMP ルーチンを参照する Fortran サブプログラムだけに影響を与えます。
規則
例
次の例では、OpenMP ルーチンが INTERFACE ステートメントで宣言されます。
@PROCESS SWAPOMP INTERFACE FUNCTION OMP_GET_THREAD_NUM() INTEGER OMP_GET_THREAD_NUM END FUNCTION OMP_GET_THREAD_NUM FUNCTION OMP_GET_NUM_THREADS() INTEGER OMP_GET_NUM_THREADS END FUNCTION OMP_GET_NUM_THREADS END INTERFACE IAM = OMP_GET_THREAD_NUM() NP = OMP_GET_NUM_THREADS() PRINT *, IAM, NP END
関連情報
「XL Fortran for AIX ランゲージ・リファレンス 」にある『OpenMP 実行環境ルーチンおよびロック・ルーチン 』の章を参照してください。
構文
-qtbtable={none | small | full}
オブジェクト・ファイル内のトレースバック情報のデバッグ量を制限し、プログラムのサイズを小さくします。
このオプションを使用して、プログラムを小さくすることができます。その代わりデバッグは難しくなります。実動ステージに到達しているときにできるだけコンパクトなプログラムを作成したい場合は、 -qtbtable=none を指定することができます。そうでない場合は、通常のデフォルトが適用されます。この場合、-g を指定してコンパイルされたコードや -O を指定しないでコンパイルされたコードにはトレースバックの全情報が入り (-qtbtable=full)、 -O を指定してコンパイルされたコードにはそれよりも小さなトレースバック情報が入ります (-qtbtable=small)。
背景情報
多くの長いプロシージャー名 (モジュール・プロシージャー用に作成された内部名など) が入っているプログラムには、このオプションが非常に適しています。 Fortran プログラムよりも C++ プログラムに対する方が適用度が高い場合があります。
AIX Performance Toolbox 内のパフォーマンス・ツール (tprof など) を使用するには、-qtbtable=full を指定して Fortran プログラムをコンパイルする必要があります。
関連情報
-g オプション、-O オプション、最適化したコードのデバッグ、および -qcompact オプションを参照してください。
構文
-qthreaded
コンパイラーがこのオプションを使用することにより、スレッド・セーフ・コードを生成する必要があるのはいつかを判断します。
-qthreaded オプションを指定しても、 -qnosave オプションも暗黙的に指定されるということはありません。 -qnosave オプションは、ユーザー・ローカル変数のデフォルト時自動ストレージ・クラスを指定するものです。通常、スレッド・セーフのコードを生成するには、両方のオプションを使用する必要があります。
デフォルト
-qthreaded は、xlf90_r、xlf90_r7、xlf95_r、xlf95_r7、 xlf_r、および xlf_r7 コマンド用のデフォルトです。
-qthreaded オプションを指定すると -qdirective=ibmt が暗黙指定されますが、デフォルトでは trigger_constant IBMT が認識されます。
構文
-qtune=implementation
ハードウェア・アーキテクチャーの特定のインプリメンテーションに対する命令の選択、スケジューリング、その他のインプリメンテーションに依存するパフォーマンス拡張機能を調整します。
pwrx は pwr2 の同義語ですが、 pwr2 の方を使用するようお勧めします。
64 ビット・ユーザーの方へ |
---|
-qtune オプションおよび 64 ビット環境に特有の情報については、 -qtune=rs64a オプション、-qtune=rs64b オプション、および -qtune=rs64c Optionを参照してください。 |
プログラムを複数のアーキテクチャーで稼動させるけれど、特定のアーキテクチャーで調整したい場合は、 -qarch および -qtune オプションを組み合わせて使用することができます。これらのオプションは、基本的には 浮動小数点中心のプログラムに有効です。
キャッシュ・サイズおよびパイプラインなどのハードウェア・フィーチャーを最大限に活用するように、生成されたマシン命令を配置 (スケジューリング) することによって、 -qtune オプションはパフォーマンスを改善することができます。このオプションは、-O オプションと組み合わせて使用した場合にのみ効果があります。
-qtune 設定を変更すると、その結果作成される実行可能ファイルのパフォーマンスに影響する場合がありますが、実行可能ファイルが特定のハードウェア・プラットフォーム上で正しく実行できるかどうかには、まったく影響を与えません。
-qtune を指定しないと、設定は -qarch オプションによって決定されます。
|
-qarch 設定 | 許可されている -qtune 設定 | デフォルトの -qtune 設定 |
---|---|---|
com (-q32 を指定す る場合) | pwr、pwr2/pwrx、pwr3、pwr4、pwr2s、 p2sc、rs64a、rs64b、rs64c、601、603、 604 |
pwr2 (-q32 を指定す る場合) |
pwr | pwr、pwr2/pwrx、pwr2s、p2sc、601 | pwr2 |
pwr2/pwrx | pwr2/pwrx、p2sc、pwr2s | pwr2/pwrx |
pwr3 | pwr3、pwr4、auto | pwr3 |
pwr4 | pwr4、auto | pwr4 |
ppc | rs64a、rs64b、rs64c、601、603、604、pwr3、pwr4、auto |
pwr3 (-q64 を指定 する場合) 604 (-q32 を指定 する場合) |
ppc64 | rs64b、rs64c、pwr3、pwr4、auto | pwr3 |
p2sc | p2sc | p2sc |
pwr2s | pwr2s | pwr2s |
rs64a | rs64a、auto | rs64a |
rs64b | rs64b、auto | rs64b |
rs64c | rs64c、auto | rs64c |
601 | 601 | 601 |
603 | 603 | 603 |
604 | 604 | 604 |
これで、-qtune サブオプションと互換性のあるマシン上でコンパイルしている限り、 -qarch=auto とともに -qtune サブオプションを指定できるようになりました。たとえば、-qarch=auto と -qtune=pwr3 を指定する場合、POWER3 マシン上でコンパイルする必要があります。
制限
クワッド・ワード命令を減らすと他の POWER2 モデルでのパフォーマンスが低下する恐れがあるため、多数の異なる POWER2 モデルで実行する予定のプログラムには pwr2s サブオプションはお勧めできません。一連の異なる POWER2 モデルで実行する予定のプログラムでは、 -qtune の設定を pwr2 のまま残してください。
関連情報
-qarch オプション、-qcache オプション、および POWER4、POWER3、 POWER2、 あるいは PowerPC システムでのコンパイルを参照してください。
構文
-qundef | -qnoundef UNDEF | NOUNDEF
-qundef は、-u オプションの長い形式です。
構文
-qunroll[=|auto | yes] | -qnounroll
|DO ループのアンロールをプログラム内で許可するかどうかを指定します。 |アンロールは、外部および内部 DO ループで許可されます。
引き数
ループをアンロールすることに決定した場合、上記のサブオプションの 1 つを指定することが自動的に、コンパイラーがその操作を実行することを保証するわけではありません。パフォーマンス上の利点を考慮して、コンパイラーはプログラムにとってアンロールが有利かどうかを判断します。熟練したコンパイラー・ユーザーは、前もって有利かどうかを判断できるようであるべきです。
規則
|STREAM_UNROLL、UNROLL、 |または UNROLL_AND_FUSE ディレクティブを特定のループに |指定していなければ、-qnounroll オプションはアンロールを禁止します。 |これらのディレクティブは常に、コマンド行オプションをオーバーライドします。
例
次の例では、UNROLL(2) ディレクティブを使用して、コンパイラーにループの本体が複製可能であることを示し、単一の反復で 2 度の反復作業を実行できるようにしています。コンパイラーがループをアンロールすれば、1000 回反復を実行するところを、500 回だけ実行すれば済むようになります。
!IBM* UNROLL(2) DO I = 1, 1000 A(I) = I END DO
コンパイラーが前のループのアンロールを選択すると、コンパイラーはそのループを変換して、次の例と本質的に同じになるようにします。
DO I = 1, 1000, 2 A(I) = I A(I+1) = I + 1 END DO
関連情報
「XL Fortran for AIX ランゲージ・リファレンス 」でループのアンロールの該当するディレクティブを参照してください。
ループおよび配列言語の最適化を参照してください。
構文
-qunwind |-qnounwind UNWIND | NOUNWIND
プロシージャー呼び出し時、レジスターの揮発性を保存し、復元するデフォルトの処理を保持します。-qnounwind を指定すると、コンパイラーは、サブプログラムを再調整して、レジスターの揮発性の保存と復元を最小化します。
コードのセマンティクスが保持されている間は、保存と復元のデフォルト動作に依存する例外ハンドラーのようなアプリケーションは、未定義の結果を生成する可能性があります。 -qnounwind を -g コンパイラー・オプションと結合して使用するときは、例外処理操作に関するデバッグ情報は、プログラム・スタックをアンワインドするとき不正確になる可能性があります。
-qwarn64 オプションを参照してください。
構文
-qxflag=oldtab XFLAG(OLDTAB)
XL Fortran バージョン 1 との互換性を維持するために、桁 1 から 5 のタブを単一文字として解釈します (固定ソース形式のプログラムの場合)。
デフォルト
デフォルトでは、コンパイラーはソース行の桁 6 の後に 66 文字の有効文字を許可します。桁 1 から 5 のタブは、桁カウンターを桁 6 の後に移動する適切な数のブランクであると解釈されます。行番号またはその他のデータを桁 73 から 80 に含んでいる従来の Fortran の慣例に従っている方には、このデフォルトは便利です。
規則
-qxflag=oldtab オプションを指定しても、ソース・ステートメントは依然としてタブの直後に始まりますが、タブ文字は桁をカウントするための単一の文字として処理されます。この設定を使用すれば、最大 71 文字の入力を行うことができます。文字数はタブ文字が発生する場所によって異なります。
構文
-qxflag=xalias XFLAG(XALIAS)
廃止。代わりに -qalias=nostd が使用されています。代わりに、-qalias オプション を参照してください。
構文
-qxlf77=settings XLF77(settings)
変更された言語セマンティクスと I/O データ形式について、XL Fortran バージョン 1 および 2 からの言語との下位互換性を提供します。これらの変更のほとんどは、Fortran 90 標準で必要です。
デフォルト
デフォルトでは、コンパイラーはあらゆる場合に Fortran 95、Fortran 90、および最新バージョンのコンパイラーに適用される設定を使用します。したがって、デフォルトのサブオプションは、 blankpad、nogedit77、 nointarg、nointxor、 leadzero、nooldboz、 nopersistent、nosofteof です。ただし、これらのデフォルトは、新しいプログラムのコンパイルに使用しなければならない xlf95、xlf95_r、xlf95_r7、xlf90、xlf90_r、および xlf90_r7 コマンドのみによって使用されます。
XL Fortran バージョン 1 および 2 用に作成されたプログラムおよびデータとの最大限の互換性を得るために、xlf、xlf_r、xlf_r7、f77、および fort77 コマンドは、このオプションについて反対の設定を使用します。
前のプログラムを変更しないでコンパイルして実行する場合のみ、適切な呼び出しコマンドを引き続き使用しても、このオプションを意識する必要はありません。このオプションについては、Fortran 90 または Fortran 95 で既存のソースまたはデータ・ファイルを使用し、xlf90、xlf90_r、xlf90_r7、xlf95、xlf95_r、または xlf95_r7 コマンドを使用する場合で、 XL Fortran バージョン 2 から動作またはデータ形式が変更されたために互換性がいくらか失われる場合にのみ必要です。最終的には、データ・ファイルを再作成したり、ソース・ファイルを変更して前のバージョンの動作への依存を除去することが可能である必要があります。
引き数
XL Fortran バージョン 2 の動作におけるさまざまな面を理解するために、以下のサブオプションから 1 つまたは複数に対してデフォルト以外の選択項目を選んでください。説明には、デフォルト以外の選択項目を指定した場合に生じる事柄が記載されています。
それ以外の場合、.XOR. 演算子は定義された演算子としてのみ認識されます。組み込み演算はアクセス不能で、優先順位は、演算子が単項コンテキストで使用されているか、それともバイナリー・コンテキストで使用されているかによって異なります。
関連情報
アップグレードの問題の回避または修正方法を参照してください。
構文
-qxlf90={settings} XLF90({settings})
言語上の理由で、XL Fortran バージョン 5 の言語および Fortran 90 標準との下位互換性を提供します。
デフォルト
-qxlf90 のデフォルトのサブオプションは、指定する呼び出しコマンドによって異なります。 xlf95、xlf95_r、および xlf95_r7 コマンド の場合、デフォルトのサブオプションは signedzero と autodealloc です。他のすべての呼び出しコマンドでは、デフォルトは nosignedzero と noautodealloc です。
引き数
このサブオプションでは、以下の場合に負符号 (-) が印刷されるかどうかも決定します。
例
次のプログラムを見てください。
PROGRAM TESTSIGN REAL X, Y, Z X=1.0 Y=-0.0 Z=SIGN(X,Y) PRINT *,Z END PROGRAM TESTSIGN
この例の出力は、呼び出しコマンドと、指定する -qxlf90 サブオプションによって異なってきます。たとえば、次のようになります。
呼び出しコマンド / xlf90 サブオプション | 出力 |
---|---|
xlf95 | -1.0 |
xlf95 -qxlf90=signedzero | -1.0 |
xlf95 -qxlf90=nosignedzero | 1.0 |
xlf90 | 1.0 |
xlf | 1.0 |
関連情報
「XL Fortran for AIX ランゲージ・リファレンス 」の『組み込みプロシージャー』の章にある SIGN についての節と、『配列の概念 』の章を参照してください。
構文
|-qxlines | -qnoxlines |XLINES | NOXLINES
桁 1 に X を持つ固定ソース形式行がコンパイルされるか、または注釈として扱われるかを指定します。このオプションは、条件付きコンパイル (デバッグ) 文字として、桁 1 に文字「d」を認識するのに似ています。 -qdlines オプションは、このコンパイラー・オプションが使用可能なとき、条件付きコンパイル文字として桁 1 に文字「x」を認識します。桁 1 の「x」は、ブランクとして解釈され、その行はソース・コードとして処理されます。
デフォルト
このオプションは、デフォルトで -qnoxlines に設定され、固定ソース形式で桁 1 に文字「x」がある行はコメント行として扱われます。 -qxlines オプションは、-qdlines から独立しているので、条件付きコンパイル文字として「d」を使用するのに適用するデバッグ行の規則は、条件付きコンパイル文字「x」にも適用します。 -qxlines コンパイラー・オプションは、固定ソース形式にのみ適用可能です。
条件付きコンパイル文字「x」および「d」は、固定ソース形式プログラムと継続されるソース行内で混用することが可能です。条件付きコンパイル行が、次の行に継続する場合は、すべての継続行には、桁 1 に「x」または「d」が存在している必要があります。 継続されるコンパイル・ステートメントの最初の行が、桁 1 の「x」または「d」のいずれかで始まるデバッグ行ではない場合は、後続の継続行は、そのステートメントが構文的に正しい限り、デバッグ行として指定されます。
OMP 条件付きコンパイル文字「!$」、「C$」、および「*$」は、固定ソース形式および継続されるソース行内の両方で、条件付き文字「x」および「d」と混用することができます。 OMP 条件付き文字の規則は、このインスタンスでまだ適用されます。
例
-qxlines の基本ケースの例は以下のとおりです。
C2345678901234567890 program p i=3 ; j=4 ; k=5 X print *,i,j X + ,k end program p <output>: 3 4 5 (if -qxlines is on) no output (if -qxlines is off)
この例では、条件付きコンパイル文字「x」および「d」は、最初の行の「x」と混用されています。
C2345678901234567890 program p i=3 ; j=4 ; k=5 X print *,i, D + j, X + k end program p <output>: 3 4 5 (if both -qxlines and -qdlines are on) 3 5 (if only -qxlines is turned on)
ここでは、条件付きコンパイル文字「x」および「d」は、最初の行の「d」と混用されています。
C2345678901234567890 program p i=3 ; j=4 ; k=5 D print *,i, X + j, D + k end program p <output>: 3 4 5 (if both -qxlines and -qdlines are on) 3 5 (if only -qdlines is turned on)
この例では、最初の行はデバッグ行ではありませんが、継続行は、桁 1 に「x」があるので、デバッグ行として解釈されます。
C2345678901234567890 program p i=3 ; j=4 ; k=5 print *,i X + ,j X + ,k end program p <output>: 3 4 5 (if -qxlines is on) 3 (if -qxlines is off)
関連情報
-qdlines オプションと、「XL Fortran for AIX ランゲージ・リファレンス 」の『言語エレメント 』の章にある「条件付きコンパイル 」を参照してください。
構文
-qxref[=full] | -qnoxref XREF[(FULL)] | NOXREF
属性の相互参照コンポーネントおよびリストの相互参照セクションを作成するかどうかを決定します。
-qxref だけを指定すると、使用される識別子だけが報告されます。 -qxref=full を指定すると、使用されてもされなくても、プログラム内にあるすべての識別子に関する情報がリストに含まれます。
-qxref=full の後に -qxref が指定されても、完全な相互参照リストが依然として作成されます。
デバッグ中に相互参照リストを使用して、問題 (変数の定義前使用や変数名の誤入力など) を見つけることができます。
関連情報
リストとメッセージを制御するオプションおよび 属性および相互参照セクションを参照してください。
構文
-qzerosize | -qnozerosize ZEROSIZE | NOZEROSIZE
サイズがゼロのストリングおよび配列の検査を行わせないことによって、 FORTRAN 77 プログラムと、いくつかの Fortran 90 および Fortran 95 プログラムのパフォーマンスを向上させます。
このようなオブジェクトを処理する可能性がある Fortran 90 および Fortran 95 プログラムの場合は、-qzerosize を使用します。サイズがゼロのオブジェクトを使用できない FORTRAN 77 プログラムや、それらを使用しない Fortran 90 および Fortran 95 プログラムの場合は、 -qnozerosize でコンパイルすると、いくつかの配列演算または文字ストリング演算のパフォーマンスを改善することができます。
デフォルト
デフォルト設定は、どのコマンドでコンパイラーを呼び出すかによって異なります。 xlf90、xlf90_r、xlf90_r7、xlf95、xlf95_r、および xlf95_r7 コマンドの場合は -qzerosize で、xlf、xlf_r、xlf_r7、および f77/fort77 コマンドの場合は -qnozerosize です (FORTRAN 77 との互換性のため)。
規則
-C オプションが実行する実行時検査は、 -qzerosize が有効であると、時間が多少長くかかります。
構文
-S
個々の Fortran ソース・ファイルに対して同等のアセンブラー・ソースを示す 1 つまたは複数の .s ファイルを作成します。
規則
このオプションが指定されると、コンパイラーは、オブジェクト・ファイルまたは実行可能ファイルの代わりに、出力ファイルとしてアセンブラー・ソース・ファイルを作成します。
制限
作成されたアセンブラー・ファイルには、 -qipa オプションまたは -g オプションによって .o ファイルに入れられたすべてのデータが入っているわけではありません。
例
xlf95 -O3 -qhot -S test.f # Produces test.s
関連情報
-o オプションを使用すれば、その結果作成されるアセンブラー・ソース・ファイルの名前を指定できます。
アセンブラー言語形式については、「Assembler Language Reference 」を参照してください。
構文
-tcomponents
-B オプションで指定されたプレフィックスを、指定されたコンポーネントに適用します。 components には、セパレーターを持たない 1 つ以上の p、F、c、d、I、a、h、b、z、または l を指定でき、それぞれ、最適化プリプロセッサー、C プリプロセッサー、コンパイラー、-S 逆アセンブラー、プロシージャー間分析 (IPA) ツール、ループ最適化プログラム、コード生成プログラム、|バインド・プログラム、およびリンカーに対応します。
規則
-t が指定されないと、プレフィックス -B がすべてのコンポーネントに適用されます。
|Component -t Standard Program Name | Mnemonic | |C preprocessor F cpp |VAST-2 preprocessor p fpp |KAP preprocessor p fppk |compiler front end c xlfentry |array language optimizer h xlfhot |IPA/loop optimizer I ipa |assembler a as |code generator b xlfcode |linker l ld |-S disassembler d dis |binder z bolt
関連情報
-B オプション (この項には例も記載されています)。
構文
-U MIXED | NOMIXED
コンパイラーが、名前内の文字の大文字と小文字を区別するようにします。
Fortran 名はデフォルト時にはすべて小文字であり、 C 言語およびその他の言語の名前は大文字と小文字が混在してもかまいません。混合言語プログラムを書く際にこのオプションを使用することができます。
規則
-U が指定される場合は、名前の大文字小文字の区別が重要です。たとえば、Abc という名前と ABC という名前は別々のオブジェクトを参照します。
このオプションは、コンパイル単位間の呼び出しを解決するのに使用されるリンク名を変更します。また、モジュールの名前に影響を与え、したがって、 .mod ファイルの名前にも影響を与えます。
デフォルト
デフォルト時には、すべての名前を小文字であるかのように解釈します。たとえば、Abc と ABC はどちらも abc であると解釈され、したがって、同じオブジェクトを参照します。
制限
-U が有効な場合は、組み込み関数の名前はすべて小文字でなければなりません。小文字でない場合は、コンパイラーはエラーなしに名前を受け入れることはできますが、それらを組み込み関数ではなく外部プロシージャーの名前であると判断します。
キーワードはすべて小文字でなければならないという XL Fortran バージョン 2 の要件は、適用されません。
関連情報
これは、-qmixed の短い形式です。 -qmixed オプションを参照してください。
構文
-u UNDEF | NOUNDEF
変数名の暗黙のタイプ指定が許可されないことを指定します。これには、暗黙のステートメントを許可する個々の有効範囲に含まれる IMPLICIT NONE ステートメントを使用するときと同じ効果があります。
デフォルト
デフォルト時には、暗黙のタイプ指定は許可されます。
関連情報
「XL Fortran for AIX ランゲージ・リファレンス 」の「IMPLICIT 」を参照してください。
これは、-qundef の短い形式です。 -qundef オプションを参照してください。
構文
-v
コンパイルの進捗状況を生成します。
規則
コンパイラーがコマンドを実行してさまざまなコンパイル・ステップを実行するときに、このオプションは、コンパイラーが呼び出すコマンドおよび、コンパイラーが渡すシステム引き数リストのシミュレーションを表示します。
このオプションの出力を調べれば、特定のコンパイルに対して以下のことを判別する一助になります。
関連情報
-# オプション は -v と似ていますが、実際にはどのコンパイル・ステップも実行しません。
構文
-V
ユーザーが表示から直接カット・アンド・ペーストによってコマンドを作成できるという点を除き、このオプションは -v と同じです。
構文
-Wcomponent,options
リストされたオプションを、コンパイル中に実行されるコンポーネントに渡します。component は、p、F、c、d、I、a、z、または l で、それぞれ 最適化プリプロセッサー、C プリプロセッサー、コンパイラー、-S 逆アセンブラー、プロシージャー間分析 (IPA) ツール、アセンブラー、|バインド・プログラム、およびリンカーに対応します。
-W オプションの後に続いているストリングでは、セパレーターとしてコンマを使用し、スペースは入れないでください。
背景情報
このオプションの主な目的は、コンパイラー・オプションのシーケンスを作成して、最適化プリプロセッサーの 1 つに渡すことです。また、ld コマンドにパラメーターを渡すことによって、リンク・エディット・ステップを微調整するのにも使用できます。
デフォルト
ほとんどのオプションは、リンカーに渡す際に -W オプションを使用する必要はありません。 -q オプション以外の認識されないコマンド行オプションは、自動的にリンカーに渡されるからです。 -W (または構成ファイル内の ldopts スタンザ) が絶対に必要なオプションは、コンパイラー・オプションと同じ文字を持つリンカー・オプション (たとえば、-v または -S) だけです。
オプション・ストリング内のシェルに特有の文字を入れる必要がある場合は、その文字の前にバックスラッシュを置いてください。
例
コマンド行オプションの「ld」または「as」コマンドへの引き渡しを参照してください。
構文
-w
-qflag オプションの同義語です。-qflag=e:e を設定して、言語レベルのチェックによって生成されるメッセージだけではなく、警告メッセージおよび通知メッセージも抑止します。
構文
-y{n | m | p | z} IEEE(Near | Minus | Plus | Zero)
コンパイル時に定数浮動小数点式を評価するときにコンパイラーが使用する丸めモードを指定します。これは -qieee オプションと同等です。
関連情報
-O オプションおよび -qfloat オプションを参照してください。
-y は -qieee オプションの短い形式です。