Fortran ユーザーズガイド ホーム目次前ページへ次ページへ索引


第 3 章

f77 / f95 コンパイラオプション

この章では Sun WorkShop f77 および f95 の各コンパイラのコマンド行オプションについて説明します。

オプションによっては、両方のコンパイラ (f77 または f95) で使用できないものもあります。リファレンスセクションで使用できるオプションを確認ください。

コマンド構文

コンパイラのコマンドの構文は次のとおりです。

f77 [options] list_of_files  additional_options
f95 [options] list_of_files  additional_options

角括弧 ([]) の中の項目は省略可能なパラメータを示します。角括弧自体はコマンドの一部ではありません。[options] には、先頭にハイフン (-) を付けたオプションキーワードを指定します。オプションによっては、リスト中の次の項目を引数として取るものがあります。list_of_files には、ソース、オブジェクトまたはライブラリのファイル名を空白で区切って複数指定することができます。また、オプションによっては、ソースファイルリストよりも後に続けて指定しなければならないものがあります (たとえば、-B-l および -L)。これらのオプションには、そのオプション用のファイルリストを指定してもかまいません。

オプションの構文

オプションの一般的な書式を以下に示します。

表 3-1   オプションの構文
構文の形式
-flag
-g
-flagvalue
-Dnostep
-flag=value
-xunroll=4
-flag value
-o outfile


次の表記規則に従って、オプションを説明しています。

表 3-2   オプションの表記規則  
表記 意味 例 : テキスト / インスタンス
    [] 角括弧は、省略可能な引数を表す。 -O[n]
-O4,-O
    { } 中括弧は、必須の引数を表す。 -d{y|n}
-dy
    | 縦棒記号は、いずれか一方を選択する引数を表す。 -B{dynamic|static}
-Bstatic
    : コロンは、コンマと同様に、引数を区切る場合に使用することもある。 -Rdir[:dir] -R/local/libs:/U/a
    ... 省略符号は、連続した項目の一部が省略されていることを示す。 -xinline=f1[,...fn] -xinline=alpha,dos


括弧、縦棒、省略符号は、オプションを記述するために使用している記号で、オプション自体の一部ではありません。

オプションの一般的な規則を以下に示します。

ソースファイル、オブジェクトファイル、およびライブラリは、コマンド行に現れる順にコンパイルとリンクが実行されます。

オプションのまとめ

この節では、各コンパイラオプションを機能別に分類し、概略を説明しています。
詳細は、表 3-3 の詳細欄に示すページを参照してください。

次の表に、f77 および f95 のコンパイラオプションを機能別にまとめます。この表には、廃止されたり使用されなくなったりしたオプションフラグは含まれていません。フラグによっては、複数の使用目的があるため、複数の箇所に記載されているものがあります。

表 3-3   機能別コンパイラオプション
機能 オプションフラグ
コンパイルモード

コンパイルのみ。実行可能ファイルを生成しない。 -c

ドライバが作成するコマンドを表示するが、コンパイルは行わない。 -dryrun

書き込むオブジェクト、ライブラリ、実行可能ファイルの名前を指定する。 -o filename

コンパイルし、アセンブリコードだけを生成する。 -S

実行可能プログラムからシンボルテーブルを除外する。 -s

エラーメッセージ以外のコンパイラメッセージを出力しない。 -silent

一時ファイルのディレクトリへのパスを定義する。 -temp=directory

各コンパイルフェーズの経過時間を示す。 -time

コンパイラおよびそのフェーズのバージョン番号を示す。 -V

冗長メッセージ -v
コンパイルされるコード

外部名の末尾に下線を追加/抑制する。 -ext_names=x

インライン化するユーザー関数を指定する。
-inline=list

コンパイル位置独立コードを指定する。 -KPIC/-kpic

特定の数学ライブラリルーチンをインライン化する。 -libmil

STOP で整数のステータス値をシェルに返す。
-stop_status[=yn]

コードアドレス空間を指定する。 -xcode=x

UltraSPARC の先読み命令を有効にする。 -xprefetch[=x]

オプションのレジスタを指定する。 -xregs=x

デフォルトのデータマッピングを指定する。 -xtypemap=x
データの境界整列

COMMON ブロック内のデータの境界整列を指定する。 -aligncommon[=n]

強制的に COMMON ブロックデータの境界整列を行い、
マルチワードのロード/ストアを可能にする。
-dalign

全データを 8 バイト境界に強制的に整列させる。 -dbl_align_all

COMMON ブロックデータを8 バイト境界に整列させる。 -f

メモリの境界整列と振る舞いを指定する。 -xmemalign[=ab]
デバック

j実行時に添字の範囲検査を有効にする。 -C

デバック用にコンパイルする。 -g

Sun WorkShop ソースブラウザを使用したブラウズのためにコンパイルする。 -sb, -sbfast

未宣言変数の検査を行う。 -u

Sun WorkShop Performance アナライザ用にコンパイル。 -xF

ソースのリスト処理を指定。 -Xlistx

オブジェクトファイルを使用せずにデバック機能を有効にする。 -xs

ループツールプロファイリング用のコンパイル -Zlp
診断

非標準の拡張機能を報告する。 -ansi

特定のエラーメッセージの出力を抑制する。 -erroff=list

エラーメッセージとともにエラータグ名を表示する。 -errtags

コンパイラオプションの要約を表示する。 -flags, -help

コンパイラおよびその構成要素のバージョン番号を示す。 -V

冗長メッセージを表示する。 -v

並列化のメッセージを冗長に表示する。 -vpara

警告メッセージを表示/抑制する。 -wn

実行時の taskcommon の整合性検査を有効にする。 -xcommonchk

コンパイラの README ファイルを表示する。 -xhelp=readme
ライセンス

ライセンスサーバー情報を表示する。 -xlicinfo
リンクおよびライブラリ

動的/静的ライブラリを許す/必要とする。 -Bx

動的/静的なライブラリのみのリンクを許可する。 -dy, -dn

動的 (共有オブジェクト) ライブラリを作成する。 -G

名前を動的ライブラリの名前を指定する。 -hname

ディレクトリをライブラリ検索パスに追加する。 -Ldir

libname.a または libname.so というライブラリをリンク
する。
-lname

実行時ライブラリの検索パスを実行可能プログラムに
組み込む。
-Rdir

インクリメントリンカ (ild) を使用不可にする。 -xildoff

最適化数学ライブラリをリンクする。 -xlibmopt

Sun のパフォーマンスライブラリをリンクする。 -xlic_lib=sunperf

リンクエディタのオプションを指定する。 -zx

再配置のない閉じたライブラリを生成する。 -ztext
数値および浮動小数点

非標準の浮動小数点の設定を使用する。 -fnonstd

SPARC 非標準浮動小数点を選択する。 -fns

入力中に実行時浮動小数点オーバフロー検査を有効にする。 -fpover

IEEE 浮動小数点丸めモードを選択する。 -fpround=r

浮動小数点最適化レベルを選択する。 -fsimple=n

浮動小数点トラップモードを選択する。 -ftrap=t

単精度定数を倍精度に変換する。 -r8const

区間演算を有効にし、適切な浮動小数点環境を設定する (-xinterval を含む)。 -xia[=e]

区間演算機能を有効にする。 -xinterval[=e]
最適化とパフォーマンス

ループを解析して、データ依存関係を調べる。 -depend

オプションの集まりを使用して最適化する。 -fast

最適化レベルを指定する。 -On

効率的なキャッシュ使用のためにデータレイアウトを
パディングする。
-pad[=p]

局所変数をメモリースタックに割り当てる。 -stackvar

ループ展開を有効にする。 -unroll[=m]

ソースファイル間での最適化を有効にする。 -xcrossfile[=n]

#pragma OPT に最高レベルの最適化を設定する。 -xmaxopt[=n]

メモリベースのトラップが発生しないであろうと表明する。 -xsafe=mem

コードサイズが増加する場合は、最適化を行わない。 -xspace

ベクトルライブラリ関数の呼び出しを自動的に作成する。 -xvector[=yn]
並列化 (注:Fortran の並列化機能には、Sun WorkShop HPCのライセンスが必要)

DO ループの自動並列化を有効にする。 -autopar

指令で明示的に指定したループの並列化を有効にする。 -explicitpar

ループの並列化情報を表示する。 -loopinfo

並列化の指令の形式 (Sun、Cray、OpenMT) を指定する。 -mp=v

マルチスレッド用にプログラミングされたコードをコンパイル -mt

OpenMT API 指令を受け付け、適切な環境 (マクロ) を設定する。 -openmp

-autopar -explicitpar -dependの組み合わせでループを並列化する。 -parallel

自動並列化でループ内の縮約操作を認識する。 -reduction

並列化メッセージを冗長表示する。 -vpara
ソースコード

プリプロセッサのシンボルを定義する。 -Dname[=sym]

拡張 (132 文字) ソース行を受け入れる。 -e

.F、.F90 および .F95 のファイルにプリプロセッサを適用するが、コンパイルは行わない。 -F

固定書式として入力を受け付ける (f95)。 -fixed

すべてのソースファイルを fpp プリプロセッサの先行処理を行う。 -fpp

自由書式として入力を受け付ける (f95)。 -free

ファイル検索パスにディレクトリを追加する。 -Idi

モジュール検索パスにディレクトリを追加する。 -Mdir

大文字と小文字を区別する。 -U

使用するプリプロセッサ (cpp または fpp) を選択する。 -xpp[={fpp|cpp}]

再帰的な副プログラム呼び出しを許可する。 -xrecursive
ターゲットプラットフォーム

ホストシステム用に最適化する。 -native

オプティマイザにターゲットのプラットフォームを指定する。 -xarch=a

オプティマイザにターゲットのキャッシュプロパティを指定する。 -xcache=a

オプティマイザにターゲットのプロセッサを指定する。 -xchip=a

オプティマイザにターゲットのプラットフォームを指定する。 -xtarget=


頻繁に利用するオプション

Sun Fortran コンパイラには、オプションのコマンド行パラメータによって選択できる機能が数多くあります。以下の表に、頻繁に利用するオプションをまとめてあります。

表 3-4   頻繁に利用するオプション  
目的 オプション
デバッグ 大域的にプログラムを検査し、ルーチン間での引数、共通ブロックなどの整合性を調べる。 -Xlist
デバッグ dbx および Sun WorkShop デバッグ機能を使用するための追加のシンボルテーブル情報を生成する。 -g
パフォーマンス 実行速度の速い実行可能ファイルを作成する。 -O[n]
パフォーマンス 事前に定義されている一連のオプションを使用して、ネイティブプラットフォームのコンパイルと実行時間を改善する。 -fast

動的 (-Bdynamic) または静的 (-Bstatic) ライブラリとのリンク -Bx
コンパイルのみ リンクを行わず、各ソースファイルごとに .o ファイルを作成する。 -c
出力ファイル 実行可能な出力ファイルの名前を a.out ではなく nm に指定する。 -o nm
ソースコード 固定書式の Fortan 77 のコードを f95 を使用してコンパイルする。 -fixed


下位互換オプションと旧オプション

コンパイラの旧リリース、および Fortran の従来の機能との下位互換のオプションを示します。

表 3-5   下方互換オプション  
目的 オプション
デフォルトのデータサイズを倍長にする。-xtypemap を使用する。 -r8 または -dbl
定数の引数への代入を可能にする。 -copyargs
外部名に下線を使用しない。 -ext_names=e
非標準の算術演算を使用可能にする。 -fnostd
ホストシステムに合わせて最適化を行う。 -native
並びによる旧式の出力を行う。 -olddo
少なくとも 1 回は DO ループを実行する。 -onetrip
SPARC V7 アーキテクチャ用のコンパイル
-cg89
SPARC V8 アーキテクチャ用のコンパイル
-cg92


これらのオプションフラグは推奨していませんので使用しないでください。

現在使用されていないオプション

f77 および f95 の各コンパイラでサポートされていないオプションを示します。コンパイラコマンドで使用してもエラーの原因はなりません。これらのオプションは無視されるので、何の効果もありません。

表 3-6   現在使用されていないオプション  
元の意味 オプション
スレッドアナライザ用にコンパイルします。 -ztha
例外トラップを無効にします (f95)。 -fnonstop


オプションリファレンス

次の表に、オプションの利用の可能性について示します。

凡例 オプションの利用可能性
f77 該当するプラットフォームの f77 でのみ使用できます。
f95 該当するプラットフォームの f90 でのみ使用できます。
f77/f95 該当するプラットフォームの f77f90 の両方で使用できます。


あるオプションが、特定のプラットフォーム上のコンパイラでは使用できない場合でも、メッセージは表示されません。そのようなオプションは無視されるので、影響は何もありません。

このオプションリファレンスでは、それぞれのオプションフラグについて説明します。


-a

tcov を使用する、旧式の基本ブロックごとのプロファイリングを行います。

tcov を使用する旧式の基本ブロックごとのプロファイルを行います。新しい形式のプロファイルについては、「-xprofile=p」 tcov の説明を参照してください。詳細は、tcov(1) のマニュアルページおよび『プログラムのパフォーマンス解析』を参照してください。

文の基本ブロックがそれぞれ実行される回数を数えるコードを挿入します。これによって、正常終了時に、各 .f ファイルに対して 1 個の .d ファイルを作成する、実行時記録機能が起動されます。.d ファイルには、対応するソースファイルの実行データが蓄積されます。後に、ソースファイルに対して tcov(1) ユーティリティを実行すると、プログラムの統計情報を生成することができます。tcov によって出力される情報は、ソースファイルごとに .tcov ファイルに書き込まれます。-pggprof-atcov を補います。

TCOVDIR 環境変数がコンパイル時に設定されている場合、この変数によって .d ファイルと .tcov ファイルを置くディレクトリが指定されます。この変数が設定されていない場合、.d ファイルは .f ファイルと同じディレクトリに置かれます。

-xprofile=tcov -a オプションは、1 つの実行可能ファイル内では互換性があります。つまり、-xprofile=tcov を付けてコンパイルしたファイルと、-a を付けてコンパイルしたファイルを 1 つのプログラムにリンクすることができます。ただし、同一のファイルに両方のオプションを付けてコンパイルすることはできません。

コンパイルとリンクを分けて行う場合、-a を付けてコンパイルしたときは、リンクでも必ず -a を付けてください。なお、以前のバージョンでは -a を指定すると -On は無効になりましたが、このバージョンでは -a-On を同時に指定することができます。

詳細は、『Fortran プログラミングガイド』の第 8 章「パフォーマンスプロファイリング」を参照してください。


-aligncommon [=n]

COMMON ブロック内のデータの境界整列を指定します。

l SPARC: f77/f95

n は、1、2、4、8、または 16 を指定できます。これは、COMMON ブロック内のデータ要素について希望する境界整列サイズ (バイト単位) を指定します。

たとえば、-aligncommon=4 と指定すると、4 バイト以上の共通ブロック内の全データ要素が、4 バイト境界に整列します。指定のサイズより小さいブロック内のデータは、このオプションの影響を受けず、本来の境界上に位置したままになります。

-aligncommon を指定しないと、共通ブロック内のデータは、多くてもデフォルトの 4 バイト境界に整列されます。

どのプラットフォームでも、値を指定せずに -aligncommon だけを指定すると、デフォルトの 1 が仮定され、共通ブロック内の全データは、1 バイト境界に整列されます (要素間のパディングは行われません)。


-ansi

規格以外の拡張機能を使用すると、警告メッセージを出力します。

ソースコード中で、標準外の Fortran 77 または Fortran 95 の拡張機能を使用すると、警告メッセージが出力されます。


-arg=local

ENTRY 文の実引数を保存します。

このオプションを使用して代替入口のある副プログラムをコンパイルすると、f77 では コピー、ストアを使用して、仮引数と実引数の関連性を保存します。たとえば、次のプログラムを正しく実行するには -arg=local でコンパイルする必要があります。

         A = SETUP(ALPHA,BETA,GAMMA)
ZORK = FXGAMMA(GCONST)
...
FUNCTION SETUP(A1,A2,A3)
...
ENTRY FXGAMMA(F)
FXGAMMA = F*GAMMA
...
RETURN
END

このオプションを指定しないと、FXGAMMA を介してこのルーチンに入った時点で、SETUP の実引数が正しく引用される保証はありません。-arg=local に依存するコードは標準ではありません。


-autopar

ループの自動並列化を使用可能にします。

Fortran 並列化機能には、Sun WorkShop HPC のライセンスが必要です。

マルチプロセッサで並列処理の対象に適するループを探し、そのループを並列化します。内部反復データに依存するループを解析し、ループを再構築します。最適化レベルが -O3 以上に設定されていない場合は、自動的に -O3 に設定されます。

パフォーマンスを改善するには、-autopar などの並列化オプションを使用するときに -stackvar オプションも指定してください。

プログラム中に libthread スレッドライブラリへの明示的な呼び出しがある場合は、-autopar は使用しないでください。

-autopar オプションは、シングルプロセッサのシステムには適していません。シングルプロセッサのシステムでこのオプションを付けてコンパイルを行うと、通常は実行速度が低下します。

マルチスレッド環境で並列化プログラムを実行するには、実行前に PARALLEL (または OMP_NUM_THREADS) 環境変数を設定する必要があります。これは、プログラムが作成できる最大スレッド数を実行時システムに指示しています。デフォルトは 1 です。一般的に、ターゲットプラットフォーム上の PARALLEL 変数または OMP_NUM_THREADS 変数には、利用可能なプロセッサ数を設定します。

-autopar を使用してコンパイルとリンクを一度に行う場合、マルチスレッド処理ライブラリとスレッド対応の Fortran 実行時ライブラリが自動的にリンクされます。
-autopar を使用してコンパイルとリンクを別々に行う場合は、適切なライブラリにリンクするために、-autopar を使用してリンクを行う必要があります。

-reduction オプションは、-autopar オプションと組み合わせて使用することもできます。その他の並列化オプションとして、-parallel-explicitpar があります。

並列化についての詳細は、『Fortran プログラミングガイド』を参照してください。

Fortran 並列化機能には、Sun WorkShop HPC のライセンスが必要です。


-B{static|dynamic}

動的または静的のどちらかのライブラリリンクを指定します。

-Bdynamic または static の間に空白文字を入れないでください。-B を省略すると、デフォルトとして -Bdynamic が使用されます。

以下の点にも注意してください。

次のように、-Bstatic-Bdynamic をコマンド行で切り替えて、何回でもライブラリを静的および動的にリンクすることができます。

f77 prog.f -Bdynamic -lwells -Bstatic -lsurface

これらはローダーおよびリンカーのオプションです。コンパイルコマンド上に -Bx オプションを指定してコンパイルとリンクを分けて行う場合は、リンク時にも -Bx オプションを指定する必要があります。

-Bdynamic-dn の両方をコマンド行に指定することはできません。-dn を指定すると動的ライブラリのリンクが行われなくなるからです。

64 ビットの Solaris 環境では、ほとんどのシステムライブラリが共有動的ライブラリとして単独使用できます。これには、libm.solibc.so (libm.alibc.a は提供されていない) も含まれます。つまり、64 ビットの Solaris 環境で -Bstatic-dn を指定するとリンクエラーが発生する場合があります。このような場合、アプリケーションを動的ライブラリとリンクさせる必要があります。

静的ライブラリと動的ライブラリについての詳細は、『Fortran プログラミングガイド』を参照してください。


-C

配列の引用で範囲を超えていないかを検査します。

配列の添字が宣言されている範囲を超えると、セグメンテーションフォルトなどの予期しない結果になる場合があります。-C オプションはコンパイル時と実行時に、配列の添字に違反がないかどうかを検査します。

-C を指定すると、実行可能ファイルのサイズが大きくなる場合があります。

-C オプションを使用すると、配列の添字違反はエラーとして扱われます。ソースコードのコンパイル中に配列添字の範囲違反が検出されると、コンパイルエラーとして扱われます。

配列添字の違反が実行時だけに検出される場合、コンパイラは実行可能プログラムの中に範囲を検査するコードを生成します。この結果、実行時間が長くなることがあります。したがって、プログラムの開発やデバッグを行なっている間にこのオプションを使用して配列添字の検査を有効にしておき、最後に添字検査なしで最終バージョンの実行可能ファイルを再コンパイルすると効果的です。


-c

コンパイルだけを行い、.o オブジェクトファイルを生成します。リンクは行いません。

リンクを行わずに、ソースファイルごとに .o ファイルを作成します。1 つのソースファイルだけをコンパイルする場合は、-o オプションを使用して、出力先の .o ファイルの名前を指定することができます。


-cg89

一般的な SPARC アーキテクチャ用にコンパイルを行います。(廃止)


-cg92

SPARC V8 アーキテクチャ用にコンパイルを行います。(廃止)


-copyargs

定数の引数へ代入を行えるようにします。

-copyargs を指定しないと異常終了してしまうコードは、Fortran 規格に準拠していません。また、このようなコードは予測できない動作をすることがあります。


-Dname[=def]

プリプロセッサのシンボル名を定義します。

コマンド行では、ソースファイル中に

#define name[=def]

と記述されている場合と同じように、このオプションは name を定義します。

=def の指定がないと、シンボル name は値 1 として定義されます。マクロシンボル name はプリプロセッサ fpp (または cpp-xpp オプションを参照) に渡されて展開されます。

次は事前定義された値です (シンボルの前に二重の下線を付けます):

__sparc, __unix, __sun, __SVR4,
__SunOS_5_6, __SunOS_5_7, __SunOS_5_8
たとえば、SPARC システム上では、__sparc 値が定義されています。これらの値は、次のようなプリプロセッサ条件で使用することができます。
#ifdef __sparc

コンパイラはデフォルトにより、 fpp (1) プリプロセッサを使用します。
C プリプロセッサ cpp(1) と同様に、fpp はソースコードマクロを展開して、コードを条件付きでコンパイルすることができます。また cpp とは異なり、fpp は Fortran の構文を認識して、Fortran のプリプロセッサとして優先して使用されます。-xpp=cpp フラグを指定すると、fpp ではなく cpp を強制的に使用することができます。


-dalign

COMMON ブロックデータの整列を行い、高速なマルチワードのロード/ストアを生成します。

このフラグを使用すると、COMMON ブロック (および EQUIVALENCE クラス) のデータレイアウトが変更されるため、コンパイラは、そのデータに対する高速なマルチワードのロード/ストアを生成できるようになります。

データレイアウトは、-f フラグを指定した時と同じようになります。COMMON ブロックと EQUIVALENCE クラスの倍精度および 4 倍精度のデータが、メモリー内で「自然に」境界整列されます。これは、8 バイトの境界整列になります。なお、64 ビット環境で -xarch=v9 または -xarch=v9a を指定してコンパイルを行うと、4 倍精度のデータは 16 バイトに境界整列されます。COMMON ブロック内のデータのデフォルト整列は、4 バイトの境界整列です。コンパイラも自然整列を前提とするため、高速なマルチワードのロード/ストアを生成してデータを参照できるようになります。


注 - -dalign を使用すると、データの境界整列が標準に合わなくなることがあります。これが原因で、EQUIVALENCECOMMON の変数に問題が生じることがあります。さらに、-dalign が必要な場合に移植性のないプログラムになります。

-dalign は、-xmemalign=8s -aligncommon=8 と等価のマクロです。「-xmemalign[=<a><b>]」 を参照してください。

-dbl-dalign の両方を使用すると、デフォルトの INTEGER 変数が 8 バイトに境界整列され 64 ビットになります。これは、次のオプションと同義になります。

-xtypemap=real:x,double:y,integer:64

ある 1 つの副プログラムに -dalign を付けてコンパイルした場合は、プログラムのすべての副プログラムに -dalign を付けてコンパイルしてください。このオプションは -fast オプションに含まれます。


-db

オプションの CIF ファイルを生成します。

l SPARC:f95

拡張子 .T を付けて、オプションのコンパイラ情報ファイル (CIF) を生成します。このファイルは、Sun WorkShop ソースブラウザ で必要になることがあります。CIF ファイルは、-Xlist オプションを使用すると、自動的に生成されます。-db オプションは、-Xlist を指定せずに CIF ファイルを生成し直す場合に使用できます。


-dbl

REAL、INTEGER、DOUBLE、COMPLEX のデフォルトサイズを倍長にします。

-dbl を使用すると、明示的にバイトサイズを指定しないで宣言されている、REAL、INTEGER、DOUBLE、および COMPLEX の変数に対するデフォルトのバイトサイズが拡張されます。

表 3-7   デフォルトのデータサイズ (バイト)と -dbl オプション
-dbl オプションなし -dbl オプションあり
データ型 デフォルト SPARC
INTEGER
4 8
REAL
4 8
DOUBLE
8 16


このオプションは、変数、パラメータ、定数、および関数に適用されます。

また、LOGICALINTEGER、COMPLEX は 2 つの REAL、DOUBLE COMPLEX は 2 つの DOUBLE として扱われます。

-dbl-r8 を比較すると、次のようになります。また、-dbl および -r8 は、より汎用的な -xtypemap= オプションで表すことができます。

-dbl : -xtypemap=real:64,double:128,integer:64 と同義

-r8 : -xtypemap=real:64,double:128,integer:mixed と同義

これらのオプションによってデフォルトの DOUBLE PRECISION データが QUAD PRECISION (128 ビット) になりますが、パフォーマンスは低下する可能性があります。この場合、-dbl よりも -xtypemap=real:64, double:64, integer:64 を使用した方が適切です。

浮動小数点のすべてのデータ型に対し、-dbl-r8 と同様に作用します。-r8-dbl を同時に指定すると、-dbl だけを指定したときと同じ結果となります。

通常、1 つの副プログラムを -dbl 付きでコンパイルする場合は、そのプログラムのすべての副プログラムも -dbl 付きでコンパイルしてください。これは特に、各ファイル間での入出力形式が統一されていないプログラムでは重要になります。またこのオプションを使用すると、関数名にデータのサイズを明示的に指定しない限り、ライブラリ関数の呼び出しも含め、関数のデフォルトのデータサイズが変更される点に注意する必要があります。


-dbl_align_all={yes|no}

8 バイトの境界上ですべてのデータを強制的に整列します。

値にyes または no のいずれかを指定します。値が yes の場合、変数はすべて 8 バイトの境界上で整列されます。デフォルトは、-dbl_align_all=no です。

64 ビット環境で -xarch=v9 または -xarch=v9a を使用してコンパイルした場合、4 倍精度のデータは 16 バイトに境界整列されます。

このフラグによって、COMMON ブロック内のデータレイアウトやユーザー定義の構造体が変更されることはありません。

SPARC で、-dalign と併用してマルチワードのロード / ストアで追加した効率を有効にします。

使用した場合、すべてのルーチンをこのフラグでコンパイルする必要があります。


-depend

ループを解析してデータ依存を調べます。


-dryrun

コンパイラドライバによって実行されるコマンド群を表示しますが、実行はしません。

デバッグ時に便利です。このオプションにより、コンパイル時に実行されるコマンドが表示されます。


-d{y|n}

実行可能形式全体を生成する時のライブラリのリンク形式 (動的または静的) 。

このオプションを指定しない場合は、デフォルトとして -dy が使用されます。

-Bx とは異なり、このオプションは実行可能ファイル全体に適用され、コマンド行で 1 度だけ使用します。

-dy|-dn はローダーとリンカーのオプションです。これらのオプションを付けてコンパイルとリンクを別々に行う場合は、リンクでも同じオプションを指定する必要があります。

64 ビットの Solaris 環境で共有動的ライブラリとしてだけ使用できるシステムライブラリはほとんどありません。これには、libm.solibc.so (libm.alibc.a は提供されていない) も含まれます。つまり、64 ビットの Solaris 環境で -Bstatic-dn を指定するとリンクエラーが発生する場合があります。このような場合、アプリケーションを動的ライブラリとリンクさせる必要があります。


-e

拡張された入力ソース行を受け付けます。

132 文字までのソース行を受け付けます。コンパイラは 132 桁目まで各行の右側を空白で埋めます。-e オプションを指定してコンパイルする場合で継続行を使用する時は、文字定数が複数行にまたがらないようにしてください。複数行にまたがると、不必要な空白が定数中に挿入されてしまいます。


-erroff=taglist

taglist 名で指定した警告メッセージの表示を抑制します。

各タグ名をコンマで区切った並び (taglist) で指定した警告メッセージの表示を抑制します。taglist %none と指定した場合は、警告メッセージは抑制されません。taglist %all と指定した場合は、すべての警告メッセージが抑制されます (-w オプションと同義です)。

例 :

f77 -erroff=WDECL_LOCAL_NOTUSED ink.f

-errtags オプションを使用して、警告メッセージに関連付けられているタグ名を表示します。


-errtags

各警告メッセージがメッセージタグ付きで表示されます。

このオプションを付けると、コンパイラの内部エラータグ名が警告メッセージとともに表示されます。デフォルトでは、タグは表示されません。

demo% f77 -errtags ink.f
ink.f:
 MAIN:
"ink.f", 11 行目: 警告: 局所変数 "i" が使用されていません。 
(WDECL_LOCAL_NOTUSED)  <- 警告メッセージのタグ名


-explicitpar

指令で明示的に示されたループを並列化します。

コンパイラは、並列で実行すると、正確な結果が生成されないようなデータの依存が DO ループ中にある場合でも、並列コードを生成します。明示的な並列化を行う場合は、ループを正しく分析してデータ依存の問題がないことを確認してから、並列化の指令を使用してください。

このオプションを使用すると、Sun、Cray、OpenMP といった明示的並列化指令が有効になります。並列化指令の直前にある DO ループには、スレッド化されたコードが生成されます。並列化はマルチプロセッサシステムの場合のみ適しています。このオプションは、すでに libthread ライブラリへの呼び出しによって、独自にマルチスレッド処理を行なったプログラムをコンパイルする場合には使用できません。

並列化されたプログラムをマルチスレッド環境で実行するには、実行前に PARALLEL (または OMP_NUM_THREADS) 環境変数を設定しておく必要があります。これは、プログラムが作成できる最大スレッド数を実行時システムに指示しています。デフォルトは 1 です。一般的に、ターゲットプラットフォーム上の PARALLEL 変数または OMP_NUM_THREADS 変数には、利用可能なプロセッサ数を設定します。

-explicitpar を使用してコンパイルとリンクを 1 度に行う場合、マルチスレッド処理ライブラリとスレッド対応の Fortran 実行時ライブラリが自動的にリンクされます。-explicitpar を使用してコンパイルとリンクを分けて行う場合は、リンクにも
-explicitpar を指定する必要があります。

explicitpar などの並列化オプションを使用する場合にパフォーマンスを改善するには、-stackvar オプションも指定してください。

有効な並列化指令の形式は -mp オプションを使用して選択します。選択できるものは、Sun、Cray または OpenMP です。

最適化レベルが -03 以上に設定されていない場合は、自動的に -03 に設定されます。

詳細は、『Fortran プログラミングガイド』の第 10 章「並列化」を参照してください。

Fortran の並列化機能には、Sun WorkShop HPCのライセンスが必要です。


-ext_names=e

外部名に下線を付けるかどうかを指定します。

e には plain または underscore のどちらかを指定します。デフォルトは underscore です。

-ext_names=plain: 下線を付けません。

-ext_names=underscore: 下線を付けます。

外部名とは、サブルーチン、関数、ブロックデータ副プログラム、名前付き共通ブロックの名前のことです。このオプションは、ルーチンの入口の名前と、その呼び出しに使用する名前の両方に影響を与えます。このオプションによって、Fortran 77 のルーチンから別の言語のルーチンを呼び出したり、呼び出しを受けたりすることができます。


-F

ソースファイルプリプロセッサを起動します。ただしコンパイルは行いません。

.F ファイル (f95 の場合は .F95 ファイル) に fpp プロセッサを適用し、同じファイル名で拡張子を .f (または .f95) に変えたファイルに結果を書き込みます。ただし、コンパイルは行いません。

例:

f77 -F source.F

を実行すると、ソースファイルが source.f に書き込まれます。

fpp は Fortran のデフォルトのプリプロセッサです。C のプリプロセッサ ( cpp)
-xpp=cpp
を指定すると、選択されます。


-f

COMMON ブロックのデータを整列します。

COMMON ブロックの倍精度および 4 倍精度のデータを境界整列します。

このフラグを使用すると、COMMON ブロック (および EQUIVALENCE クラス) のデータレイアウトが変更されます。COMMON ブロックと EQUIVALENCE クラスの倍精度および 4 倍精度のデータが、メモリー内で「自然に」境界整列されます。これは、8 バイトの境界整列になります。なお、64 ビット環境で -xarch=v9 または -xarch=v9a を指定してコンパイルを行うと、4 倍精度のデータは 16 バイトに境界整列されます。COMMON ブロック内のデータのデフォルト整列は、4 バイトの境界整列です。


注 - -f フラグを使用すると、データの整列が標準外になることもあるため、EQUIVALENCECOMMON 内の変数に問題が生じる可能性があります。また、-f フラグを必要とするプログラムは、移植性が失われる可能性もあります。

-f オプションと共に -dbl オプションを指定すると、すべての 64 ビットの整数データが 8 バイトに境界整列されます。

-f オプションを指定してプログラムのいずれかの部分をコンパイルする場合は、そのプログラムに含まれる副プログラムもすべて -f オプションを指定してコンパイルする必要があります。

このオプションを単独で使用すると、コンパイラで倍精度および 4 倍精度のデータに対して高速のマルチワードのフェッチ/ストア命令を生成することはできません。-dalign がこれを実行し、-f も呼び出します。-f よりも -dalign を使用することをお勧めします。詳細は、「-dalign」を参照してださい。これは、-dalign-f も同様に -fast オプションの一部であるからです。


-fast

最適なオプションを選択して、実行可能ファイルの実行速度を上げます。

過度にコンパイルに時間をかけずに、実行速度が速くなるように最適化を行うオプションを選択します。これにより、多くのアプリケーションのパフォーマンスが最大に近くなります。

コンパイルとリンクを別々に行う場合は、-fast でコンパイルをしたら、-fast でリンクするようにしてください。

-fast では、次のオプションを選択します。

n -dalign
n -depend
n -fns
n -fsimple=2
n -ftrap=%none (f77) または -ftrap=common (f95)
n -libmil
n -f (f95 のみ)
n -xtarget=native
n -O5
n -xlibmopt
n -pad=common
n -xvector=yes


注 - このオプションは、他のオプションをいくつか組み合わせたもので、その組み合わせは、各リリースやコンパイラの種類によって異なります。-fast で選択されたオプションは、プラットフォームによっては動作しないことがあります。

-fast が、選択するオプションの詳細は以下のとおりです。

コンパイルを行うのとは異なるマシンでプログラムを実行する場合は、-fast の後にコード生成オプションを付けます。たとえば、次のとおりです。
f77 -fast xtarget=ultra...
例外処理を使用する C モジュールでは、-fast の後に -nolibmil を付けます。
-libmil を使うと errno の設定や、matherr(3m) の呼び出しによって、例外を検出することができなくなります。
厳密に IEEE 754 標準に準拠する必要がある場合は -fsimple=2 は適していません。81ページを参照してください (旧リリースでは、-fast-fsimple=1を設定していました)。
このオプションを使用すると、標準外の形式で Fortran データの境界整列が行われる可能性があります。

次に示すように、-fast オプションの後に別のオプションを付けて、このリストに追加したり削除したりできます。

f95 -fast -fsimple=1 -xnolibmopt ...

この例では、-fast で選択された -fsimple=2 の指定を変更し、-xlibmopt を無効にしています。


-fixed

固定書式の Fortran 95 ソース入力ファイルを指定します。


-flags

-help と同義です。


-fnonstd

浮動小数点算術ハードウェアの非標準の初期化を行います。

このオプションは、以下のオプションフラグの組み合わせと同義です。

-fnonstd を指定することは、Fortran 主プログラムの先頭で次の 2 つの呼び出しを行うのとほぼ同じです。

i=ieee_handler("set", "common", SIGFPE_ABORT)
 call nonstandard_arithmetic() 

nonstandard_arithmetic() ルーチンは、旧式の abrupt_underflow() ルーチンの代わりです。

-fnonstd オプションを有効にするには、主プログラム全体にこのオプションを付けてコンパイルする必要があります。このオプションを使用すると、浮動小数点ハードウェアが初期化されて以下が実行されます。

段階的アンダーフローおよび非正規数についての詳細は、-fns を参照してください。

-fnonstd オプションは、浮動小数点オーバーフロー、ゼロによる除算、無効な演算などの例外処理のためのハードウェアトラップを可能にします。これらのハードウェアトラップは SIGFPE シグナルに変換され、プログラムに SIGFPE ハンドラがなければメモリーダンプして終了します。

詳細は、ieee_handler(3m) と ieee_functions(3m) のマニュアルページ、『数値計算ガイド』、『Fortran プログラミングガイド』を参照してください。


-fns[={no|yes}]

SPARC の非標準の浮動小数点モードを選択します。

-fast などの -fns フラグが含まれるマクロフラグの後に =yes または =no オプションを使用して、-fns フラグを切り替えることができます。-fns は、-fns=yes と同じです。

このオプションフラグは、プログラムの実行開始時に、規格外の浮動小数点モードを有効にします。SPARC システムのなかには、規格外の浮動小数点モードを指定すると 「段階的アンダーフロー」 を無効にするシステムもあります。それが原因で、非正規数ではなくゼロにフラッシュされます。また、非正規オペランドがゼロに置き換えられます。このような SPARC システムでは、ハードウェアの段階的アンダーフローや非正規数がサポートされておらず、このオプションを使用するとプログラムのパフォーマンスを著しく改善することができます。

x が完全なアンダーフローの原因にならないとき、非正規数 x とは次の範囲にある数です。

表 3-8   非正規数 REALDOUBLE
データ型 範囲
REAL
0.0 < |x| < 1.17549435e-38
DOUBLE PRECISION
0.0 < |x| < 2.22507385072014e-308


非正規数に関する詳細は、『数値計算ガイド』を参照してください。また、このオプションおよび関連するオプションについては『Fortran プログラミングガイド』の第 6 章「浮動小数点演算」を参照してください。(演算によっては、非正規数を表すのに 「指数が最小の非正規化数」 という用語を使用している場合があります。)

デフォルトでは、浮動小数点は標準の設定に初期化されます。

-fns オプションを有効にするには、主プログラム全体にこのオプションを付けてコンパイルする必要があります。


-fpover[={yes|no}]

書式付きの入力で浮動小数点オーバーフローを検出します。

-fpover=yes を指定すると、I/O ライブラリは書式付きの入力で実行時浮動小数点オーバーフローを検出し、エラー条件 (1031) を返します。デフォルトでは、このようなオーバーフローの検出は行いません (-fpover=no)。-fpover-fpover=yes と同義です。


-fpp

fpp を使用して、入力の前処理を強制的に行います。

l SPARC: f95

ファイルの拡張子に関係なく、f95 コマンド行上にリストされた全入力ソースファイルを fpp プリプロセッサに渡します (通常、fpp によって自動的に先行処理されるファイルは、拡張子が .F、.F90、または F95 のファイルだけです)。


-free

自由書式のソース入力ファイルを指定します。

コマンド行で指定したソースファイルはすべて、ファイル名の拡張子を問わず、f95 自由書式と解釈されます。通常、f95.f ファイルを固定書式、また .f95 ファイルを自由書式とみなします。


-fround=r

起動時に IEEE の丸めモードを有効にします。

r には nearesttozeronegativepositive のいずれかを指定します。

デフォルトは -fround=nearest です。

-fround オプションを有効にするには、主プログラム全体にこのオプションを付けてコンパイルする必要があります。

このオプションは、IEEE 754 の丸めモードを以下のように設定します。

rtozeronegative、または positive の場合、プログラムの実行開始時に、オプションは丸め方向を round-to-zeroround-to-negative-infinity、または
round-to-positive-infinity にそれぞれ設定します。-fround を指定しない場合は、デフォルトで -fround=nearest が使用され、丸め方向は round-to-nearest になります。このオプションの意味は、ieee_flags 関数の場合と同じです (『Fortran プログラミングガイド』の第6章「浮動小数点演算」を参照してください)。


-fsimple[=n]

浮動小数点の最適化の設定を選択します。

オプティマイザが浮動小数点演算に関する前提を単純化できるようにします (『Fortran プログラミングガイド』の第 6 章「浮動小数点演算」を参照してください)。

一貫した結果を得るには、プログラム中のすべての副プログラムを同じ -fsimple オプションを付けてコンパイルする必要があります。

n には、0、1、2 のいずれかを指定します。デフォルトは以下のとおりです。

別の浮動小数点単純化レベルは次のとおりです。

-fsimple=0

前提を単純化しません。IEEE 754 に厳密に準拠してください。

-fsimple=1

若干の単純化を認めます。生成されるコードは IEEE 754 に厳密には準拠していませんが、大半のプログラムの数値結果は変わりありません。

-fsimple=1 を指定すると、オプティマイザは以下のことを前提とします。

-fsimple=1 を指定した場合、丸めや例外をまったく考慮しないで最適化を行うことはできません。特に、浮動小数点演算を、実行時に一定に保たれる丸めモードにおいて異なる結果を生成する浮動小数点演算と置き換えることはできません。
-fsimple=2

より広範囲の浮動小数点の最適化行います。丸めが変わると、多くのプログラムにおいて、生成される数値結果が異なることがあります。

たとえば、z=1/y が 1 回は計算され一時ファイルに保存されている場合は、
-fsimple=2 を指定するとオプティマイザは x/y の反復演算を x*y で置き換えることができ、除算は削除されます。

ただし、-fsimple=2 を指定していても、-fsimple=2 を指定しなければ発生しない浮動小数点例外をプログラムに発生させるような最適化はできません。

-fast では、fsimple=2 を設定します。


-ftrap=t

起動時に有効になる浮動小数点のトラップモードを設定します。

t には、以下のうち 1 つまたは複数の項目をコンマで区切って指定します。

%all, %none, %common, [no%]invalid, [no%]overflow,
[no%]underflow,[no%]division, [no%]inexact

-ftrap=common は、-ftrap=invalid,overflow,underflow,division.のマクロです。

% は省略できません。

f77 のデフォルトは -ftrap=%nonef95 のデフォルトは -ftrap=common です。

このオプションは、プログラムの初期化時に確定される IEEE 754 のトラップモードを設定します。処理は左から右に行われます。共通の例外とは、演算不可能、ゼロによる除算、およびオーバーフローと定義されています。たとえば、-ftrap=overflow のように指定します。

例 : -ftrap=%all,no%inexact は、inexact を除くすべての例外に対して、トラップを設定するという意味です。

以下の点を除いて、-ftrap=t の意味は ieee_flags() と同じです。

このオプションを有効にするには、主プログラム全体にこのオプションを付けてコンパイルする必要があります。

詳細は、『Fortran プログラミングガイド』の第 6 章「浮動小数点演算」を参照してください。


-G

実行可能ファイルの代わりに、動的共有ライブラリを構築します。


-g

デバッガを使用できるようにコンパイルします。

dbx(1) と Sun WorkShop のデバッグユーティリティを使用してデバッグできるように、シンボルテーブル情報を生成します。

-g の指定がなくてもある程度のデバッグはできますが、dbx とデバッグのすべての機能を使用するには、-g を付けてコンパイルする必要があります。

-g とともに指定したオプションの機能が制限される場合があります。

詳細に関しては、『dbx コマンドによるデバッグ』を参照してください。

SPARC の場合:
コマンド行上に .o オブジェクトファイルを指定すると、-g オプションによって、-xildon がデフォルトのインクリメンタルリンカーオプションになります 。つまり、-g を指定すると、コマンド行で -G オプションまたはソースファイル名を指定しないかぎり、ld ではなく ild が自動的に起動されます。


-hname

生成する動的共有ライブラリの名前を指定します。

このオプションはリンカーに渡されます。詳細は、Solaris の『リンカーとライブラリ』および『Fortran プログラミングガイド』の第 4 章「ライブラリ」を参照してください。

-hname オプションにより、作成される共有動的ライブラリに、ライブラリの内部名として name という名前が記録されます。-hname の間には空白文字を入れないでください (ライブラリ名が elp の場合を除く。この場合、空白が必要となる)。通常、name には -o の後に指定する名前と同じものを指定してください。-G を指定せずにこのオプションを使用しても意味がありません。

-hname オプションを省略すると、ライブラリファイルに内部名は記録されません。

ライブラリに内部名がある場合、このライブラリを引用する実行可能プログラムを実行するときは、実行時リンカーはあらゆるパスを検索して、同じ内部名を持つライブラリを探します。内部名を指定しておくと、実行時リンクの際に行うライブラリの検索が、より柔軟になります。このオプションは、共有ライブラリのバージョンを指定する場合にも使用できます。

共有ライブラリの内部名がない場合、リンカーは代わりに共有ライブラリファイルの特定のパスを使用します。


-help

コンパイルオプションの一覧を表示します。

オプションの要約リストを表示します。「-xhelp=h」も参照してください。


-Idir

インクルードファイルの検索パスに dir を追加します。

インクルードファイルの検索パスの先頭に、ディレクトリ dir を挿入します。-Idir の間には、空白文字を入れないでください。無効なディレクトリを指定した場合には、警告メッセージが表示されずに無視されます。

インクルードファイルの検索パスとは、インクルードファイルを探すために使用するディレクトリのリストです。インクルードファイルとは、プリプロセッサ指令 #include、または Fortran の INCLUDE 文に指定するファイルです。

: /usr/app/include でインクルードファイルを検索するには

demo% f77 -I/usr/app/include growth.F

コマンド行で複数回 -Idir オプションを指定することができます。各オプションを指定するごとに、検索パスリストの先頭に最初に検索するパスとして追加されます。

INCLUDE 文または #include 指令の相対パス名は次の順序で検索されます。

  1. ソースファイルがあるディレクトリ

  2. -Idir オプションで指定したディレクトリ

  3. デフォルトのリストにあるディレクトリ

-Idir のデフォルトのリストは、コンパイラのインストールディレクトリに依存します。標準インストールの場合、コンパイラのソフトウェアパッケージは、/opt ディレクトリに置かれます。インクルードファイルのデフォルトの検索パスは次のようになります。

f77 の場合

<install_dir>/SUNWspro/<release>/include/f77 /usr/include

f95 の場合

<install_dir>/SUNWspro/<release>/include/f90 /usr/include

<install_dir> は、インストールされているパッケージへのパス (通常インストールでは、/opt) であり、<release> は、リリースごとに異なるパスです。

-i2

デフォルトの整数サイズを 2 バイトに設定します。

整定数、論理定数、およびサイズが明示的に宣言されていない変数のデフォルトサイズを 2 バイトに設定します (ただし INTEGER*n Y とした場合は、-i2 オプションを指定しても Y は n バイトに宣言されます)。このオプションによってパフォーマンスが低下する場合があります。したがって、-i2 オプションを使用するよりも具体的な変数 INTEGER*2 を使用することをお勧めします。


-i4

デフォルトの整数サイズを 4 バイトに設定します。

整定数、論理定数、およびサイズが明示的に宣言されていない変数のデフォルトサイズを 4 バイトに設定します (ただし INTEGER*n Y とした場合は、-i4 オプションを指定しても Y は n バイトに宣言されます)。

INTEGERLOGICAL のデフォルトサイズは 4 バイトですが、このオプションを使用することにより、デフォルトを 8 バイトに設定。-dbl-r8 オプションによる設定を変更することができます。

demo% f77 -dbl -i4 *.f
f77: 警告: 廃止予定の -r8-dbl には -xtypemap を使います; f77 マニュ
アルページを参照
コマンド行の警告: -i4 により -dbl の整数部が上書きされます。


-inline=[%auto][[,][no%]f1,...[no%]fn]

指定のルーチンのインライン化を有効または無効にします

オプティマイザが、f1,...,fn リストで指定されたユーザー作成ルーチンをインライン化します。ルーチン名に no% という接頭辞をつけると、そのルーチンのインライン化が無効になります。

インライン化とは最適化の手法の 1 つで、CALL や関数呼び出しなどの副プログラムの引用を、実際の副プログラムコードに効果的に置き換えます。インライン機能を有効にすると、オプティマイザが効率的なコードを生成できる機会が増えます。

リストには、関数とサブルーチンをコンマで区切って指定します。関数のインライン化を禁止するには、関数名に no% という接頭辞を付けます。
-inline-O4 を同時に指定すると、コンパイラが通常実行する自動インライン化が無効になります。ただし、これは、%auto-inline を指定していない場合に限ります。

例:ルーチン xbarzbarvpoint をインライン化します。

demo$ f95 -O3 -inline=xbar,zbar,vpoint *.f

このオプションを使用するための条件を示します。ただし、条件が満たされていなくても、警告メッセージは出力されません。

なお、-O4 を指定すると、コンパイラは通常、ユーザー作成のサブルーチンや関数をすべてインライン化しようとします。-O4 -inline を追加すると、オプティマイザはリスト中にあるルーチンに限ってインライン化を行うため、実際にはパフォーマンスが低下します。この場合、%auto サブオプションを使用して、-O4 および -O5 で自動インライン化を有効にします。

demo% f95 -O4 -inline=%auto,no%zpoint *.f

上記の例では、-O4 の自動インライン化を有効にしながら、コンパイラが試みる zpoint() ルーチンのインライン化を無効にしています。


-Kpic

-pic と同義です。


-KPIC

-PIC と同義です。


-Ldir

ライブラリ検索ディレクトリのリストに dir を追加します。

オブジェクトライブラリの検索ディレクトリのリストの先頭にディレクトリ dir を追加します。-Ldir の間の空白文字はあってもなくてもかまいません。このオプションはリンカーに渡されます。「-lx」を参照してください。

ld(1) は、実行可能ファイルを生成しながら、dir でアーカイブライブラリ (.a ファイル) と共有ライブラリ (.so ファイル)を探します。ld はまず dir を検索してから、デフォルトのディレクトリを探します (ライブラリの検索順序に関する詳細は、『Fortran プログラミングガイド』の第 4 章「ライブラリ」を参照してください)。LD_LIBRARY_PATH と -Ldir の相対的な序列については ld(1) を参照してください。

例: -Ldir を使用して、ライブラリを検索するディレクトリを指定します。

demo$ f77 -Ldir1 -Ldir2 any.f


注 - -Ldir を使用して /usr/lib または /usr/ccs/lib を指定すると、バンドルされていない libm はリンクされなくなります。これらのディレクトリはデフォルトで検索されます。


-lx

リンカー検索ライブラリのリストに、ライブラリ libx.a を追加します。

-lx をリンカーに渡して、ld が未解決の参照を検索するためのライブラリを追加指定します。オブジェクトライブラリ libx をリンクします。共有ライブラリ libx.so が使用できる場合 (-Bstatic または -dn が指定されていない場合)、ld はこれを使用します。そうでなければ、ld は静的ライブラリ libx.a を使用します。共有ライブラリを使用する場合は、名前は a.out に組み込まれます。-l x の間には空白文字を入れないでください。

例 : ライブラリ libV77 をリンクします。

demo$ f77 any.f -lV77

複数のライブラリとリンクするには、-lx を再度使用してください。

例 : ライブラリ libylibz をリンクします。

demo$ f77 any.f -ly -lz 

ライブラリの検索パス、および検索順序については、『Fortran プログラミングガイド』の第 4 章「ライブラリ」を参照してください。


-libmil

最適化として libm ライブラリルーチンをインライン化します。

libm ライブラリルーチンの一部をインライン化します。このオプションによって、現在使用している浮動小数点オプションおよびプラットフォームにおいて最も速い実行可能ファイルを生成するインラインテンプレートが選択されます。

詳細は、libm_single(3F) および libm_double(3F) のマニュアルページを参照してください。


-loopinfo

並列化の結果を表示します。

-parallel、-autopar、または -explicitpar の各オプションによって並列化されたループとされていないループを表示します。(オプション -loopinfo は、いずれかの並列化オプションと一緒に指定しなければなりません。)

Fortran コンパイラの並列化機能には、Sun WorkShop HPC のライセンスが必要です。

-loopinfo により、標準エラーに次のメッセージリストが出力されます。

demo% f77 -o shalow -fast -parallel -loopinfo shalow.f
shalow.f:
 MAIN shalow:
	inital:
	calc1:
...etc
"shalow.f", 78 行目: 並列化されません、安全性が疑わしい呼び出し
"shalow.f", 172 行目: 並列化されます
"shalow.f", 173 行目: 並列化されません、利得なし
"shalow.f", 181 行目: 並列化されます、融合
"shalow.f", 182 行目: 並列化されません、利得なし
"shalow.f", 226 行目: 並列化されます、逐次版が生成されました
"shalow.f", 227 行目: 並列化されません、利得なし
...etc

f77 のコンパイルと error(1) ユーティリティを使用すると、このメッセージリストをソースファイルにマージして、各ループに並列化の有無を示すタグを付けたソースを生成することができます。

例: 標準エラーを error ユーティリティに渡します。

demo$ f95 -autopar -loopinfo any.f 2>&1 | error オプション

error により、入力ソースファイルが書き換えられる点に注意してください。error について詳細は、error(1) マニュアルページ、または『Fortran プログラミングガイド』のデバッグに関する説明を参照してください。


-Mdir

Fortran 95 モジュールの検索に使用するディレクトリに dir を追加します。

-M で指定したディレクトリは、現在のディレクトリの後に検索されます。モジュールのあるソースファイルをコンパイルすると、検出された MODULE ごとに .mod モジュールファイルが生成されます。Fortran 95 モジュールについての詳細は、「モジュールファイル」を参照してください。


-misalign

境界整列に失敗したデータを受け付けます。

-misalign を使用する場合は、プログラム内のすべてのルーチンをこのオプションでコンパイルしなければなりません。コンパイルとリンクを別々に行う場合に、
-misalign オプションでコンパイルするときは、リンクでもこのオプションを指定する必要があります。

-misalign は、-xmemalign=1i -aligncommon=1 と等価なマクロです。
「-xmemalign[=<a><b>]」 を参照してください。

-mp={%none|sun|cray|openmp}

並列化指令の形式を選択します。

同じコンパイラ単位内では、OpenMP 指令は Sun または Cray のいずれかの指令と併用することができます。しかし、Sun 指令と Cray 指令は、同じコンパイル単位内で同時に使用することはできません。たとえば、

-mp=sun, openmp および -mp=cray, openmp は、指定できますが、-mp=sun, creay は指定できません。

並列化を有効にするには、-explicitpar (または -parallel) を指定する必要があります。正確さを期すには、-stackvar も指定します。

-explicitpar -stackvar -mp=openmp

「-openmp」 も参照してください。

Fortran の並列化機能には、Sun WorkShop HPC のライセンスが必要です。

これらの f77/f95 指令については、このマニュアルの付録 E にまとめられています。

詳細は、『Fortran プログラミングガイド』の並列化に関する説明を参照してください。


-mt

マルチスレッド環境で使用しても安全なライブラリが必要になります。

スレッド環境 で使用しても安全なライブラリにリンクする必要があります。ユーザーが独自に低レベルのスレッド管理を行う場合 (たとえば、libthread ライブラリを呼び出す場合) は、-mt を使用してコンパイルすると、衝突を防ぐことができます。

libthread ライブラリを呼び出す C のマルチスレッド C コードとFortran を併用する場合は、-mt を使用します。Solarisの『マルチスレッドのプログラミング』も参照してください。
-autopar-explicitpar または -parallel のオプションを使用すると、自動的に -mt の機能が有効になります。

次の点に注意してください。


-native

使用中のマシンに最適なパフォーマンスにします。(廃止)

このオプションは、-xtarget=native と同じです。-fast オプションでは、-xtarget=native と設定します。


-noautopar

自動並列化を行いません。


-nodepend

コマンド行で指定した -depend を取り消します。


-noexplicitpar

明示的な並列化を行いません。


-nolib

システムライブラリとリンクしません。

システムライブラリや言語ライブラリと自動的にリンクを行いません。つまりデフォルトの -lx オプションを ld に渡さないということです。通常は、ユーザーがコマンド行で指定しなくても、システムライブラリは実行可能ファイルに自動的にリンクされます。

-nolib オプションを使用すると、必要なライブラリの中の 1 つを静的にリンクするといった作業が容易になります。ただし、システムライブラリや言語ライブラリは、最終的な実行に必要なので、ユーザーが手作業でそれらのライブラリをリンクしてください。

たとえば、libF77 と動的にリンクされているプログラムが、libF77 をもたないリモートシステム上でエラーになる例を考えてみます。-nolib オプションを使用することによって、ライブラリをプログラムに静的にリンクすることができます。

f77 では、libF77 を静的にリンクし、libc を動的にリンクします。

demo$ f77 -nolib any.f -Bstatic -lF77 -Bdynamic -lm -lc

f95 では、libm を静的にリンクし、libc を動的にリンクします。

demo% f95 -nolib any.f95 -Bstatic -lm -Bdynamic -lc

-lx オプションの指定の順番には意味があります。例に示す順序で指定してください。


-nolibmil

コマンド行の -libmil を取り消します。

このオプションは、次の例のように、-fast オプションの後に使用して、libm 数学ルーチンのインライン化を無効にします。

demo$ f77 -fast -nolibmil ...


-noqueue

ライセンスのキューイングを使用しません。

このオプションを使用している場合には、コンパイラを実行するためのソフトウェアライセンスがないと、ユーザー要求をキューイングせず、コンパイルを行わずに返します。make ファイルでの判定用に、ゼロでない環境ステータスが返されます。


-noreduction

コマンド行の -reduction を取り消します。


-norunpath

実行可能ファイル中に、実行時共有ライブラリのパスを設定しません。

コンパイラは通常、実行時リンカーが共有ライブラリを検索する位置を示すパスを実行可能ファイル中に設定します。このパスはインストールの形式によって異なります。
-norunpath オプションは、実行可能ファイルにパスが組み込まれないようにします。

ライブラリを標準でない場所にインストールし、別のサイトで実行可能ファイルを実行したときに、ローダーがそのパスを検索しないようにする場合に、このオプションを使用します。-Rpath と比較してみてください。

詳細は、『Fortran プログラミングガイド』の第 4 章「ライブラリ」を参照してください。


-O[n]

実行時間を最適化します。

n には 1、2、3、4、5 のいずれかを指定します。-On の間には空白文字を入れないでください。

-O[n] の指定がない場合、基本的な最適化のレベルは、局所の共通部分式の除去、および不要コードの分析だけに限られます。プログラムのパフォーマンスは、最適化なしの場合よりも、特定の最適化レベルを指定してコンパイルした方が、大幅に改善されることがあります。通常のプログラムには、-O オプション (レベル -O3) または -fast オプション (レベル -O5) を使用することをお勧めします。

-On の各レベルには、それよりも低いレベルでの最適化が含まれています。一般に、プログラムのコンパイル時の最適化レベルが高いと、実行時のパフォーマンスも向上します。ただし、最適化レベルを高くすると、コンパイル時間が長くなり、実行可能ファイルのサイズが大きくなります。

-g オプションは -On を抑制しませんが、-On-g のいくつかの機能を制限します。
dbx に関するマニュアルを参照してください。

-O3 -O4 のオプションでは、dbx から変数を表示できないという点で、デバッグ機能が制限されますが、dbx where コマンドを使用してシンボルを追跡することができます。

SPARC 上でオプティマイザがメモリーを使い切ると、レベルを下げて最適化をやり直します。以降のルーチンでは元のレベルに戻ってコンパイルを行います。

最適化の詳細については、『Fortran プログラミングガイド』の第 8 章「パフォーマンスプロファイリング」と第 9 章「パフォーマンスと最適化」を参照してください。


-O

-O3 と同義です。


-O1

文レベルの最小限の最適化を行います。

高いレベルの最適化では、コンパイル時間が長すぎる場合、またはスワップ領域が不足する場合に、-O1 を使用します。


-O2

基本ブロックレベルの最適化を行います。

通常、生成されるコードのサイズが最も小さくなります (「-xspace」を参照してください)。

-O3 を使用すると、コンパイル時間が長すぎる場合、スワップ領域が不足する場合、または生成される実行可能ファイルのサイズが大きすぎる場合には -O2 を使用します。これ以外の場合は、-O3 を使用してください。


-O3

関数レベルで、ループを展開し大域的に最適化を行います。

通常、-O2、-O1 を使用した場合よりも生成される実行可能ファイルのサイズが大きくなります。


-O4

同一ファイル内にあるルーチンを自動的にインライン化します。

インライン化が行われるため、生成される実行可能ファイルのサイズが通常大きくなります。

-g オプションを指定すると、-O4 による自動的なインライン化は行われません。
-xcrossfile を使用すると、-O4 によるインライン化の範囲が拡張されます。


-O5

最高レベルの最適化を行います。

プログラム中で、全体の計算時間のうちの最大部分を消費する部分に限って適用してください。-O5 の最適化アルゴリズムは、ソースプログラム中でこのレベルを適用する部分が大きすぎると、コンパイルに時間がかかり、パフォーマンスが低下します。

プロファイルのフィードバックと併せて使用すると、最適化がパフォーマンスの向上につながる可能性が高まります。「-xprofile=p」を参照してください。


-o name

書き込み先の実行可能ファイルの名前を指定します。

-o と nm の間には空白文字を 1 つ入れてください。このオプションを省略すると、デフォルトとして実行可能ファイルが a.out に書き込まれます。また -c とともに使用すると、-o はターゲットの .o オブジェクトファイルの名前を指定します。また -G とともに使用すると、ターゲットの .so ライブラリファイルの名前を指定します。


-oldldo

旧式のリスト形式の出力を選択します。

並びによる出力で各記録の始まりにある空白を省きます。現在のデフォルトは f77 リリース 1.4 以前のバージョンとは異なり、Fortran 規格に合わせるため、空白を付けるようになっています。また、OPEN FORM='PRINT' オプションにも注意してください。-oldldo をプログラムの一部だけに適用し、残りの部分にはこのオプションを指定せずにコンパイルすることもできます。


-onetrip

DO ループを 1 回だけ実行します。

DO ループが、少なくとも 1 回は実行されるようにコンパイルします。標準 Fortran の DO ループは、一部の古典的な Fortran の実装とは異なり、上限が下限より小さい場合には、1 回も実行されません。


-openmp

Fortran 95 の OpenMP 指令で明示的な並列化を有効にします。
l SPARC: f77/f95
このマクロは、次に示すオプションを組み合わせたマクロです。
-mp=openmp -explicitpar -stackvar -D_OPENMP
OpenMP 指令については、付録 E にまとめられています。
並列化されたプログラムをマルチスレッド環境で実行するには、実行前に PARALLEL (または OMP_NUM_THREADS) 環境変数を設定しておく必要があります。これは、プログラムが作成できる最大スレッド数を実行時システムに指示しています。デフォルトは 1 です。一般的に、ターゲットプラットフォーム上の PARALLEL 変数または OMP_NUM_THREADS 変数には、利用可能なプロセッサ数を設定します。

Fortran の並列化機能には、Sun WorkShop HPC のライセンスが必要です。


-p

prof プロファイラを使用するプロファイル用にコンパイルします。

プロファイル用のオブジェクトファイルを作成します。prof(1) を参照してください。コンパイルとリンクを分けて行う場合、-p オプションを付けてコンパイルしたときはリンクでも必ず -p オプションを付けてください。-pprof は主に旧式のシステムとの互換性を保つため使用します。gprof -pg の方を使用することをお勧めします。詳細は、『Fortran プログラミングガイド』のパフォーマンスプロファイルに関する説明を参照してください。


-pad[=p]

キャッシュを効率よく利用するためにパディングを挿入します。

配列や文字変数が、静的な局所変数でまだ初期化されていない場合、または共通のブロックにある場合、間にパディングを挿入します。またキャッシュを効率的に利用できるように、データにパディングを追加します。いずれの場合も、配列または文字変数を等価にすることはできません。

-pad[=p] で p を指定する場合は、以下のいずれか (または両方) を指定します。

local        隣接する局所変数の間にパディングを追加挿入します。
common       共通ブロック変数の間にパディングを追加挿入します。

-pad のデフォルトは以下のとおりです。

以下に示すコマンド行は同義です。

-pad[=p] オプションは、以下の条件を満たす項目に適用されます。

局所変数、または静的変数については、「-stackvar」の説明を参照してください。

-pad=common に関する制限事項


-parallel

-autopar、-explicitpar、-depend でループを並列化します。

並列化するループの選択は、コンパイラによって自動的に、またユーザーの明示的な指令によって行われます。最適化レベルが -O3 よりも低い場合は、自動的に -O3 に設定されます。

パフォーマンスを改善するには、並列化オプション (-autopar も含む) を使用する場合には、-stackvar オプションも指定してください。

91ページ-mp を使用して、Sun、Cray または f95 の OpenMP のいずれかの形式の並列化指令を選択します。

ユーザー独自のスレッド管理を行なっている場合は、-parallel は使用しないでください。91ページ-mp の説明を参照してください。

-parallel のような並列化オプションは、マルチプロセッサシステムで実行するための実行可能プログラムを生成することを前提としています。シングルプロセッサシステムで並列化を行うと、通常はパフォーマンスが低下します。

並列化されたプログラムをマルチスレッド環境で実行するには、実行前に PARALLEL (または OMP_NUM_THREADS) 環境変数を設定しておく必要があります。これは、プログラムが作成できる最大スレッド数を実行時システムに指示しています。デフォルトは 1 です。一般的に、ターゲットプラットフォーム上の PARALLEL 変数または OMP_NUM_THREADS 変数には、利用可能なプロセッサ数を設定します。
-parallel を使用して、同じステップ内でコンパイルおよびリンクを行うと、リンクには自動的にマルチスレッドライブラリおよびスレッド対応の Fortran 実行時ライブラリが含まれます。-parallel を使用して、コンパイルおよびリンクを別々のステップで行う場合は、リンクする際にも -parallel を指定しなければなりません。
Fortran の並列化機能には、Sun WorkShop HPCのライセンスが必要です。

詳細は、『Fortran プログラミングガイド』の第 10 章「並列化」を参照してください。

-pg

gprof プロファイラを使用するプロファイル用にコンパイルします。

-p オプションを使用した場合と同様の形式でプロファイル用にコードをコンパイルします。ただし詳細な統計情報を記録する実行時記録メカニズムも起動され、プログラムが正常に終了すると、gmon.out ファイルが生成されます。gprof を実行すると、実行プロファイルが生成されます。詳細は、gprof(1) のマニュアルページおよび『Fortran プログラミングガイド』を参照してください。

ライブラリオプションは、.f.o ファイルの後に指定してください (-pg ライブラリは静的です)。

コンパイルとリンクを分けて行う場合、-pg を付けてコンパイルしたときはリンクでも必ず -pg を付けてください。


-pic

共有ライブラリ用の位置独立コードをコンパイルします。

このオプションでコンパイルしたコードは動的共有ライブラリ用です。大域的なデータへの引用はそれぞれ、大域的なオフセットテーブル内でポインタの間接引用として生成されます。関数呼び出しは、プロシージャリンケージテーブルを通して pc 相対アドレッシングモードで生成されます。

-pic-xcode=pic13 と同義です。

-pic または -PIC には、次のようなパフォーマンス上の影響があります。

以上のパフォーマンス上の犠牲を比較した場合、-pic-PIC を使用すると、ライブラリコードが共有されるため、必要なシステムメモリーが大幅に少なくなります。-pic または -PIC でコンパイルした共有ライブラリ中のコードの各ページは、そのライブラリを使用する各プロセスどうしで共有することができます。共有ライブラリ中にあるコードのページに 1 つでも -pic でコンパイルされていないメモリー参照
(直接メモリー参照) があると、このページは共有できなくなるため、ライブラリを使用したプログラムを実行するたびに、そのページのコピーが作成されます。

.o ファイルが -pic または -PIC でコンパイルされているかどうかを調べるには、nm コマンドを使用する方法が最も簡単です。

% nm file.o | grep _GLOBAL_OFFSET_TABLE_ 
U _GLOBAL_OFFSET_TABLE_

位置独立コードを含む .o ファイルには、_GLOBAL_OFFSET_TABLE_ への未解決の外部参照があります。未解決の参照は U の文字で示されます。

-pic または -PIC のどちらかを使用するかは、nm を使用して、そのライブラリ内で使用または定義されている特定の大域変数または静的変数の数を調べて判断します。_GLOBAL_OFFSET_TABLE_ のサイズが 8,192 バイト未満であれば、-pic を使用できます。これ以外の場合は、-PIC を使用します。

64 ビットの Solaris 7 で -xarch=v9 または v9a を使用して共有動的ライブラリを構築する場合、-pic または -PIC オプション、あるいはこれらと同義の -xcode オプションを指定する必要があります。


-PIC

共有ライブラリ用の位置独立コードをコンパイルします。ただし 32 ビットアドレスを使用します。

-pic に似ていますが、大域的なオフセットテーブルが 32 ビットアドレスの範囲にわたる点が異なります。このオプションは -pic では大域的なデータオブジェクトが多すぎる場合に使用します。-pic-PIC オプションを同時に指定しないでください。

-PIC-xcode=pic32 と同義です。

64 ビットの Solaris 7 で -xarch=v9 または v9a を使用して共有動的ライブラリを構築する場合、-pic または -PIC オプション、あるいはこれらと同義の -xcode オプションを指定する必要があります。


-Qoption pr ls

オプションをコンパイル段階 pr に渡します。

サブオプションリスト ls をコンパイルフェーズ pr に渡します。Qoptionpr よび ls の間には必ず空白文字を入れます。Q は大文字でも小文字でもかまいません。ls には、コンパイル段階に適したサブオプションをコンマで区切って指定します。リスト中には空白文字を入れないでください。また、サブオプションの先頭にマイナス記号を付けることができます。

このオプションは主に、サポートスタッフによる内部デバッグ用として用意されています。LD_OPTIONS 環境変数を使用してリンカーにオプションを渡します。『Fortran プログラミングガイド』のリンクとライブラリに関する章を参照してください。


-qp

-p と同義です。


-R ls

動的ライブラリの検索パスを実行可能ファイルに設定します。

ls には、ライブラリ検索パスのディレクトリをコロンで区切って指定します。-Rls の間には空白文字があってもなくてもかまいません。

このオプションを複数指定した場合は、それぞれのディレクトリリストがコロンで区切られて連結されます。

このリストは実行時に実行時リンカー ld.so が使用します。実行時に、このリストにあるパスで動的なライブラリを検索し、未解決の参照を解決しようとします。

このオプションは、動的ライブラリへのパスを指定するオプションを意識せずに出荷用の実行可能ファイルを実行できるようにしたいときに使用します。

-R paths を使用して実行可能ファイルを構築すると、ディレクトリパスはデフォルトのパスに追加されます。デフォルトのパスは、常に最後に検索されます。

標準のインストール: /opt/SUNWspro/lib

詳細は、『Fortran プログラミングガイド』の第 4 章「ライブラリ」および Solaris の『リンカーとライブラリ』を参照してください。


-r8

REAL、INTEGER、DOUBLE、および COMPLEX のデフォルトのバイトサイズを 2 倍に設定します。

-r8 を使用すると、明示的なバイトサイズを指定せずに宣言されている、REAL、INTEGER、DOUBLE、および COMPLEX の変数のデフォルトのバイトサイズが拡張されます。

表 3-9   デフォルトのデータサイズ (バイト) と -r8
-r8 オプションなし -r8 オプションあり
データ型 デフォルト SPARC
INTEGER
4 8
REAL
4 8
DOUBLE
8 16


このオプションは、変数、パラメータ、定数、および関数に適用されます。

また、LOGICALINTEGER、COMPLEX は 2 つの REAL、DOUBLE COMPLEX は 2 つの DOUBLE として扱われます。

また、-dbl-r8 は、より汎用的な -xtypemap= オプションで表すことができます。

-dbl : -xtypemap=real:64,double:128,integer:64 と同義

-r8 : -xtypemap=real:64,double:128,integer:mixed と同義
これらのオプションによってデフォルトの DOUBLE PRECISION データが
QUAD PRECISION (128 ビット) になりますが、パフォーマンスは低下する可能性があります。この場合、-dbl よりも -xtypemap=real:64, double:64,
integer:64
を使用した方が適切です。

通常、1 つの副プログラムを -r8 付きでコンパイルする場合は、そのプログラムのすべての副プログラムも -r8 付きでコンパイルしてください。これは特に、各ファイル間で入出力形式が統一されていないプログラムでは重要になります。またこのオプションを使用すると、関数名にデータのサイズを明示的に指定しない限り、ライブラリ関数の呼び出しも含め、関数のデフォルトのデータサイズが変更される点に注意する必要があります。

このオプションが実行時のパフォーマンスに与える影響はかなり大きいものです。-r8 を付けてコンパイルすると、float = 15.0d0*float のような式が、定数 15 の宣言のために 4 倍精度で評価されることに注意してください。

-r8-i2 を両方指定した場合の結果は予測できません。


-r8const

単精度の定数を REAL * 8 の定数に変換します。
単精度の REAL 定数はすべて REAL * 8 に変換されます。倍精度 (Real *8) 定数は変更されません。このオプションは、定数にだけ適用されます。定数と変数の両方を変換する場合は、「xtypemap=spec」 を使用してください。

-reduction

ループ中にある縮約演算を識別します。

自動並列化中にループを解析し縮約演算を認識します。ループの縮約には、潜在的に丸めのエラーがあります。

縮約演算によって、配列内の要素が単一のスカラー値に変換されます。縮約演算の典型的な例として、あるベクトルの各要素をまとめる処理があります。このような演算は並列化の対象ではありませんが、-reduction を指定すると、コンパイラは縮約演算を認識し、特別な例として並列化します。コンパイラが認識する縮約演算については、『Fortran プログラミングガイド』の第 10 章「並列化」を参照してください。

このオプションは、自動並列化オプションの -autopar または -parallel を使用する場合のみ使用できます。それ以外の場合は無視されます。明示的に並列化されたループは縮約演算の解析の対象にはなりません。

例:-reduction オプションを付けた自動並列化処理

demo$ f77 -parallel -reduction any.f


-S

コンパイルし、アセンブリのソースコードだけを生成します。

l SPARC: f77/f95

指定したプログラムをコンパイルし、アセンブリ言語の出力結果を、接尾辞.s の付いた名前のファイルに出力します。.o ファイルは作成しません。


-s

実行可能ファイルからシンボルテーブルを取り除きます。

実行可能ファイルを縮小し、リバースエンジニアがしにくくします。また、このオプションを使用すると、dbx その他のツールによるデバッグができなくなり、-g オプショは無視されます。


-sb

Sun WorkShop ソースコードブラウザ用のテーブル情報を生成します。

詳細は『Sun WorkShop の概要』を参照してください。


注 - -sb は、コンパイラが fpp または cpp プリプロセッサを経由して自動的に渡すソースファイル (すなわち、拡張子が .F.F90 または .F95 のファイル) 上で使用することはできません。


-sbfast

ソースコードブラウザ用のテーブル情報のみを生成します。

Sun WorkShop ソースブラウザ用のテーブル情報を生成した後、処理を終了します。アセンブルやリンクは行わず、オブジェクトファイルも作成しません。


-silent

コンパイラメッセージの出力を抑制します。

コンパイラから送られる重要でないメッセージの表示をすべて抑制します。エラーメッセージと警告メッセージは表示されます。デフォルトでは、コンパイル中に検出されたファイルとエントリの名前が表示されます。


-stackvar

局所変数すべてを強制的にメモリースタックに割り当てます。

特に別の指定がない限り、ルーチン中にある局所変数と配列をメモリースタックに割り当てます。これにより、その変数や配列は静的ではなく自動変数になります。また、サブプログラムを呼び出してループをl並列化するときに、オプティマイザの自由度が高くなります。

並列化オプションを使用する場合は、-stackvar を使用するようにしてください。

次の条件に該当しない場合は、変数と配列は局所的となります。

REAL X/8.0/ または DATA X/8.0/

f77 のみ次の例のように、-stackvar を使用しているときに、Data 文の中の局所変数に対する実行可能な引用の後、この局所変数を初期化しようとすると、エラーになります。

demo% cat stak.f
        real x
        x =  1.
        t = 0.
        print*, t
        data x/3.0/
        print *,x+t
        end
demo% f77 -o stak -stackvar stak.f
stak.f:
 MAIN:
"stak.f", 5 行目: エラー: 自動変数を初期化しようとしています: x

-stackvar を使用してサイズが大きい配列をスタック上に割り当てると、スタックからオーバーフローし、セグメンテーションフォルトが発生する場合があります。このような場合はスタックサイズを大きくする必要があります。

デフォルトのスタックサイズはメインスタックが 8MB、各スレッドスタックが 1 BM (SPARC V9 プラットフォームの場合は 2MB) です。引数なしで limit コマンドを実行すると、現在のメインスタックのサイズが表示されます。-stackvar を使用した時にセグメンテーションフォルトが発生する場合は、メインスタックとスレッドスタックのサイズを大きくしてみてください。

例 : 現在のメインスタックのサイズを表示します。

demo% limit
cputime         制限なし
filesize        制限なし
datasize        523256 kbytes
stacksize       8192 kbytes      <---
coredumpsize    制限なし
descriptors     64 
memorysize      制限なし
demo%

例 : メインスタックのサイズを 64MB に設定します。

demo% limit stacksize 65536

例 : 各スレッドスタックのサイズを 8MB に設定します。

demo% setenv STACKSIZE 8192

並列化と -stackvar を併用する方法については、『Fortran プログラミングガイド』の第 10 章「並列化」を参照してください。limit コマンドの詳細については、csh(1) を参照してください。


-stop_status=yn

STOP 文により整数のステータス値を返します。

yn には yes または no を指定します。デフォルトは yes です。

-stop_status=yes を付けると、STOP 文に整数の定数を入れることができます。その値は、プログラムの終了時に環境に渡されます。

STOP 123

STOP 文には、0 から 255 の範囲にある値を指定してください。これよりも大きい値は切り捨てられ、実行時メッセージが出力されます。ただし、

STOP 'stop string'

は受け付けられます。この場合は環境にステータス値 0 が返されます。ただし、コンパイラの警告メッセージは出力されます。

このステータス環境変数は、C シェル (csh) では $status、また Bourne (sh) シェルと Korn (ksh) シェルでは $? です。


-temp=dir

一時ファイルのディレクトリを設定します。

コンパイラによって使用される一時ファイル用のディレクトリを dir に設定します。このオプションでは空白文字を入れないでください。このオプションを指定しない場合、一時ファイルは /tmp ディレクトリに置かれます。


-time

各コンパイル段階の経過時間を表示します。

各コンパイル段階で費された時間とリソースが表示されます。


-U

ソースファイル中の大文字と小文字を区別します。

大文字と小文字を区別します。デフォルトでは、文字列定数中を除き、大文字をすべて小文字として解釈します。このオプションを指定すると、Delta、DELTA、および delta はすべて別の記号として解釈されます。

Fortran を別の言語に移植したり、混用したりする場合は、-U オプションを指定する必要があります。詳細は、『Fortran プログラミングガイド』を参照してください。


-u

未宣言の変数に対してメッセージを出力します。

すべての変数に対するデフォルトの型を、Fortran の暗黙の型宣言を使用せずに「未宣言」にします。宣言していない変数に対して警告メッセージが出力されます。ただし、このオプションは、IMPLICIT 文や明示的に型を指定する文より優先されることはありません。


-unroll=n

DO ループの展開が可能な箇所で、使用可能にします。

n は正の整数です。次の選択が可能です。

一般に、ループを展開するとパフォーマンスが改善されますが、実行可能ファイルのサイズが大きくなります。ループの展開と各種のコンパイラの最適化については、『Fortran プログラミングガイド』の第 9 章「パフォーマンスと最適化」を参照してください。また、「UNROLL 指令」も参照してください。


-V

各コンパイラパスの名前とバージョンを表示します。

コンパイラの実行時に、各パスの名前とバージョンを表示します。

上記の情報は、問題が発生した場合にご購入先に問い合わせる時に役立ちます。


-v

各コンパイラパスの詳細情報を表示します。

-V と同様に、コンパイラの実行時にそれぞれのパス名を表示し、ドライバが使用したオプションと環境変数を詳細に表示します。


-vax=v

有効にする VMS Fortran の拡張機能を指定します。

v には、1 つまたは複数のサブオプションをコンマで区切って指定します。各サブオプションのキーワードの前に no% を置くと (例 : no%logical_name)、無効にする機能を指定することができます。

主なオプションは、-vax=align-vax=misalign です。

-vax=align は、境界整列されていないデータを許可せずに、すべてのサブオプションを選択します。これは、f77 リリース 3.0.1 以前の -xl オプションの動作です。

-vax=misalign は、サブオプションをすべて選択し、境界整列されていないデータを許可します。これは、f77 リリース 3.0.1 、4.0、4.2、5.0 および Sun WorkShop 6 -xl オプションの動作です。

以下の表に選択できるサブオプションを示します。

表 3-10   -vax のサブオプション
-vax=
効果
blank_zero
数値欄の空白をゼロとして扱う。
bslash
文字定数中でバックスラッシュ (\) を使用できる。
debug
VMS Fortran の `D' デバッグ文を使用できる。
logical_name
VMS Fortran 形式の論理ファイル名を使用できる。
oct_const
8 進数の定数を表す二重引用符を使用できる。
param
PARAMETER 文の非標準書式を使用できる。
rsize
バイト数ではなく文字数でアンフォーマットされた記録サイズを表す。
struct_align
VMS Fortran 内の構造体として境界整列する。


%all%none を使用して、これらのサブオプションを全部選択する、またはまったく選択しない、のいずれかを指定できます。

サブオプションは、リスト v が左から右に読み込まれるに従って蓄積されます。たとえば、1 つの機能を除いてすべてを使用可能にするには次のように指定します。

-vax=%all, no%rsize

「-misalign」を参照してください。


-vpara

並列化に関する詳細な警告メッセージを表示します。

例 : 並列化に関する詳細な警告メッセージを出力する -vpara オプション

demo% f77 -explicitpar -vpara any.f
any.f:
 MAIN any:
"any.f", 11 行目: 警告: ループには参照を無効にする並列化が含まれているかも
しれません


-w

警告メッセージを抑制します。

ほとんどの警告メッセージを出力しないようにします。ただし、前に指定したオプションのすべて、あるいは一部が無効になるようなオプションを指定している場合には、警告メッセージが表示されます。

例 : -w オプションを使用しても警告メッセージが出力される場合

demo% f77  -w -03 -fast -O4  any.f
f95: 警告: -O4 は、すでに設定されている最適化レベル -03 に優先します
demo%  

f95では、0 ~ 4 のレベルを指定できます。-w0 では抑制する警告メッセージが最も少なく、-w4 では抑制する警告メッセージが最も多くなります。-w-w0 と同義です。


-xa

-a と同義です。

l SPARC: f77/f95

-xarch=isa

命令セットアーキテクチャ (ISA) を指定します。

表 3-11   -xarch ISA キーワード
プラットフォーム 有効な -xarch キーワード
SPARC
generic, native, v7, v8a, v8, v8plus, v8plusa, 
v8plusb, v9, v9a, v9b



表 3-11 に、-xarch キーワード isa で受け付けられるアーキテクチャを示します。-xarch は単独でも使用できますが、-xtarget オプションが展開される一部であり、これを使用すると、特定の -xtarget オプションで設定した -xarch 値を無効にすることができます。たとえば、次のように指定すると、
% f95 -xtarget=ultra2 -xarch=v8plusb ...
-xtarget=ultra2 で設定した -xarch=v8 が無効になります。

このオプションは、指定の命令セットだけを許すことによって、コンパイラが指定の命令セットアーキテクチャの命令に対応するコードしか生成できないようにします。なお、ターゲット固有の命令が使用されるとは限りません。

このオプションを最適化で使用する場合は、適切なアーキテクチャを選択すると、そのアーキテクチャ上での実行パフォーマンスを向上させることができます。不適切な選択を行うと、意図したターゲットプラットフォームでは実行できないバイナリプログラムが生成されます。

SPARC プラットフォームでの -xarch の使用

表3-12 に、もっとも一般的な -xarch オプションについてまとめます。

表 3-12   SPARC プラットフォーム上でのもっとも一般的な -xarch オプションのまとめ
-xarch パフォーマンス
generic
・ 全プラットフォーム上で良好なパフォーマンスが得られます。
v8plusa
・ 32 ビットモードの UltraSPARC-II プロセッサ上で最適なパフォーマンスが得られます。 ・ 他のプラットフォーム上で実行できません。
v8plusb
・ 32 ビットモードの UltraSPARC-III プロセッサ上で最適なパフォーマンスが得られます。 ・ 他のプラットフォーム上で実行できません。
v9a
・ 64 ビットモードの UltraSPARC-II プロセッサ上で最適なパフォーマンスが得られます。 ・ 他のプラットフォーム上で実行できません。
v9b
・ 64 ビットモードの UltraSPARC-III プロセッサ上で最適なパフォーマンスが得られます。 ・ 他のプラットフォーム上で実行できません。


次の点にも注意してください。

オプションの選択によっては、生成された実行可能プログラムのパフォーマンスが、初期のアーキテクチャよりかなり劣ることがあります。また、4 倍精度 (REAL*16 および long double) 浮動小数点命令は、これらの命令セットアーキテクチャの多くで使用できますが、コンパイラは、それらの命令を生成したコードで使用しません。

表 3-13 に、SPARC プラットフォーム上で使用する各 -xarch キーワードについて詳細に説明します。

表 3-13   SPARC プラットフォーム上で使用できる各 -xarch 値 
-xarch 意味
generic
たいてのシステムで良好なパフォーマンスを得るためのコンパイル これは、デフォルトです。このオプションは、ほとんどのプロセッサ上で良好なパフォーマンスを得るために最善の命令セットを使用します、このとき、どのプロセッサ上でも大きなパフォーマンスの低下は見られません。「最善」の命令セットの定義は、新リリースごとに適宜調整できます。
native
当該システム上で良好なパフォーマンスを得るためのコンパイル これは、-fast オプションのデフォルトです。コンパイラは、コンパイルが実行されている現在のシステムプロセッサに適した設定を選択します。
v7
SPARC-V7 ISA 用のコンパイル コンパイラは、V7 ISA 上で良好なパフォーマンスが得られるようにコードを生成することができます。これは、V8 ISA で良好なパフォーマンスを得るために最善の命令セットを使用するのに相当します。なお、V7 ISA には mul および div という整数命令、および fsmuld 命令は含まれません。 例:SPARCstation1、SPARCstation2
v8a
SPARC-V8 ISA のV8a バージョン用のコンパイル 定義によれば、V8a は、V8 ISA を意味しますが、fsmuld 命令は含まれていません。このオプションを使用すると、コンパイラは、V8a ISA 上で良好なパフォーマンスが得られるようにコードを生成することができます。 例:microSPARC Iチップアーキテクチャに基づく任意のシステム
v8
SPARC-V8 ISA 用のコンパイル コンパイラは、V8 上で良好なパフォーマンスが得られるようにコードを生成することができます。 例:SPARCstation10
v8plus
SPARC-V9 ISA のV8plus バージョン用のコンパイル 定義によれば、V8plus は、V9 ISA を意味しますが、V8plus ISA アーキテクチャで定義されている 32 ビットサブセットだけに限定され、Visual Instrction Set (VIS) や、その他の実装固有の ISA 拡張機能は含まれません。 ・ このオプションを使用すると、コンパイラは、V8plus ISA 上で良好なパフォーマンスが得られるようにコードを生成することができます。 ・ 作成されるオブジェクトコードは、SPARC -V8 + ELF32 形式であり、Solaris UltraSPARC 環境でだけ動作します。すなわち、V7 または V8 プロセッサ上では動作しません。 例:UltraSPARC チップアーキテクチャに基づく任意のシステム
v8pplusa
SPARC-V9 ISA のV8plusa バージョン用のコンパイル 定義によれば、V8plusa は、V8plus アーキテクチャを意味しますが、Visual Instruction Set (VIS) バージョン 1.0 および UltraSPARC 拡張機能も含まれます。 ・ このオプションを使用すると、コンパイラは、UltraSPARC アーキテクチャ上で良好なパフォーマンスが得られるようにコードを生成できますが、V8plus の仕様で定義されている32 ビットのサブセットに限定されます。 ・ 作成されるオブジェクトコードは、SPARC -V8 + ELF32 形式であり、Solaris UltraSPARC 環境だけ動作します。すなわち、V7 または V8 プロセッサ上では動作しません。 例:UltraSPARC チップアーキテクチャに基づく任意のシステム
v8plusb
UltraSPARC-III 拡張機能付きの SPARC-V8plus ISA の V8plusb バージョン用のコンパイル コンパイラは、Visual Instruction Set (VIS) バージョン 2.0 および UltraSPARC-III 拡張機能付きの UltraSPARC アーキテクチャで良好なパフォーマンスが得られるようにコードを生成することができます。 ・ 作成されるオブジェクトコードは、SPARC -V8 + ELF32 形式であり、Solaris UltraSPARC-III 環境でしか動作しません。 ・ このオプションを使用してコンパイルすると、UltraSPARC-III アーキテクチャで良好なパフォーマンスが得られるように、最善の命令セットが使用されます。
v9
SPARC-V9 ISA 用のコンパイル コンパイラは、V9 SPARC アーキテクチャ上で良好なパフォーマンスが得られるようにコードを生成することができます。 ・ 作成される .o オブジェクトファイルは、ELF64 形式であり、同じ形式の他のSPARC -V9 オブジェクトファイルとだけリンクできます。 ・ 作成される実行可能プログラムは、64 ビットカーネルの64 ビット目がオンにされた Solaris オペレーティング環境を実行している UltraSPARCプロセッサ上でだけ実行できます。 -xarch=v9 が使用できるのは、64 ビット目がオンの Solaris環境でコンパイルする場合だけです。
v9a
UltraSPARC 拡張機能付きの SPARC-V9 ISA 用のコンパイル SPARC -V9 ISA に Visual Instruction Set (VIS) および UltraSPARC プロセッサに固有の拡張機能を追加し、V9 SPARC アーキテクチャ上で良好なパフォーマンスが得られるように、コンパイラがコードを生成できるようにします。 ・ 作成される .o オブジェクトファイルは、ELF64 形式であり、同じ形式の他のSPARC -V9 オブジェクトファイルとだけリンクできます。 ・ 作成される実行可能プログラムは、64 ビットカーネルの64 ビット目がオンにされた Solaris オペレーティング環境を実行している UltraSPARCプロセッサ上でだけ実行できます。 -xarch=v9a が使用できるのは、64 ビット目がオンの Solaris環境でコンパイルする場合だけです。
v9b
UltraSPARC-III 拡張機能付きの SPARC-V9 ISA 用のコンパイル SPARC -V9 ISA の V9a バージョンに UltraSPARC-III の拡張機能および VIS バージョン 2.0 を追加します。このオプションを指定してコンパイルすると、Solaris UltraSPARC-III 環境で良好なパフォーマンスが得られるように、最善の命令セットが使用されます。 ・ 作成される .o オブジェクトファイルは、SPARC-V9 ELF64 形式であり、同じ形式の他のSPARC -V9 オブジェクトファイルとだけリンクできます。 ・ 作成される実行可能プログラムは、64 ビットカーネルの64 ビット目がオンにされた Solaris オペレーティング環境を実行している UltraSPARC-III プロセッサ上でだけ実行できます。 -xarch=v9b が使用できるのは、64 ビット目がオンの Solaris オペレーティング環境でコンパイルする場合だけです。



-xautopar

-autopar と同義のオプションです。


-xcache=c

オプティマイザ用のキャッシュ特性を定義します。

n generic
n s1 / l1 / a1
n s1 / l1 / a1:s2 / l2 / a2

si、li、ai の定義は以下のとおりです。

si レベル i のデータキャッシュのサイズ (キロバイト単位)

li レベル i のデータキャッシュのラインサイズ (バイト単位)

ai レベル i のデータキャッシュの結合性

このオプションは、オプティマイザが使用できるキャッシュ特性を指定します。特定のキャッシュ特性が必ず使用されるわけではありません。

このオプションは、-xtarget オプションを展開した機能の一部です。-xtarget オプションで暗黙に指定された -xcache 値の指定を変更する場合に、このオプションを単独で使用します。

例 : -xcache=16/32/4:1024/32/1 により次の内容が指定されます。

表 3-14   -xcache の値
意味
generic
どの SPARC プロセッサでもパフォーマンスが著しく低下することがないように、キャッシュ特性を定義する。これはデフォルト値です。
s1 / l1 / a1
レベル 1 のキャッシュ特性を定義する。
s1 / l1 / a1:s2 / l2 / a2
レベル 1 と 2 のキャッシュ特性を定義する。
s1 / l1 / a1:s2 / l2 / a2:s3 / l3 / a3
レベル 1、2、3 のキャッシュ特性を定義する。


レベル 1 のキャッシュ : 16K バイト、32 バイト行サイズ、4 面結合

レベル 2 のキャッシュ : 1024K バイト、32 バイト行サイズ、ダイレクトマップ結合


-xcg89

-cg89 と同義です。


-xcg92

-cg92 と同義です。


-xchip=c

オプティマイザ用のターゲットプロセッサを指定します。

このオプションは、処理対象となるプロセッサを指定することによって、タイミング特性を指定します。

このオプションは、-xtarget オプションを展開した機能の一部です。-xtarget オプションで暗黙に指定された -xchip 値の指定を変更する場合に、このオプションを単独で使用します。

-xchip=c は以下のものに影響を与えます。

表 3-15 に、-xchip の有効な値をまとめてあります。

表 3-15   -xchip の値

最適化の対象
SPARC generic
ほとんどの SPARC プロセッサで良好なパフォーマンス

old
SuperSPARC` 以前のプロセッサ

super
SuperSPARC チップ

super2
SuperSPARC II チップ

micro
MicroSPARC` チップ

micro2
MicroSPARC II チップ

hyper
HyperSPARC` チップ

hyper2
HyperSPARC II チップ

powerup
Weitek` PowerUP` チップ

ultra
UltraSPARC` チップ

ultra2
UltraSPARC II` チップ

ultra2i
UltraSPARC IIi` チップ

ultra3
UltraSPARC IIITM チップ



-xcode=code

SPARC プラットフォームのコードアドレス空間を指定します。

code の値は以下のとおりです。

abs32
32 ビットの絶対アドレスを生成します。コード + データ + bss サイズを 2**32 バイトに制限します。次の 32 ビットのプラットフォームでのデフォルトです。 -xarch=generic, v7, v8, v8a, v8plus, v8plusa
abs44
44 ビットの絶対アドレスを生成します。コード + データ + bss サイズを 2**44 バイトに制限します。次の 64 ビットのプラットフォームだけで使用できます。 -xarch=v9, v9a
abs64
64 ビットの絶対アドレスを生成します。次の 64 ビットのプラットフォームだけで使用できます。 -xarch=v9, v9a
pic13
位置独立コード (スモールモデル) を生成します。-pic と同義です。32 ビットのプラットフォームでは 2**11 の、64 ビットのプラットフォームでは 2**10 の固有の外部シンボルを引用できます。
pic32
位置独立コード (ラージモデル) を生成します。-PIC と同義です。32 ビットのプラットフォームでは 2**30 の、64 ビットのプラットフォームでは 2**29 の固有の外部シンボルを引用できます。


デフォルト (-xcode=code を明示的に指定しない) は次のとおりです。

-xcode=abs32 SPARC V8 および V7 プラットフォーム
-xcode=abs64 SPARC および UltraSPARC V9 (-arch=v9 または v9a)

64 ビットの Solaris 7 環境で -xarch=v9 または v9a を使用して共有動的ライブラリを構築する場合、-xcode=pic13 または -xcode=pic32 (あるいは -pic-PIC) を指定する必要があります。


-xcommonchk[={no|yes}]

共通ブロック不一致の実行時検査を行います。

このオプションは、TASK COMMON や並列化を使用しているプログラムで共通ブロックに不一致がないかデバッグ検査を行います。(『Fortran プログラミングガイド』の 「並列化」 の章で TASK COMMON に関する説明を参照してください。)

デフォルトは -xcommonchk=no です。共通ブロック不一致の実行時検査を行うとパフォーマンスが低下するので、デフォルトではこのオプションは無効になっています。このオプションはプログラム開発とデバッグのときだけ使用し、生産品質プログラムには使用しないでください。

-xcommonchk=yes でコンパイルすると実行時検査が行われます。1 つのソースプログラム単位で正規の共通ブロックとして宣言されている共通ブロックが TASK COMMON 指令の中で指定されていると、プログラムは停止し、不一致を示すエラーメッセージが出力されます。


-xcrossfile[=n]

最適化とソースファイル間のインライン化を有効にします。

-xcrossfile を付けると、コンパイラは、コマンド行で指定されたすべてのファイルを分析します。

-xcrossfile オプションは、-O4 または -O5 を使用している場合のみ有効です。

ファイル間のインライン化を行うと、ソースファイルどうしの相互依存関係が生まれます。-xcrossfile を指定してコンパイルしたファイルセット中のいずれかのファイルを変更した場合は、新しいコードが正しくインライン化されるように、全ファイルを再コンパイルする必要があります。
インライン化については 「-inline=[%auto][[,][no%]f1,...[no%]fn]の説明を参照してください。

デフォルトでは、コマンド行に -xcrossfile を指定しないので、-xcrossfile=0 となり、ファイル間の最適化は行われません。ファイル間の最適化を有効にするには、-xcrossfile (-crossfile=1 と同義) と指定します。


-xdepend

-depend と同義です。


-xexplicitpar

-explicitpar と同義です。


-xF

Sun WorkShop アナライザにより、関数レベルの並べ替えを行います。

メモリー中の副プログラムの並べ替えは、アプリケーションのテキストページフォルト時間がアプリケーションの実行時間に占める割合が大きい場合にのみ役に立ちます。その他の場合は並べは、アプリケーションの全体的なパフォーマンスは改善されません。アナライザは、WorkShop に組み込まれています。アナライザについて詳細は、『Sun WorkShop の概要』および『プログラムのパフォーマンス解析』を参照してください。


-xhelp=h

オプションに関するヘルプ情報または README ファイルを表示します。

h には readmeflags のいずれかを指定します。

-xhelp=readme : 本リリースのコンパイラに関する README ファイルの内容を表示します。
-xhelp=flags : コンパイラフラグ (オプション) を表示します。

-xhelp=flags-help と同義です。


-xia[=v]

区間演算処理を有効化し、適切な浮動小数点環境を設定します。

v には、widestneed または strict のいずれかを指定します。指定しない場合のデフォルトとして widestneed が仮定されます。

Fortran 95 で拡張された区間演算の詳細は、『Fortran 95 区間演算プログラミングリファレンス』に記載されています。「-xinterval[=v]」 を参照してください。

-xia フラグは、次のように展開されるマクロです。

-xia または
-xia=widestneed
-xinterval=widestneed -ftrap=%none -fns=no -fsimple=0
-xia=strict
-xinterval=strict -ftrap=%none -fns=no -fsimple=0



-xildoff

インクリメンタルリンカーを使用しません。

標準のリンカー ld を使用するように指定します。

このオプションは、-g オプションを使用しない場合のデフォルトです。また、-G を使用する場合や、コマンド行でソースファイル名を指定する場合のデフォルトでもあります。

このデフォルトは、-xildon オプションによって解除されます。


-xildon

インクリメンタルリンカーを使用します。

インクリメンタルリンカーをオンにし、インクリメンタルモードで ild を使用するようにします。

このオプションは、-G でなく、-g を指定し、コマンド行にソースファイルを指定しない場合 (オブジェクトファイルやライブラリだけを指定する場合) のデフォルトです。

このデフォルトは、-xildoff オプションによって解除されます。

『C ユーザーズガイド』の ild のセクションを参照してください。


-xinline=list

-inline と同義です。


-xinterval[=v]

区間演算処理を有効化します。

v には、nowidestneed または strict のいずれかを指定します。指定しない場合のデフォルトは widestneed です。

no 区間演算処理を有効にしません。
widestneed モードが混在した式に含まれる非間隔変数および定数を、式の中でもっとも広い間隔のデータ型に変換します。
strict 型や長さが混在した間隔式の使用を禁止します。間隔型および長さの変換はすべて明示的に行わなければなりません。


Fortran 95 で拡張された区間演算の詳細は、『Fortran 95 区間演算プログラミングリファレンス』に記載されています。「-xia[=v]」 も参照してください。


-xl[d]

使用できる VMS Fortran 機能を追加します。

-xl : コンパイラがより多くの VMS Fortran 機能を使用できるようになります。これは、-vax=misalign をマクロ化したもので、以下のような言語機能を提供します。
「-vax=v」の説明を参照してください。

特別なオプションを指定しなくても、ほとんどの VMS 機能は f77 で自動的に有効になりますが、VMS 機能によっては -xl オプションを指定する必要があります。

通常は、ソース文が VMS、f77、または f95 のいずれにも解釈できるときに、VMS として解釈させたい場合に -xl オプションを指定します。-xl オプションを指定すると、コンパイラは VMS として解釈します。

以下に示す VMS の言語機能は、このオプションを指定して有効にします。

VMS の構造体がどのように実装されているかを、プログラムが認識できる場合に、-xl を使用して VMS の境界整列を行なってください。

-xld を使用してデバッグ用の注釈 (D または d が 1 カラム目にある) をコンパイルさせます。-xld オプションを省略すると、注釈として扱われます。
(-xld の間には空白文字を入れないでください。)

C ルーチンと構造体を共有するプログラムでは、-xl は使用しません。

VMS ライブラリについての詳細は、『Fortran ライブラリ・リファレンス』を参照してください。F77 コンパイラが自動認識する『FORTRAN 77 言語リファレンス』の、VMS 言語拡張機能に関する記述も参照してください。


-xlibmil

-libmil と同義です。


-xlibmopt

最適化された数学ルーチンを使用します。

このオプションによって通常は高速なコードが生成されます。結果が若干異なる場合がありますが、このときは普通は最終ビットが違っています。このライブラリオプションをコマンド行で指定する順序には意味はありません。


-xlic_lib=sunperf

サンのパフォーマンスライブラリとリンクします。

リンクするライブラリをコンマで区切って指定します。たとえば、次のとおりです。

f77 -o pgx -fast pgx.f -xlic_lib=sunperf

-l オプションと同様に、このオプションもコマンド行中でソースファイルおよびオブジェクトファイルの名前をすべて並べた後に指定します。

このオプションを使用して、サンのパフォーマンスライブラリとリンクさせなければなりません (『Sun Performance Library User's Guide』を参照してください)。


-xlicinfo

ライセンスサーバーの情報を表示します。

このオプションはライセンスのあるシステムに関するライセンス情報を返します。特に、ライセンスサーバーの名前とライセンスをチェックアウトしている個々のユーザーの ID を返します。

通常、このオプションではコンパイルが行われず、ライセンスは獲得されません。このオプションは、他のオプションと一緒には使用されません。しかし、衝突するオプションが使用されると、コマンド行の最後のオプションが選択され、警告メッセージが出力されます。


-Xlist[x]

大域的プログラム検査 (GPC) を行ないます。

このオプションは、潜在的なプログラミングバグを検出するときに使用します。もう 1 つ別のコンパイラパスを起動して、プログラムを大域的に検査することにより、副プログラム呼び出しの引数、共通ブロック、およびパラメータに整合性があるかどうかを調べます。このオプションにより、クロスリファレンステーブルを含む、行番号の付いたソースコードが表示されます。-Xlist オプションによって生成されるエラーメッセージは警告であるため、プログラムのコンパイルやリンクは停止しません。


注 - 大域的プログラム検査を行う -Xlist オプションでコンパイルを実行する前に、必ずソースコードのすべての構文エラーを修正してください。構文エラーを修正しないままソースコードで GPC を実行すると、予期せぬレポートが出力される可能性があります。

例 : 整合性をルーチン間で検査します。

demo% f95 -Xlist  fil.f 

上記の例では、出力ファイル fil.lst に次の情報が書き込まれます。

デフォルトでは、リストは name.lst というファイルに書き込まれます。name は、コマンド行で最初に指定したソースファイルの名前から拡張子を除いたものです。

以下に示すサブオプションによって、さまざまな動作を選択することができます。サブオプションは、-Xlist メインオプションの後に続けて指定します。

表 3-16   -Xlist サブオプション 
オプション 機能
-Xlist
エラー、リスト、クロスリファレンステーブルを表示する。
-Xlistc
コールグラフとエラーを表示する (f77のみ)。
-XlistE
エラーを表示する。
-Xlisterr[nnn]
エラーメッセージ nnn を抑制する。
-Xlistf
エラー、リスト、クロスリファレンスを表示する。ただしオブジェクトファイルは除く。
-Xlistflndir
すでに存在しているディレクトリ dir に .fln ファイルを置く
(f77のみ)。
-Xlisth
エラーが検出された場合は、コンパイルを終了する (f77のみ)。
-XlistI
ソースファイルとともに #include インクルードのファイルを分析する。
-XlistL
リストとエラーのみを表示表示する。
-Xlistln
ページ長を n 行に設定する。
-Xlisto name
レポートファイル名を name.lst に変更する。
-Xlists
クロスリファレンステーブルから参照されていない名前を抑制する (f77のみ)。
-Xlistvn
検査レベルを n (1、2、3、4) に設定表示する (デフォルトは 2)
(f77のみ)。
-Xlistw[nnn]
出力行の幅を nnn 桁に設定する (デフォルトは 79) (f77のみ)。
-Xlistwar[nnn]
警告メッセージ nnn を抑制する。
-XlistX
クロスリファレンステーブルとエラーを表示する。


-Xlistc、-Xlistf、-Xlistflndir、-Xlisth、-Xlists、-Xlistvn の各オプションは、f95 では使用できません。

詳細は、『Fortran プログラミングガイド』の第 5 章「プログラムの解析とデバッグ」を参照してください。


-xloopinfo

-loopinfo と同義です。


-xmaxopt[=n]

最適化プラグマを有効にして、最大最適化レベルを設定します。

n には 1 〜 5 の値を指定でき、それぞれ最適化レベル -01-05 に対応しています。指定しない場合、コンパイラは 5 を使用します。

このオプションは、C$PRAGMA SUN OPT=n 指令がソース入力に指定されている場合にその指令を有効にします。このオプションを指定しないと、コンパイラはこれらの指令行を注釈として解釈します。

このようなプラグマ指令が -xmaxopt フラグの最大レベルを超える最適化レベルで指定されている場合は、コンパイラは -xmaxopt レベルを使用します。


-xmemalign[=<a><b>]

メモリ境界整列の最大値の想定と、境界整列不正データへアクセスした時の振る舞いを指定します。

境界整列がコンパイル時に決定できるメモリアクセスの場合、コンパイラは、そのデータ境界整列に適したロード/ストア命令のシーケンスを生成します。

境界整列がコンパイル時に決定できないメモリアクセスの場合、コンパイラは、境界整列を想定して、必要なロード/ストア命令のシーケンスを生成します。

-xmemalign フラグを使用すると、このような曖昧な状況の場合にコンパイラが想定するデータの最大メモリ境界整列を指定することができます。アライメント不正データへのメモリアクセスが行われた場合の実行時エラーの振る舞いも指定します。

指定する値は、二種類です。すなわち、数値の境界整列値 <a> と、英数字の振る舞いフラグ <b> です。

境界整列値 <a> に指定できる値は、次のとおりです。

1 最大で 1 バイトの境界整列を想定します。
2 最大で 2 バイトの境界整列を想定します。
4 最大で 4 バイトの境界整列を想定します。
8 最大で 8 バイトの境界整列を想定します。
16 最大で 16 バイトの境界整列を想定します。

不正境界整列データにアクセスした場合のエラーの振る舞いを表す <b> に指定できる値は、次のとおりです。

i アクセスを解釈し、実行を継続します。
S SIGBUS という信号を発生させます。
F 4 バイト以下の境界整列にだけ SIGBUS 信号を発生させます。

-xmemalign を指定しない場合のデフォルト値は、次のようになります。

値をまったく指定しない場合の -xmemalign のデフォルト値は、すべてのプラットフォームで 1i です。

-dalign (67ページ参照) および -misalign (91ページ) のオプションは、それぞれ次のマクロです。

-dalign は、-xmemalign=8s -aligncommon=8 のマクロです。
-misalign は、-xmemalign=1i -aligncommon=1 のマクロです。

-xnolib

-nolib と同義です。


-xnolibmil

-nolibmil と同義です。


-xnolibmopt

高速数学ライブラリを使用しません。

-fast と併用すると、最適化済みの数学ライブラリとリンクされません。

f77 -fast -xnolibmopt ...

-xOn

-Onと同義です。


-xpad

-pad と同義です。


-xparallel

-parallel と同義です。


-xpg

-pg と同義です。


-xpp={fpp|cpp}

ソースファイルプリプロセッサを選択します。

デフォルトは -xpp=fpp です。

コンパイラは fpp(1) を使用して、.F または .f95 のソースファイルの前処理を行います。fpp(1) は Fortran 用のプリプロセッサです。旧バージョンでは、標準の C プリプロセッサ cpp が使用されていました。cpp を選択するには、-xpp=cpp を指定します。


-xprefetch[v]

UltraSPARC II など、先読み命令をサポートするプラットフォーム上で先読み命令を有効にします。

-xprefetch=yes と指定すると、コンパイラは適切であると判断したときに先読み命令を挿入します。その結果、UltraSPARC II プロセッサ (-xarch=v8plus, v9plusa, v9, v9a) のパフォーマンスが改善されます。

v を指定する場合は、次に示すサブオプションのうち、一つを指定するか、またはそのいくつかをコンマで区切ったリストを指定します。

xprefetch=
意味
auto
先読み命令の自動生成を有効にします。
no%auto
先読み命令の自動生成を無効にします。
explicit
明示的な先読み命令を有効にします。
no%explicit
明示的な先読み命令を無効にします。
auto, explicit
自動先読みモードおよび明示的先読みモードを有効にします。
yes
-xprefetch=autoexlicit と同じ
no
-xprefetch=no%autono%exlicit と同じ


指定しない場合、コンパイラは -xprefetch=no とみなします。-xprefetch だけを指定すると、デフォルトで -xprefetch=yes となります。

Fortran の PREFETCH 命令については、31 ページを参照してください。


-xprofile=p

実行時のプロファイル用データを収集、またはそのデータを使用して最適化を行います。

p には collect[:nm]、use[:nm]、tcov のいずれかを指定します。最適化レベルは、-O2 以上を指定してください。

collect[:nm]

後に -xprofile=use オプションを使用してプログラムをコンパイルする時に、オプティマイザが使用する実行頻度データを収集し保存します。コンパイラは、文の実行頻度を測定するコードを生成します。

nm には、解析対象の実行可能ファイル名を指定します。この名前の指定は省略することができます。nm が指定されていない場合は、a.out が実行可能ファイル名とみなされます。

-xprofile=collect: nm でコンパイルしたプログラムは、実行時に nm.profile サブディレクトリを作成します。データは、このサブディレクトリにある feedback ファイルに書き込まれます。プログラムを複数回実行すると、実行頻度データは feedback ファイルに蓄積されていくので、以前の実行頻度データは失われません。

use[:nm]

実行頻度データを使用します。

collect:nm の場合と同じように nm には、実行可能ファイル名を指定します。名前の指定は省略することもできます。

-xprofile=collect オプションを付けてコンパイルした時に生成され、feedback ファイルに保存された実行頻度データを使用して、プログラムが最適化されます。

ソースファイル、その他のコンパイルオプションは、feedback ファイルが生成されるプログラムをコンパイルした時に使用したのと同じものを指定してください。
-xprofile=collect:nm でコンパイルするときと、-xprofile=use:nm で最適化コンパイルをするときのプログラム名は同一のものを指定する必要があります。

tcov

新しい形式の tcov を使用して、基本的なカバレージ分析を行います。

コード計測方法は -a と似ていますが、各ソースファイルごとに .d ファイルは生成されません。最終的な実行可能ファイルに基づく名前のファイルが 1 つ生成されます。たとえば、実行可能ファイルが stuff である場合、stuff.profile/tcovd がデータファイルとなります。

tcov を実行する場合、-x オプションを付けて、新しい形式のデータを使用するよう指示する必要があります。-x オプションを指定しないと、tcov はデフォルトでは古い .d ファイルがあればそれをデータとして使用し、予測外の結果が生成されます。

-a とは異なり、TCOVDIR 環境変数はコンパイル時には影響しませんが、プログラムの実行時に使用され、プロファイルデータを置くサブディレクトリの位置が決まります。

詳細は、tcov(1) マニュアルページ、『Fortran プログラミングガイド』の第 8 章「パフォーマンスプロファイリング」および『プログラムのパフォーマンス解析』を参照してください。


注 - tcov で作成されたレポートは、-O4 または -inline によって副プログラムがインライン化されている場合、信頼性がない可能性があります。インライン化されているルーチンへの呼び出しの範囲は記録されません。


-xrecursive

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

RECURSIVE 属性で定義された副プログラムは、-xrecursive を使用してコンパイルされていない場合に限って、自分自身を再帰的に呼び出すことができます。

-xrecursive を使用してコンパイルすると、パフォーマンスが低下する可能性があります。-xrecursive は単独ではメモリスタック上に局所変数を割り当てないので、-xrecursive-stackvar の併用も検討してください。


-xreduction

-reduction と同義です。


-xregs=r

使用するレジスタを指定します。

r には、以下の 1 つまたは複数の項目をコンマで区切って指定します。

[no%]appl, [no%]float

no には % を付けてください。

例 : -xregs=appl, no%float

デフォルトは -xregs=appl, float です。

デフォルトは -xregs=appl, float です。


-xs

オブジェクトファイル (.o) がなくても dbx によってデバッグを実行できるようにします。

実行可能ファイルを別のディレクトリに移動した場合でも、オブジェクトファイル (.o) を無視してそのまま dbx を使用することができます。このオプションは、.o ファイルを残しておくことができない場合に使用します。

-xs を付けずに実行可能ファイルを移動する場合は、ソースファイルとオブジェクト
(.o) ファイルの両方を移動するか、あるいは dbx pathmap コマンドか use コマンドのいずれかでパスを設定する必要があります。


-xsafe=mem

メモリーに関するトラップが発生しないことを前提とします。

このオプションを使用する場合、コンパイラはメモリーに関するトラップが発生しないことを前提とします。V9 マシン上で投機的なロード命令を使用することができます。このオプションは、-05-xarch=v8plus がともに指定されている場合に限り、有効になります。


-xsb

-sb と同義です。


-xsbfast

-sbfast と同義です。


-xspace

コードサイズが増大するような最適化は行いません。

たとえば、コードのサイズが増大する場合は、ループの展開や並列化は行いません。


-xtarget=t

最適化の対象とするプラットフォームを指定します。

命令セットと最適化の対象とするプラットフォームを指定します。

t には native、generic、プラットフォーム名のいずれかを指定します。

-xtarget オプションは、実際のプラットフォームで発生する、-xarch、-xchip、
-xcache
をまとめて指定することができます。-xtarget の意味は = の後に指定した値を展開したものにあります。

対象となるハードウェア (コンピュータ) を正確にコンパイラに指定すると、パフォーマンスが向上するプログラムもあります。プログラムのパフォーマンスが重要な場合は、対象となるハードウェアを正確に指定してください。これは特に、新しい SPARC プロセッサ上でプログラムを実行する場合に当てはまります。ただし、ほとんどのプログラムおよびより旧式の SPARC プロセッサでは、パフォーマンス向上はごくわずかなので、generic を指定することで十分です。

native : ホストプラットフォームに対してパフォーマンスを最適化します。

コンパイラは、ホストプラットフォームに対して最適化されたコードを生成します。コンパイラが動作しているマシンで利用できるアーキテクチャ、チップ、キャッシュ特性が選択されます。

generic : 一般的なアーキテクチャ、チップ、キャッシュに対して最高のパフォーマンスが得られるようにします。

コンパイラは -xtarget=generic を次のように展開します。

-xarch=generic -xchip=generic -xcache=generic

これはデフォルトの値です。

プラットフォーム名 : 指定したプラットフォームに対して最高のパフォーマンスが得られるようにします。

コンパイラで使用できる現在の SPARC プラットフォームの名前 (-xtarget=ultra2i など) については、付録 D「-xtarget プラットフォームの展開」を参照してください。


-xtime

-time と同義です。


-xtypemap=spec

デフォルトのデータサイズを指定します。

デフォルトのデータ型に対するバイトサイズを指定することができます。-dbl-r8 よりもこのオプションを使用することをお勧めします。このオプションは、デフォルトサイズの変数および定数の両方に割り当てられます。

指定する文字列 spec には、次の全部またはいずれかをコンマで区切ったリストとして指定します。

real:size
double:size
integer:size

指定できるデータのサイズ size は、real に対しては 64double に対しては 128integer に対しては 3264mixed です。

-xtypemap=real:64,double:64,integer:64

このオプションは REAL XYZ (64 ビットの XYZ になる) のように明示的にバイトサイズを指定しないで宣言されたすべての変数に適用されます。また、単精度 REAL 定数はすべて、REAL*8 に変換されます。

各プラットフォームで使用できる組み合わせは次のとおりです。

integer:mixed のマッピングは、8 バイトデータを指定しますが、4 バイト演算だけを行います。これは、f77 でだけ使用できます。integer:64 の使用をお勧めします。

f77 フラグの -dbl および -r8 のオプションは、-xtypemap で次のように表すことができます。

SPARC にはさらに 2 つの可能性があります。

これらは、デフォルトの REALDOUBLE を 8 バイトにします。また、これらは DOUBLE PRECISION から QUAD PRECISION にできませんが、-dbl-r8 より優先して使用します。

INTEGERLOGICAL は等価として扱われます。また、COMPLEX は 2 つの REAL として扱われます。DOUBLE COMPLEXDOUBLE と同じように扱われます。


-xunroll=n

-unroll=n と同義です。


-xvector[={yes|no}]

SPARC ベクトルライブラリ関数を自動呼び出しします。

-xvector=yes と指定すると、コンパイラは、必要に応じて、DO ループ内の数学ライブラリ呼び出しを特定して、同等のベクトル化されたライブラリルーチンの単一呼び出しに変換できます。その結果、ループカウントの大きいループのパフォーマンスが改善されます。

デフォルトは -xvector=no です。-xvector だけを指定すると、デフォルトで
-xvector=yes になります。

このオプションは -depend もトリガーします。(コマンド行で -xvector に続けて
-nodepend を指定すると、依存解析を取り消すことができます。)

-xvector が指定されている場合は、libmveclibc ライブラリをロードステップに含めるように、コンパイラはリンカーに自動通知します。ただし、コンパイルとリンクを別々に行う場合は、必要なライブラリを正確に選択するためにリンクステップで
-xvector を指定する必要があります。


-xvpara

-vpara と同義です。


-Zlp

ループツールを使用するループパフォーマンスのプロファイル用にコンパイルします。

このオプションはループのプロファイラであるループツール用にオブジェクトファイルを準備します。次に looptool(1) ユーティリティを実行すると、プログラムに関するループ統計情報が生成されます。

コンパイルとリンクを分けて行う場合、-Zlp を付けてコンパイルしたときはリンクにも必ず -Zlp を付けてください。

1 つの副プログラムに -Zlp を付けてコンパイルしたとしても、そのプログラムのすべての副プログラムに -Zlp を付けてコンパイルする必要はありません。ただし、ループ情報が得られるのは -Zlp を付けてコンパイルしたファイルからだけです。そのプログラムに含まれている他のファイルの情報は得られません。

詳細は、『プログラムのパフォーマンス解析』を参照してください。


-ztext

再配置を伴わない純粋なライブラリを生成します。

再配置が残っている場合はライブラリを作成しません。

-ztext の主な目的は、生成されたライブラリが純粋なテキストであるかどうか、すべての命令が位置独立コードであるかどうかを確認することです。したがって、通常は -G および -pic と共に使用します。

-ztext を指定すると、テキストセグメントに不完全な再配置がある場合、ld はライブラリを構築しません。データセグメントに不完全な再配置がある場合は、ld はライブラリを構築しますが、そのデータセグメントは書き込み可能となります。

-ztext を指定しない場合、ld は再配置の状況とは無関係にライブラリを構築します。

このオプションは主に、オブジェクトファイルが -pic を付けて作成されたかどうかが不明な場合に、ソースファイルとオブジェクトファイルの両方からライブラリを作成するときに使用します。

例 : ソースファイルとオブジェクトファイルの両方からライブラリを作成します。

demo% f95 -G -pic -ztext -o MyLib -hMyLib a.f b.f x.o y.o

また、コードが位置独立コードであるかどうかを確認するためにも、このオプションを使用します。-pic を付けずにコンパイルすると、純粋なテキストであるかどうかを確認できます。

例 : -pic を付けない場合は、純粋なテキストであるかどうかを確認します。

demo% f95 -G -ztext -o MyLib -hMyLib a.f b.f x.o y.o

-ztext を付けてコンパイルしても ld によってライブラリが構築されなかった場合は、-ztext を付けずにコンパイルし直すと ld によってライブラリが構築されます。-ztext を指定した場合に構築が失敗するということは、ライブラリ中に共有不可能な成分があることを示します。ただし、この場合でもその他の成分は共有できるはずですが、パフォーマンスが最高でない可能性もあります。


サン・マイクロシステムズ株式会社
Copyright information. All rights reserved.
ホーム   |   目次   |   前ページへ   |   次ページへ   |   索引