F95(1)

名前
f95 - Fortran 95 コンパイラ

形式
f95 と f90 のどちらのコマンドでも起動できます (f95 と f90 は同じ意味です)。

f95 [ -a ] [ -aligncommon[=a] ] [ -ansi ] [ -arg=local ]
[ -autopar ] [ -Bx ] [ -C ] [ -c ] [ -cg89 ] [ -cg92 ]
[ -copyargs ] [ -Dnm[=def] ] [ -dalign ]
[ -dbl_align_all[={yes|no}] ] [ -depend[={yes|no}] ]
[ -dryrun ] [ -d{y|n} ] [ -e ] [ -erroff[=taglist] ]
[ -errtags[={yes|no}] ] [ -errwarn[=taglist] ]
[ -explicitpar ] [ -ext_names=e ] [ -F ] [ -f ]
[ -f77[=list] ] [ -fast ] [ -fixed ] [ -flags ]
[ -fnonstd ] [ -fns[={yes|no}] ] [ -fpover[={yes|no}] ]
[ -fpp ] [ -fprecision=p ] [ -free ]
[ -fround=r ] [ -fsimple[=n] ] [ -fstore ] [ -ftrap=t ]
[ -G ] [ -g ] [ -hnm ] [ -help ] [ -Ipath ]
[ -inline=rl ] [ -iorounding[=r] ] [ -KPIC ] [ -Kpic ]
[ -Lpath ] [ -lx ] [ -libmil ] [ -loopinfo ]
[ -Mpath ] [ -moddir=path ] [ -mp=x ] [ -mt ]
[ -native ] [ -noautopar ] [ -nodepend ]
[ -noexplicitpar ] [ -nofstore ] [ -nolib ]
[ -nolibmil ] [ -noreduction ] [ -norunpath ]
[ -O[n] ] [ -o nm ] [ -onetrip ]
[ -openmp[=a] ] [ -PIC ] [ -p ]
[ -pad[=a] ] [ -parallel] [ -pg ] [ -pic ]
[ -Qoption pr ls ] [ -qp ] [ -R list ] [ -r8const ]
[ -reduction ] [ -S ] [ -s ] [ -sb ] [ -sbfast ]
[ -silent ] [ -stackvar ] [ -stop_status={yes|no} ]
[ -temp=path ] [ -time ] [ -U ] [ -Uname ] [ -u ]
[ -unroll=n ] [ -use=list ] [ -V ] [ -v ] [ -vax=v ]
[ -vpara ] [ -w[n] ] [ -Xlist[z] ] [ -x386 ] [ -x486 ]
[ -xa ] [ -xalias[=a[,a]...] ]
[ -xarch=a ] [ -xassume_control[=a[,a]...] ]
[ -xautopar ] [ -xcache=c ] [ -xcg89 ] [ -xcg92 ]
[ -xcheck=v ] [ -xchip=c ] [ -xcode=v ]
[ -xcommonchk[={no|yes}] ] [ -xcrossfile=n ]
[ -xdebugformat={stabs|dwarf} ] [ -xdepend ]
[ -xdryrun ] [ -xexplicitpar ] [ -xF ]
[ -xhasc[={yes|no}] ] [ -xhelp=h ] [ -xia[=i] ]
[ -xildoff ] [ -xildon ] [ -xinline=rl ]
[ -xinterval=i ] [ -xipo[=n] ] [ -xipo_archive[=a] ]
[ -xjobs=n ] [ -xknown_lib=lib ]
[ -xlang=f77 ] [ -xlibmil ] [ -xlibmopt ] [ -xlicinfo ]
[ -xlic_lib=sunperf ] [ -xlinkopt[=level] ]
[ -xloopinfo ] [ -xmaxopt[=n] ]
[ -xmemalign[=ab] ] [ -xnolib ]
[ -xnolibmil ] [ -xnolibmopt ] [ -xO[n] ]
[ -xopenmp[=a] ] [ -xpad[=a] ] [ -xpagesize=n ]
[ -xpagesize_heap=n ] [ -xpagesize_stack=n ]
[ -xparallel ] [ -xpg ] [ -xpp=p ] [ -xprefetch=a[,a]]
[ -xprefetch_auto_type=[no%]indirect_array_access ]
[ -xprefetch_level=n ]
[ -xprofile=p ] [ -xprofile_ircache=path ]
[ -xrecursive ] [ -xreduction ] [ -xregs=r ] [ -xs ]
[ -xsafe=mem ] [ -xsb ] [ -xsbfast ]
[ -xspace ] [ -xtarget=t ] [ -xtime ]
[ -xtypemap=spec ] [ -xunroll=n ]
[ -xvector[={yes|no}] ] [ -ztext ]
source file(s) ... [ -lx ]

機能説明

Sun Studio 9 Fortran 95 コンパイラ、バージョン 8.0 。

f95 コンパイラは、標準に準拠した Fortran 95 ソースファイルプログラムを 受け入れます。また、区画演算の拡張機能と OpenMP[tm] Fortran 95 API バージョン 2.0 も受け入れます。さらに、-f77 互換性オプションの下の 多くの FORTRAN 77 (f77) 言語拡張機能と VAX VMS Fortran 拡張機能 (-vax) も受け入れます。

Fortran 95 コンパイラ f95 の バージョン 8.0 は、 Sun Studio 9 のコンポーネントの 1 つとして発表された バージョンです。 これは、Solaris[tm] オペレーティングシステム (Solaris OS) 8、9、10 (SPARC(R) および x86 プラットフォーム) で 利用することができます。 プラットフォーム、環境、新しい機能、制限事項、問題、回避策、およびソフトウェア修正の最新情報については、オンラインの Readme ファイルを参照してください。このファイルを参照するには、以下のコマンドを実行します。
f95 -xhelp=readme

マニュアルページは、クイックリファレンスです。f95 コンパイラとそのオプションの使用方法についての詳細は、 『Fortran ユーザーズガイド』 と 『Fortran プログラミングガイド』 を参照してください。

f95 コンパイラの使用方法についての詳細は、『Fortran ユーザーズガイド』を参照してください。このユーザーズガイドには、f95 が受け入れるすべてのオプション、プラグマ指令、および環境変数についての詳細と、標準 Fortran 95 コンパイラとこの Fortran 95 コンパイラとの相違点の説明があります。

プログラムのパフォーマンスと最適化、並列化、および他の Fortran プラットフォームからの移植については、『Fortran プログラミングガイド』を参照してください。

関連する Sun Studio マニュアルの一覧は、本マニュアルページの最後にあります。

Readme ファイル、ユーザーズガイド、リファレンスマニュアルなど、すべてのインストール済みの Sun Studio のマニュアルは、このソフトウェアがインストールされているホストシステムにある以下のファイルを HTML ブラウザで指定して参照できます。
file:/opt/SUNWspro/docs/index.html
インストールされているマニュアルの参照方法については、ご使用のシステムのシステム管理者にお問い合わせください。

これ以外の技術的な参考資料や知識ベースは、コンパイラコレクション開発者リソースの ポータル ( http://developers.sun.com/prodtech/cc ) にあります。

変更
このリリースの Sun Studio 9 Fortran 95 コンパイラには、以下の変更点があります。

以下のオプションフラグが新規に追加されました。
-xipo_archive
-xprefetch_auto_type
-xprofile_pathmap

変更されたオプションフラグは次のとおりです。
-xarch and -xcode
x86 プラットフォームの Pentium III および Pentium 4、と SSE および SSE2 命令セットの値が変更され、SPARC プラットフォームの デフォルトが変更されています。

-xmemalign のデフォルトが 変更されています。

-xildon が -g でのデフォルトでなくなりました。 すなわち、インクリメンタルローダの ild は、-g でオブジェクトファイルのみコンパイルするときでも、 自動的に呼び出されなくなりました。 ild を呼び出すには、明示的に -xildon を付けてコンパイルします。

以下のプラグマ指令が新規に追加されました。

このリリースのコンパイラの詳細については、以下のコマンドを実行して、コンパイラの Readme ファイルを参照してください。 f95 -xhelp=readme.

詳細とこれまでの経緯については、『Fortran ユーザーズガイド』を参照してください。

x86 に関する特記事項
Solaris x86 SSE/SSE2 Pentium 4 互換プラットフォームで 実行するために -xarch={sse|sse2} を付けて コンパイルしたプログラムは、SSE/SSE2 対応のプラットフォーム でのみ実行する必要があります。SSE/SSE2 に対応していない プラットフォーム上でそのようなプログラムを実行すると、 セグメント例外が発生したり、明示的な警告メッセージなしに 不正な結果が発生することがあります。SSE/SSE2 でコンパイル されたバイナリが SSE/SSE2 に対応していないプラットフォームで 実行されることのないようにするための OS およびコンパイラに 対するパッチが、後日提供されるかもしれません

Pentium 4 互換のプラットフォームの場合、Solaris 9 update 6 以降の OS リリースは SSE/SSE2 に対応しています。 これより前のバージョンの Solaris OS は SSE/SSE2 に 対応していません。

このことは、.il インラインアセンブリ言語関数を使用 しているプログラムや、SSE/SSE2 命令を利用している
  __asm() アセンブラコードにも当てはまります。

コンパイルとリンクを別々に行う場合は、必ずコンパイラを 使ってリンクし、-xarch={sse|sse2} で 適切な起動ルーチンがリンクされるようにしてください。

x86 の浮動小数点レジスタのサイズが 80 バイトであるため、x86 上と SPARC 上での 算術演算結果が異なることがあります。こうした違いが出ないようにするには、 -fstore オプションを使用してください。あるいは、ハードウェアが SSE2 をサポートしている 場合は、 -xarch=sse2 を付けてコンパイルしてください。

オプション
Solaris SPARC プラットフォームでのみ有効なオプションには、 (SPARC) と注記されています。

Solaris x86 プラットフォームでのみ有効なオプションには、 (x86) と注記されています。

非推奨オプションは、 (旧式)
 と注記されていて、以降、使わないことを推奨します。 それらのオプションは、以前のリリースとの互換性を維持する 目的にのみ提供されています。指示されている代わりの オプションを使ってください。

リンカーオプションについては、 ld(1) を参照してください。

f95 でコンパイルを行った場合、メッセージは表示されません。エラーと警告メッセージを除いて、コンパイル中に「進捗」メッセージを出力しません。

一般的に、コンパイラオプションは左から右に処理されます。そのため、特定のマクロオプションを優先させることもできます。この規則はリンカーまたはプリプロセッサのオプションには適用されません。

コマンド行オプションの項目では、角括弧 ( [] ) で示された 項目は省略可能です。 {yes | no | maybe } のように中括弧で 囲まれた縦線区切りのリテラル項目のリストは、 そのから 1 つを選択します。 リストの最初の項目は、値なしでフラグが現れた場合の デフォルト値を示します。

たとえば、 -someoption[={no|yes}] は implies -someoption
 が -someoption=no
 と同じであることを意味します。

オプション一覧

-a  (旧式) tcov 用に基本ブロックごとのプロファイルを生成します。

    各基本ブロックが実行される回数をカウントします。 tcov(1) をソースファイルに対して実行し、そのプログラムの統計を生成します。

    これは、 tcov 用の基本ブロックの古い形式のプロファイルです。代わりに -xprofile=tcov を使用してください。

-aligncommon[{=1|2|4|8|16}]
    共通ブロックおよび標準数値シーケンス型内のデータの整列を指定します。

    指定された値は、共通ブロックおよび標準数値シーケンス型内の データ要素の整列の最大値 (単位はバイト) を示します。 たとえば、 -aligncommon=4 は、共通ブロックのデータ要素を、4 バイトまたはそれ以上の境界の自然配列に整列します。 このオプションは、指定した大きさより小さい自然配列データには影響しません。

    -aligncommon を指定しないと、 共通ブロックのデータ および標準数値シーケンスのデータ は、デフォルトの最大 4 バイト境界に整列されます。

    値なしで -aligncommon が指定された場合のデフォルトは、プラットフォームに関係なく 1 です。つまり、要素間のパディングなしで、すべてのデータがバイト境界で整列します。

    -aligncommon=16 を 64 ビットが使用できないプラットフォーム上 (v9、v9a、または v9b 以外) で指定した場合は -aligncommon=8 となります。

    -xmemalign も参照してください。

-ansi
    標準外の拡張機能を識別します。

-arg=local
    ENTRY 文に対する実際の引数を保持します。

    このオプションを指定し、代替エントリポイントを使って副プログラムをコンパイルすると、 f95 は copy restore を使用してダミーの引数と実際の引数との対応を保持します。

    このオプションは従来の Fortran 77 プログラムとの互換性をもっています。 このオプションに依存するコードは標準外です。

-autopar
    (SPARC) 自動ループ並列化を有効にします。

    適切なループを見つけ、並列化します。依存関係解析を行います (データ依存関係についてループを解析します)。 ループの再構成を行います。最適化レベルが -O3 よりも低い場合、最適化レベルを -O3 に設定します。

    並列化オプション を使用するときには、 -stackvar オプションも指定します。 -stackvar オプションは、 -autopar が使用されたときに、パフォーマンスの向上をもたらすことがあります。 これは、オプティマイザが並列化対象をさらに検出できる ことがあるためです。 メインスレッドスタックおよびスレーブスレッドスタックのサイズを設定する方法については、 -stackvar オプションの説明を参照してください。

    独自のスレッド管理を行う場合は、 -autopar は使用しないでください。 -mt の注を参照してください。

    また、 -autopar はシングルプロセッサシステムには適しておらず、 パフォーマンスも低下します

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

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

    -autopar を指定し -explicitpar を指定しない場合、明示的な並列化指令は無視されます。

    -autopar を使用し、コンパイルとリンクを同じ段階で行う場合、リンクは マイクロタスクライブラリとスレッド安全 FORTRAN 実行時ライブラリを 自動的にインクルードします。 -autopar を使用し、コンパイルとリンクを別の段階で行う場合、 f95 -autopar でリンクしなければなりません。

-B{dynamic|static}
    ライブラリのリンク方式を指定します。

    このオプションの後にコマンド行で指定するライブラリのリンク方法として、 動的リンクを優先するか、必ず静的リンクを実行するかを指定します。 これはリンカーのオプションです。

    デフォルトは -Bdynamic です。

    -Bdynamic: 動的リンクを優先する (共有ライブラリのリンク)
    -Bstatic : 静的リンクを実行する場合がある (非共有ライブラリのリンク)

    static を指定した場合に動的ライブラリしか見つからないと、 ライブラリのリンクは実行されず、警告メッセージが出力されます。

    しかし、 dynamic を指定した場合に静的ライブラリしか見つからない場合は、 そのライブラリがリンクされ、警告メッセージは出力されません。

    -Bdynamic と -Bstatic は 1 つのコマンド行の中で何回でも指定できます。したがって、ライブラリの 種類に応じて、リンク方式を動的と静的の間で切り替えることができます。

    これらはリンカーオプションであるため、 -Bstatic または -Bdynamic を付けて、 コンパイルとリンクを別々に 実行する場合、コンパイルコマンド上に -Bx オプションを 指定したら、リンク時にも -Bx オプションを 指定する必要があります。

    64 ビット環境では、システムライブラリの多くは共有動的ライブラリとしてのみ有効で す。これらには、libm.so や libc.so (libm.a と libc.a は提供されていません) が含まれ ます。その結果、 -Bstatic および -dn は 64 ビット Solaris[tm] オペレーティングシステム (Solaris OS) で リンクエラーを起こす可能性があります。このような場合 は、アプリケーションが動的ライブラリとリンクしなければなりません。

-C  範囲外の添字と構造について配列参照を検査します。

    宣言されたサイズを超える添字を配列に付けると、予想外の結果 (セグメント例外も含む) が生じることがあります。 -C オプションは、ソースコードと実行時に考えられる配列添字違反を検査します。

    -C オプションを指定すると、実行時の配列添字違反がエラーとして扱われます。コンパイラは、ソースコード内の配列添字範囲違反も警告として示します。

    このオプションは、実行可能ファイルのサイズを増やし、実行 パフォーマンスを落とします。デバッグのときだけ使用するようにしてください。

-c  コンパイルだけを行います。実行可能ファイルは作成しません。

    各ソースファイルごとにコンパイルし、 .o ファイルを生成しますが、 ローダーによるリンクを抑制します。 -o オプションを使用すれば、単一のオブジェクトファイルに 名前をつけることができます。

-cg89
    (旧式、SPARC) 汎用の SPARC アーキテクチャ用のコードを生成します。

    このオプションは、
    -xarch=v7 -xchip=old -xcache=64/32/1
    をマクロ化したもので、 -xtarget=ss2 と同義です。 このオプションは使わないでください。最新の Solaris オペレーティングシステムは、SPARC V7 アーキテクチャを サポートしません。このオプションを付けてコンパイルしたプログラムは、 最新の SPARC プラットフォームで実行速度が低下します。

-cg92
    (旧式, SPARC) SPARC V8 アーキテクチャで動作するコードを生成します。

    このオプションは、
    -xarch=v8 -xchip=super -xcache=16/32/4:1024/32/1
    をマクロ化したもので、 -xtarget=ss1000 と同義です。

-copyargs
    定数引数への割り当てを許可します。

    副プログラムが、定数の仮引数を変更できるようにします。このオプションにより、レガシーコードは、定数を変更するのに、実行時エラーなしで コンパイルおよび実行できるようになります。

    -copyargs を指定しないで、副プログラムに定数引数を渡してから、サブルーチン 内でその定数を変更しようとした場合、異常終了します。

    -copyargs を指定して、副プログラムに定数引数を渡してから、サブルーチン 内でその定数を変更する場合、必ずしもランタイムエラーになりません。

    -copyargs フラグを使用するコンパイルを必要とするプログラムは、Fortran 規格準拠のプログラムではありません。

-Dname[=def]
    ソースコードプリプロセッサのシンボル name を定義します。

    これは、ソース内の define 指令と同義です。定義 def が指定されない場合、 name は “1” に定義されます。このオプションは拡張子 .F .F90 .F95 .F03 が付いたファイルのみに適用されます。

    次のシンボルは、それぞれ使用しているシステムに合うように事前定義されています。 下線が先頭に 2 本ついていることに注意してください。

    __sparc, __sparcv9, __unix, __sun, __i386, __SVR4, __SunOS_5_6, __SunOS_5_7, __SunOS_5_8, __SunOS_5_9, __SunOS_5_10

    Fortran 構文は、上記のシンボルの実際値をサポートしない場合もあるかもしれません。このシンボルは、次のような fpp または cpp プリプロセッサ条件文でのみ使用される必要があります。
    #ifdef __sparc

    上記に対応する古い値として、以前のリリースでも次のシンボルが 事前定義されています。
    sparc, unix, sun,

    これらの古い事前定義値は、将来のリリースでは削除される可能性があります。

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

-dalign
    COMMON ブロックデータと 標準 数値シーケンス型を整列し、高速な多重ワードのロード/ストア命令を生成します。

    このフラグは、COMMON ブロック (および EQUIVALENCE クラス) のデータレイアウトを 変更し、コンパイラが更に高速な多重ワードのロード/ストア命令を生成する のを可能にします。

    -dalign はマクロであり、 SPARC プラットフォームの場合は -xmemalign=8s -aligncommon=16 x86 プラットフォームの場合は -aligncommon=8 と同じです。

    データレイアウトは -f フラグを使用した時と同じ結果となります。つまり、COMMON ブロック内や EQUIVALENCE クラスの 倍精度および 4 倍精度のデータは「自然な」整列でメモリー内に配置され ています。 この整列は、8 バイト境界 (あるいは、 -xarch=v9、 v9a、 または v9b で 64 ビット SPARC プラットフォーム向けにコンパイルする場合、4 倍精度データは 16 バイト境界) です。 COMMON ブロックの整列のデフォルトは、4 バイト境界です。.sp また、 -dalign と -xtypemap=real:64,double:64,integer:64 を一緒に使用すると、 SPARC では 64 ビット整数変数は 8 バイトに境界整列されます。

    -dalign を使用すると、データの境界整列が FORTRAN の標準に合わなくなることがあります。 これは、EQUIVALENCE や COMMON で使用される変数に問題となることがあります。 すなわち、速度と引き換えに移植性を失うことになります。

    副プログラムおよびファイルを -dalign でコンパイルしたときは、 同じプログラム単位内のすべての副プログラムまたはファイルを -dalign でコンパイルしてください。

    -dalign は -aligncommon を起動するので、 標準 数値シーケンス型の整列も影響を受けます。

    -fast フラグは -dalign を選択します。

必要になることがあります。

-dbl_align_all[={yes|no}]
    データを 8 バイト境界に整列させます。

    yes が指定されると、すべての変数は 8 バイト境界に整列します。デフォルトは、 -dbl_align_all=no です。 -dbl_align_all だけの指定は -dbl_align_all=yes と同じです。

    -xarch=v9 、 v9a 、または v9b を指定して 64 ビット環境のコンパイルを行うと、このフラグは 4 倍精度データを 16 バイト境界に整列させます。

    このフラグは、COMMON ブロックまたはユーザー定義構造体内のデータレイアウトは変更しません。

    使用する場合は、すべてのルーチンをこのオプションでコンパイルしなければなりません。

-depend[=yes|no]
    (SPARC) データ依存関係と再構成についてループを解析します。

    -depend は -depend=yes と同じ意味で、依存解析を有効にします。 -depend=no は DO ループのデータ依存解析を無効にするもので、デフォルトです。

    データ依存関係についてループを解析し、ループの再構成 を行います。 -depend データ依存関係の解析は、 -fast 、 -parallel 、および -autopar の一部として選択されます。 -depend は、最適化レベルが -O3 よりも低い場合、最適化レベルを -O3 に引き上げます。 また、最適化レベル -O3 以上が指定されていれば、データ依存解析は自動的に有効になります。

-dryrun
    f95 ドライバが構築したコマンドを表示します。コンパイルはしません。

    このオプションは、コンパイラがコンパイル時に実行するコマンドを表示するため、 デバッグに役立ちます。

-d{y|n}
    実行可能ファイル全体を生成するときのライブラリの リンク形式 (動的または静的) を指定します。

    実行可能ファイル全体について、 動的 リンクを行うかどうかを y (動的リンク) または n (静的リンク) で指定します。これはリンカーのオプションです。

    デフォルトは -dy です。

    -dy: 動的リンク (共有ライブラリを使用可能)
    -dn: 静的リンク (共有ライブラリは使用不可)

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

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

    64 ビット環境では、システムライブラリの多くは、共有動的ライブラリとしてのみ有効 です。これらには libm.so および libc.so (libm.a と libc.a は提供されていません) が含まれます。結果として、 -Bstatic および -dn は 64 ビット Solaris OS 環境でリンクエラーを起こす可能性があります。このような場合 、アプリケーションが動的ライブラリとリンクする必要があります。

-e  132 文字まで固定書式ソース行を拡張します。

    コンパイラは (132 桁まで) 右側に空白を埋め込みます。 -e でコンパイルするときに継続行を使用する場合、文字定数を複数の行に 分割しないでください。そうしなければ、定数の間に不必要な空白が 挿入される可能性があります。

-erroff[={%all|%none|taglist}]
    タグ名で示される警告メッセージを抑止します。

    taglist には、警告メッセージと共に表示されるコンマ区切りのタグ名のリストを指定します。 %all のみ指定された場合は すべての警告が抑止されます (これは、 -w オプションと同じです。 %none のみ指定された場合、 警告は抑止されません。値を付けずに -erroff とだけ指定するのは、 -erroff=%all と指定したのと同じです。

    -errtags も参照してください)。

-errtags[={yes|no}]
    各警告メッセージと共にメッセージタグを表示します。

    このオプションを付けると、コンパイラの内部エラータグ名が 表示されます。 (-errtags=no と同じことです) 。 値を指定しない -errtags は、 -errtags=yes と同じことを意味します。

-errwarn[={%all|%none|taglist}]
    警告メッセージをエラーと見なします。

    taglist は、エラーと見なす警告メッセージのコンマ区切りのタグ名リストです。 %all
     のみ指定された場合は、 すべての警告がエラーとみなされます。 %none
     のみ指定された場合、警告はエラーと見なされません。

    関連項目: -errtags

-explicitpar
    (SPARC)

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

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

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

    デフォルトでは、Sun 並列化指令は -explicitpar で有効に なります。Cray 形式の指令を使う場合は -mp=cray を追加します。 たとえば次のように指定します。

    -explicitpar -stackvar -mp=cray

    注: OpenMP 並列化指令を有効にするには、 -explicitpar ではなく -openmp を使用します。

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

    -explicitpar を使用してコンパイルとリンクを同時に行うと、 マイクロタスキングライブラリとスレッド対応の Fortran 実行時ライブラリが自動的にリンクされます。 -explicitpar を使用してコンパイルとリンクを別々に行うときは、 リンク時にも必ず -explicitpar を使用してください。

    -autopar の説明も参照してください。

    -explicitpar などの並列化オプションを使用する場合にパフォーマンスを改善するには、 -stackvar オプションも指定してください。 メインスレッドスタックおよびスレーブスレッドスタックの サイズを設定する方法については、 -stackvar オプションの説明を参照してください。

    最適化レベルが -O3 よりも低い場合は、 自動的に -O3 に設定されます。

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

-ext_names=e
    下線付きまたは下線なしの外部名を作成します。

    e は、 plain か underscores でなければなりません。デフォルトは underscores です。

    plain: 末尾に下線を追加しません。
    underscores: 末尾に下線を追加します。

    外部名は、サブルーチン、関数、ブロックデータ副プログラム、または名前付き共通ブロックの名前です。このオプションは、ルーチン自体で使用されている名前だけでなく、呼び出し側の文 (symdefs と symrefs の両方) で使用されている名前にも作用します。

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

    拡張子 .F90、 .F95、 .F03、 および .F が付いたファイルに fpp プリプロセッサを適用し、拡張子を .f90、 .f95、 .f03、 または .f に変更したファイルにその結果を出力します。ただし、コンパイルは行いません。

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

-f  COMMON ブロックにおいて、倍精度または 4 倍精度のデータを整列します。

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

    -f は -aligncommon=16 と同じ意味です。

    これは、実数と複素数の両方のデータに適用されます。

    ただし、結果のコードは標準のものと異なる可能性があり、そのために 移植できない場合があります。

    1 つの副プログラムを -f でコンパイルした場合は、同じプログラムのすべての副プログラムも -f でコンパイルしてください。

    このオプションを単独で使用しても、コンパイラは倍精度と 4 倍精度の データに対して高速のダブルワードの先読み/ストア命令を 生成することはできません。これを実行させるには -dalign を指定する必要があります。

-f77[=list]
    Fortran 77 互換モードを選択します。

    list はコンマで区切ったリストで、以下のキーワードで構成されます。

    %all
        すべての f77 互換機能を選択します。

    %none
        f77 互換機能を無効にします。

    output
        リスト指定出力や名前リスト出力を含む、f77 スタイルの書式付き出力を生成します。

    input
        f77 で使用可能な入力書式を受け入れます。

    tab
        tab    無制限のソース行長さを含む、f77 スタイルの TAB 書式を有効にします。また 72 文字以下のソース行に空白文字パディングを追加しません。

    backslash
        文字列内のエスケープシーケンスの始まりとして、バックスラッシュ文字を受け入れます。

    intrinsics
        組み込みの認識を Fortran 77 組み込みに限定します。

    logical
        Fortran 77 が以下のように論理変数を使用できるようにします。

        -   論理変数への整数値の割り当てを許可します。

        -   .TRUE. を表す .NE.0 を使用して、条件文に論理式の代わりに算術式を使用することを許可します。

        -   論理オペランドに関係演算子 .EQ. と .NE. の使用を許可します。

    subscript
        非整数式を配列添字として使用可能にします。

    misc
        Fortran 95 によりサポートされていないその他の Fortran 77 拡張機能を使用可能にします。

    すべてのキーワードに以下のように no% の接頭辞を付けることにより、対応する機能を無効にできます。

    -f77=%all,no%backslash

    -f77 が指定されない場合は、デフォルトで -f77=%none が指定されます。-f77 がリストなしで使用されると、-f77=%all を指定した場合と同じ結果になります。

    例外のトラップ
    -f77 を指定すると、 Fortran 95 トラップモードが変更されません。 これは -ftrap=common です。 Fortran 95 と Fortran 77 は、演算例外トラップの動作が 異なります。Fortran 77 の場合、これは、演算例外の発生後も 実行を継続できるようにするためでした。また、このためには、 プログラム終了時、プログラム呼び出しの ieee_retrospective は、 に発生した演算例外を報告できていました。 Fortran 77 の動作をまねたトラップに戻すには、-f77 の後に -ftrap=%none を指定します。

    FORTRAN 77 プログラムの Fortran への移行
    -f77 とその互換機能の詳細については、 『Fortran ユーザーズガイド』 の FORTRAN 77 互換に関する章を参照してください。また、不正な結果を出す可能性のある非標準 FORTRAN 77 プログラミングの処理については、-xalias フラグも参照してください。

    f77 によるコンパイル
    使い勝手を考え、Fortran 77 コンパイラスクリプトが用意されています。 f77
     コマンド行スクリプトは、 Fortran 77 との互換性を維持するための一群の適切なオプションを付けて f95
     を呼び出します。詳細は、f77(1) のマニュアルページを 参照してください。

-fast
    実行パフォーマンスを最適化するオプションを選択します。

    -fast は、ある種のアプリケーションのパフォーマンスを向上させます。 しかし、アプリケーションによっては、特定のオプションが選択されることが適切ではない場合があるかもしれません。アプリケーションのパフォーマンスを最大化するための最初の手順として -fast を使用してアプリケーションをコンパイルしてみてください。しかし、更に調整が必要な場合があります。 -fast を指定してコンパイルしたプログラムが正しく動作しない場合、 -fast を形成している個々のオプションを調査して、プログラムを正しく動作させるオプションだけを呼び出してください。

    -fast でコンパイルされたプログラムが、あるデータセットを使うと最適なパフォーマンスと正確な結果を出し、別のデータセットではそうならないという可能性もあります。 浮動小数点演算の特定のプロパティに依存しているプログラムは、 -fast を指定してコンパイルしないでください。

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

    o   -xtarget=native は、ハードウェアターゲットを設定します。
        コンパイルマシンとは異なるターゲットマシンでプログラムを実行する場合は、 -fast の後に適切な -xtarget= オプションを指定してください。以下はその例です。
        f95 -fast -xtarget=ultra ...

    o   -O5 は、レベル 5 の最適化を選択します。

    o   -libmil は、特定の数学ライブラリルーチンをインライン化します。

    o   -fsimple=2 は、より広範囲の浮動小数点の最適化を行います。このオプションは、厳密な IEEE 754 標準に準拠する必要のあるプログラムには適合しないことがあります。

    o   -dalign は、より高速なダブルワードのロード/ストア命令や、共通ブロック内の自然境界の倍精度と 4 倍精度データの配列を生成します。このオプションを使用すると、非標準の Fortran データ配列が生成される場合があります。

    o   -xlibmopt は、最適化された数学ライブラリをリンクします。

    o   -depend=yes は、DO ループをより最適化するための依存性解析を選択します。

    o   -fns は、浮動小数点演算例外および段階的アンダーフローの処理を高速化します (ただし非標準)。

    o   -ftrap=common は、共通浮動小数点例外のトラップを選択します ( f95 のデフォルト)。

    o   -pad=local は、ローカルパディングを選択してキャッシュの使用率を改善します。

    o   -xvector=yes は、ベクトル化数学ライブラリを選択します。

    o   -xprefetch=yes は、プリフェッチをサポートするプラットフォーム上でプリフェッチを自動生成できるようにします。 (SPARC)

    o   -xprefetch_level=2 は、デフォルトのプリフェッチレベルを設定します。 (SPARC)

    o   -nofstore は、式の精度を強制的に結果の精度に合わせるのを取り消します。 (x86)

    この構成要素オプションフラグの選択は、コンパイラのリリースごとに変更されることがあるので注意してください。 -fast により設定されるオプションの詳細については、 『Fortran ユーザーズガイド』を参照してください。

    -fast オプションの次にその他のオプションを付けて、このリストから加算したり、減算したりすることができます。例えば、以下のように することができます。
    f95 -fast -fsimple=1 -xnolibmopt ...
    これは、 -fsimple=2 フラグを無効にし、 -fast により選ばれた -xlibmopt が使用できなくなります。 -fast は
    -dalign -fns -fsimple=2
    オプションを選択してプログラムをコンパイルするので、 浮動小数点演算、データ配列、式評価の順序付けが規格外となることがあります。 この選択は、多くのプログラムで適切ではない可能性があります。

    また -fast
     は -xlibmopt
     および -xvector=yes を選択するため、 -fast を使用するときは、 デフォルトの丸めモードの -fround=nearest が前提とされ、必須です。

    コンパイルとリンクを別々に行う場合は、 -fast でコンパイルしたら、リンク時にも必ず -fast を指定してください。

-fixed
    固定書式ソース入力であるとみなします。

    Fortran のあらゆるソースファイルを Fortran 95 の固定書式として解釈します。 ファイルの接尾辞は無視します。

-flags
    -help と同義です。

-fnonstd
    浮動小数点ハードウェアを非標準の設定に初期化します。

    このオプションは、
    -fns -ftrap=common
    の組み合わせのマクロで、浮動小数点ハードウェアを次のように初期化します。

    o 例外時に停止します。
    o 速度が上がる場合は、非正規化数の値をゼロにフラッシュします。

    効率化のために、主プログラムはこのフラグを使用してコンパイルしてください。

    アンダーフローと非正規化数の処理については、 -fns を参照してください。

    このオプションを指定すると、 浮動小数点例外 (オーバーフロー、ゼロ除算、無効演算など) のトラップが 有効になります。トラップは、SIGFPE シグナルに変換され、プログラムに SIGFPE のハンドラが登録されていない場合は、プログラムは異常終了します。 詳細は ieee_handler (3m)、ieee_funcions (3m)、 『数値計算ガイド』、および『Fortran ユーザーズガイド』 を参照してください。

-fns[={yes|no}]
     は、非標準の浮動小数点モードを選択します

    デフォルトの -fns=no は、 標準の浮動小数点モードを使用します。

    オプションの =yes または =no を使用すると、 他のマクロフラグ (-fns を含むもの) に続き -fns フラグを切り替えることができます (-fast など)。

    -fns は -fns=yes と同義です。
    -fns=yes は非標準の浮動小数点を選択します。
    -fns=no は標準の浮動小数点を選択します。

    -fast selects -fns.

    SPARC プラットフォームの場合、 非標準の浮動小数点モードは 「段階的アンダーフロー」を無効にします。つまり、小さな結果は、 非正規化数にはならず、ゼロにフラッシュされます。 また、 非正規化数のオペランドは暗黙のうちにゼロに置換えられます。

    x86 プラットフォームの場合、このオプションは、Pentium III と Pentium 4 プロセッサ (sse
     または sse2) でのみ有効です。

    警告: 非標準モードを有効にすると、浮動小数点演算は IEEE 754 標準の要求に準拠しない結果を生成する場合があります。 詳細は、『数値計算ガイド』と『Fortran ユーザーズガイド』を参照してください。

    このオプションは、さらに、 メインプログラムをコンパイルするときに使用する場合だけに有効です。

-fpover[={yes|no}]
    書式付き入力の浮動小数点オーバーフローを検出します。

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

-fpp
    入力ファイルを強制的に fpp で前処理します。

    ファイル拡張子にかかわらず、コマンド行に示されたすべての入力ソースファイルを fpp プリプロセッサに渡します (拡張子 .F90、.F95、.F、F03 を持つファイルは自動的に fpp によって前処理されます。-xpp も参照してください)。

-fprecision=p
    (x86)
     デフォルト以外の浮動小数点丸め精度モードを初期設定します。

    x86 の場合は、浮動小数点精度モードを single か double 、 extended のいずれかに設定します。

    p
     が single
     か double の場合、このフラグは 、プログラムの起動時に丸め精度モードをそれぞれ単精度、 倍精度に設定します。 p
     が extended
     または -fprecision
     か、フラグがない場合、丸め精度モードは 拡張精度モードに初期設定されます。

    このオプションは、x86 システムで主プログラムのコンパイルで 使用された場合にのみ有効です。

-free
    自由形式のソース入力を想定します。

    すべてのソースファイルを Fortran 95 の自由形式として解釈します。このオプションを指定すると、ファイル接尾辞は無視されます。

-fround=r
    起動時に有効になる IEEE 丸めモードを選択します。

    r には、
    nearest 、 tozero 、 negative 、 positive のいずれかを指定します。

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

    r が tozero、 negative、または positive
     のとき、このフラグを設定すると、 プログラムが実行を開始するときに、丸め方向モードがそれぞれ、 「ゼロに向かって丸める」、「負の無限に向かって丸める」、または 「正の無限に向かって丸める」に設定されます。r が nearest
     のとき、 あるいは -fround
     フラグを使用しないとき、丸め方向モードは初期値から 変更されません (デフォルトでは最近似値に丸める)。

    このオプションは、メインプログラムをコンパイルするときに使用する 場合だけに有効です。

-fsimple[=n]
    浮動小数点の最適化設定を選択します。

    オプティマイザが浮動小数点演算に関する仮定を単純化できます。

    n を指定する場合、n は 0、1、または 2 でなければなりません。

    デフォルト:
    -fsimple を指定しない場合、 f95 は -fsimple=0 を使用します。
    -fsimple だけを指定する場合、 f95 は -fsimple=1 を使用します。

    -fsimple=0
    仮定の単純化を許可しません。厳密に IEEE 754 に準拠します。

    -fsimple=1
    保守的な単純化を行います。作成されるコードは、厳密には IEEE 754 に準拠しません。しかし、ほとんどのプログラムの数値 結果は変わりません。

    -fsimple=1 を指定すると、オプティマイザは次を仮定できます。

    IEEE 754 のデフォルトの丸めモードとトラップモードは、 プロセス初期化後も変わりません。

    潜在的な浮動小数点例外以外の外に現れない結果を生成する計算は、 削除される可能性があります。

    オペランドに無限または NaN を持つ計算は、結果に NaN を 反映する必要はありません。たとえば、x*0 は 0 に置き換えられるかもしれません。

    計算はゼロの符号には影響されません。

    -fsimple=1 を指定した場合、オプティマイザは、切り捨てや例外を完全に無視して 最適化を行うことはできません。 特に、浮動小数点の計算は、実行時に通常適用される丸めモード によって結果が異なるものと置き換えることはできません。

    -fsimple=2

    浮動小数点の最適化を積極的に行います。この場合、丸めモードの変更により、 多くのプログラムの数値結果が変わる可能性があります。

    特に、Fortran の標準規則では、コンパイラの二次式の周りに明示的な括弧が必要で、式の評価順序を制御します。これは、 -fsimple=2 を使用すると破壊される可能性があります。 この結果、この規則に従うプログラムの数値の丸め誤差が発生する可能性があります。

    たとえば、 -fsimple=2, を指定すると、 コンパイラが C-(A-B) を (C-A)+B として評価することがあります。これは、結果コードがより最適化されている場合、明示的な括弧についての標準規則を破ります。コンパイラは、z=1/y が一度算出され、一時ファイルに保存され、コスト分割操作をなくす場合に、x*z を使用して x/y の反復演算を置き換える場合もあります。

    浮動小数点演算の特定のプロパティに依存するプログラムは、 -fsimple=2 でコンパイルしてはいけません。

    ただし、 -fsimple=2 を指定しても、本来浮動小数点例外を生成しないプログラムには、 オプティマイザは浮動小数点例外を導入しません。

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

-fstore
    (x86) 浮動小数点式の精度を強制的に設定します。

    代入文の場合、このオプションはあらゆる浮動小数点式を強制的に 代入先の変数の精度にします。 デフォルトは -fstore です。 ただし、 -fast
     オプションには、このオプションを無効にする -nofstore
     が含まれています。再びこのオプションを有効にするには、 -fast の後に -fstore
     を続けてください。

-ftrap=t
    浮動小数点のトラップモードを設定します。

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

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

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

    f95 デフォルトは -ftrap=common です。% は省略できません。 f77 のデフォルトは -ftrap=%none であることに注意してください。

    このオプションは、起動時に IEEE 745 トラップモードを有効にしますが、 SIGFPE ハンドラを組み込みません。 ieee_handler(3M) か fex_set_handling(3M)
     を使用して、トラップを有効にするのと同時に
     SIGFPE ハンドラを組み込むことができます。複数の値が指定された場合、 そのリストは、左から右に処理されます。

    例 : すべてのトラップを設定します ( inexact を除く)。

    -ftrap=%all,no%inexact

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

    o   %all はすべてのトラップモードをオンにして、予期している例外にも 予期していない例外にもトラップを発生させます。代わりに common を 使用してください。

    o   デフォルトの %none はすべてのトラップモードをオフにします。

    o   先頭に付いている no% はそのトラップモードをオフにします。

    有効にするためには、メインプログラムをコンパイルするときに、 このオプションを使用しなければなりません。

-G  動的共有ライブラリを構築します。

    動的共有ライブラリを作成するようにリンカーに指示します。 -G を指定しないと、リンカーは実行ファイルを構築します。 -G を指定すると、動的ライブラリを構築します (実行ファイルではありません)。 -G を指定して -o を使用し、書き出すファイル名を指定してください。

-g  デバッグとパフォーマンス解析ができるようコンパイルします。

    dbx(1) または Sun Studio デバッガを使用してデバッグできるよう、また Sun Studio パフォーマンスアナライザ analyzer(1) を使用して解析できるように追加のシンボルテーブル情報を生成します。

    -g を指定しなくても、デバッグできることもありますが、 dbx のすべての機能は、 -g でコンパイルされたオブジェクトのみで有効です。

    注: 以前のリリースでは、 -g
     オプションは、コンパイラのリンク専用の呼び出しで、 ld
     ではなく、 ild
     をデフォルトにしていました。 このリリースでは、この動作は変更され、 ild
     は、 -xildon
     が明示的に指定されているコンパイラのリンク専用の呼び出し でのみ使用されます。 詳細については ild(1) のマニュアルページを参照してください。

    Sun Studio パフォーマンスアナライザのすべての機能を使用 するには、 -g でコンパイルしてください。 パフォーマンス解析の機能には、 -g を必要としないものありますが、注釈付きのソース、機能レベル情報、コンパイラコメン トメッセージを表示するには、 -g でコンパイルする必要があります( analyzer(1) マニュアルページを参照)。

    -g で生成されたコメントメッセージは、プログラムをコンパイルする際にコンパイラが生成 する最適化と変換について記述します。 コメントメッセージを表示するには、 er_src(1)、 er_print(1)、 または パフォーマンスアナライザ analyzer(1) を使用する必要があります。

    コメントメッセージは、コンパイラが実際に最適化を実行する場合にのみ表示されること に注意してください。 -xO4、 または -fast のような高度な最適化レベルを要求した場合に、コメントメッセージが必要になります。

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

    ライブラリに "内部名" がある場合は、実行可能ファイルの実行中にリンカーは 同じ "内部名" を持つライブラリを検索パスの中から探します。 "内部名" を持っていない場合、リンカーは同じパスからライブラリを検索します。 したがって、内部名を使用すると実行時の柔軟性が高まります。

    注意 :
    o -h と nm の間に空白は入れても入れなくてもかまいません。
    o -G オプションを指定しないと、 -hnm は何も実行しません。
    o -hnm はリンカーオプションです。
    o -h と -o の後には通常、同じ名前を指定します。
    o -hnm は、 動的共有ライブラリのバージョンを管理する目的でも 使用できます。

    詳細は、 『リンカーとライブラリ』 を参照してください。

-help
    f95 コマンド行オプションのリストを表示します。

    -xhelp も参照してください。

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

    インクルードファイル検索パスの最初にディレクトリパス path を挿入します。 -I と path の間に空白は入れないでください。

    インクルードファイル検索パスは、 インクルードファイルが検索されるディレクトリのリストです。 この検索パスは、次によって使用されます。

    o プリプロセッサ指令 #include
    o f95 の INCLUDE 文

    例: /usr/applib でインクルードファイルを検索するには、次のようにします。

    f95 -I/usr/applib growth.F

    プリプロセッサを呼び出すためには、 .F .F90 .F95 .F03
     接尾辞を付けてソースファイルをコンパイルする必要があります。

    -Ipath 検索パスは、INCLUDE 文では、絶対パス名ではなく相対パス名の検索に使用されます。相対パス名の検索順序は次のとおりです。

    1. ソースファイルが入っているディレクトリ
    2. -I オプションで指定したディレクトリ
    3. コンパイラのデフォルトリストに入っているディレクトリ
    4. /usr/include

-inline={%auto|[%no]function|...}
    指定したユーザー作成のルーチンのインライン化を要求します。

    コンマ区切りの関数とサブルーチンのリストで指定されている ユーザー作成のルーチンをインライン化することによって最適化します。

    引数リストには、最適化レベルが -O4
     以上の場合の自動的なインライン化を有効にする文字列 %auto
     が含まれています。 通常、 -inline をコマンド行に指定して明示的にインライン化する場合は、自動インライン化は無効です。

    リストにおいてルーチンの名前の前に no% を付けると、そのルーチンのインライン化が禁止されます。

    たとえば、自動インライン化を有効にするが、特定のルーチン (gflub) のインライン化だけを 無効にする場合、次のように指定します。

    -O5 -inline=%auto,no%gflub

    リストが空の場合、自動的インライン化は無効になります

    -fast -inline= sourcefile.f95

    この -fast は、自動インライン化を有効にする -O5 を意味します。 これに対し、リストが空の -inline= は自動インライン化を無効にします。

    コンパイルされるファイル内のルーチンだけがインライン化の対象となります。オプティマイザは、 どのルーチンがインライン化に適しているかを判断します。

    次のいずれかの状態が適用される場合、ルーチンはインライン化されません。 このとき、警告は発行されません。

    o   最適化レベルが -O3 より低い。

    o   ルーチンが見つからない。

    o   ルーチンのインライン化に効果がないか、安全でない。

    o   -xipo または -xcrossfile を指定しないと、コンパイルされるファイル内にソースが存在しない。

-iorounding[={compatible | processor-defined}]
    書式付き入力/出力用の丸めモードを設定します。

    すべての書式付き入力/出力に広域的に ROUND= 指示子を設定します。

    -iorounding=compatible を使用すると、データ変換結果の値は、2つの最近似表現の近い方の値となるか、2 つの表現の中間値である場合はゼロから離れた方の値となります。

    -iorounding=processor-defined を使用すると、丸めモードはプロセッサのデフォルトモードになります。これは、 -iorounding が指定されない場合のデフォルトです。

    引数なしで -iorounding
     を指定するのは、 -iorounding=compatible
     と同等になります。

-Kpic
    -pic と同義です。

-KPIC
    -PIC と同義です。

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

    path は検索リストの先頭に追加されます。 -L と path の間の空白文字はあってもなくてもかまいません。

    注意:
    -Lpath オプションを使って /usr/lib や /usr/ccs/lib を指定しないでください。 これらのディレクトリはデフォルトで検索されます。 また、ここで指定すると、バンドルされていない libm を使用できなくなります。

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

    ローダーに対し、 オブジェクトライブラリ libx.a ( x は文字列) をリンクするように指示します。 詳細は、 ld(1) を参照してください。

    例 : -lsumex とすると、ライブラリ libsumex.a をリンクします。

    コマンド行における順序: -lx オプションは、 .f 、 .F または .o ファイルの後に指定してください。 libx の関数を呼び出すときに それらの関数が liby の関数を参照している場合、 -lx は -ly の前に置いてください。

    -lx に含まれるファイル検索の順序 :
    リンカーは、複数の場所でライブラリを検索します。 詳細については、『Fortran プログラミングガイド』の ライブラリに関する章を参照してください。詳細は、 ld(1) を参照してください。

-libmil
    選択した libm 数学ライブラリルーチンをインライン化し、最適化します。

    いくつかの単純なライブラリルーチンはコンパイラによりインライン化できます。 このオプションは、現在使用している浮動小数点オプションとプラットフォーム に従い、ライブラリ呼び出しをインライン化します。

-loopinfo
    (SPARC) どのループが並列化されるかを表示します。

    どのループが並列化され、どのループが並列化されないかを表示します。 このオプションは通常 -autopar や -explicitpar オプションと併用します。このオプションは標準エラーのメッセージの リストを生成します。

-Mpath
    MODULE ディレクトリ、アーカイブ、またはファイルを指定します。

    現在のコンパイルで参照されている Fortran 95 モジュールのパスを検索します。このパスが、現在のディレクトリに加えて検索されます。

    パスは、ディレクトリ、事前コンパイルされたモジュールファイルの .a アーカイブファイル、事前コンパイルされた .mod モジュールファイルのいずれかです。コンパイラは、その内容を調べてファイルの型を決定します。

    モジュールが検索される .a アーカイブファイルは、-M オプションフラグに明示的に指定する必要があります。コンパイラは、デフォルトではアーカイブファイルの検索は行いません。

    USE 文に使用される MODULE 名と同じ名前を持つ .mod ファイルのみが検索されます。たとえば、USE ME 文は、コンパイラにモジュールファイル me.mod のみを検索させます。

    モジュールを検索する場合、コンパイラはモジュールファイルが書き込まれるディレクトリを優先します。この優先権は、-moddir フラグまたは MODDIR 環境変数によって制御されます。そのいずれも指定されない場合は、デフォルトの書き込みディレクトリが現在のディレクトリとなります。両方指定すると、書き込みディレクトリが -moddir フラグにより指定されたパスとなります。

    つまり、-M フラグだけが指定される場合、-M フラグにリストされるオブジェクトの前に、まず現在のディレクトリでモジュールの検索が行われます。前リリースの動作をエミュレートするには、以下のコマンドを使用します。

    -moddir=empty-dir -Mdir -M

    empty-dir は、空ディレクトリへのパスです。

    -M とパスの間には空白はありません。以下に例を挙げます。
    -M/home/siri/PK15/Modules

-moddir=path
    コンパイラが .mod MODULE ファイルを書き込むディレクトリへのパスを検索します。パスは、MODDIR 環境変数を使用して指定することもできます。両方指定される場合、このオプションフラグが優先されます。

    デフォルトの .mod ファイル書き込み用ディレクトリは、現在のディレクトリです。

-mp=[%none|sun|cray]
    Sun または Cray の並列化指令用のスタイルを指定します。 (SPARC)

    -explicitpar または -parallel を指定しない場合、デフォルトは -mp=%none です。 -explicitpar か -parallel を指定する場合、 デフォルトは -mp=sun となります。

    -mp=sun: Sun スタイルの MP 指令だけを受け入れます。
    -mp=cray: Cray スタイルの MP 指令だけを受け入れます。
    -mp=%none: すべての並列化指令を無視します。

    Sun スタイルの並列化指令は、 C$PAR または !$PAR で始まります。Cray スタイルの並列化指令は、 CMIC$ または !MIC$ で始まります。どちらのスタイルも、大文字または小文字で指定できます。

    同じコンパイル単位で Sun スタイル指令と Cray スタイル指令の両方を有効にすることはできません。

    並列化を有効にするためには、-explicitpar または -parallel も指定しなければなりません。 さらに -stackvar も指定する必要があります。次に例を示します。

    -explicitpar -stackvar -mp=cray

    OpenMP の並列化指令に合わせてコンパイルする場合、 -openmp フラグを使用してください。

-mt MT-safe (マルチスレッド環境で使用しても安全な) ライブラリを使用します。 (SPARC)

    マルチスレッドのコードを書くときに独自のマルチスレッドコーディングを 行う場合( -autopar 、 -explicitpar または -parallel のいずれのオプションも使用しない場合) は、コンパイル時とリンク時に -mt オプションを使用する必要があります。 並列化処理のためのオプションを指定した場合は、 -mt が自動的に使用されます。

    シングルプロセッサシステムでは、このオプションで生成されるコードの実行速度は遅くなります。

-native
    使用中のマシンに合わせた最適化を行います。

    -native オプションは、 -xtarget=native オプションと同義です。

-noautopar
    コマンド行の -autopar を取り消します。 (SPARC)

    コマンド行の -autopar で呼び出されるループの自動並列化を取り消します。

-nodepend
    コマンド行の -depend を取り消します。 (SPARC)

    コマンド行の前で指定した -depend オプションで呼び出される依存関係解析を取り消します。

-noexplicitpar
    -explicitpar を取り消します。 (SPARC)

    コマンド行の前で指定した -explicitpar で呼び出される明示的なループの並列化を取り消します。

-nofstore
    (x86) Cancel -fstore on command line

    Cancels forcing expressions to have the precision of the destination variable invoked by -fstore.

    -nofstore is invoked by -fast. -fstore is the usual default.

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

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

    最終的に実行するときには、これらのライブラリが必要になります。 これらのライブラリと手作業でリンクするのは、ユーザーの責任です。 このオプションを指定すると、すべての制御がユーザーの手に ゆだねられますが、同時に、すべての責任もユーザーにかかってきます。

    -nolib オプションにより、これらのライブラリを静的に リンクすることが容易になります。

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

    libm 数学ルーチンのインライン化を無効にするには、 -fast と併用します。

    demo% f95 -fast -nolibmil ...

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

    -reduction は並列化オプションと併用します。このオプションは、コマンド行の前で指定した -reduction を取り消します。並列化オプションを使用するには、Forte for HPC ライセンスが必要です。

-norunpath
    実行時ライブラリ検索パスを実行可能ファイルに構築しません。

    通常、 実行可能ファイルが共有ファイルを使用している場合、 コンパイラは実行時リンカーに知らせるために、 その共有ライブラリの検索パスを実行可能ファイルに組み込みます。 このパスは、コンパイラがインストールされているディレクトリに依 存します。 -norunpath オプションを指定すると、 実行時パスは実行可能ファイルに組み込まれません。

    このオプションは、ライブラリを標準以外の場所にインストールしていて、 実行可能ファイルが別のサイトで実行されるとき、ローダーがこれらの パスの下を検索しないようにする場合に便利です。 -R と比較してください。

-O[n]
    最適化レベル (n) を指定します。

    -O[n] を指定しない場合、本当に基本的なレベルの最適化 (局所的な共通部分式の削除とデッドコードの解析) だけが 実行されます。最適化レベルを指定してコンパイルしたとき、パフォーマンスが飛躍的に上がるプログラムもあります。

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

    -On と組み合わせて使用できる最適化レベルは 5 つあります。 コンパイラが各レベルで実際に行う最適化の内容は、 コンパイラのリリースによって異なります。 ほとんどのプログラムでは、 -O ( -O3 を暗黙指定する) または -fast ( -O5
     を暗黙指定する) を使用することを推奨します。

    -g オプションは、最適化オプションと組み合わせて使用できます。

    メモリーが不足した場合、オプティマイザはもう一度より低いレベルの最適化 で処理しようとし、その後のルーチンのコンパイルを元のレベルで再開します。

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

    -O  ほとんどの現実的なアプリケーションで最高に近いパフォーマンスが 得られるようなレベルで最適化を行います (現在は -O3 レベルで最適化されます)。

    -O1 基本的で局所的な (ピープホール) 最適化のみを行ないます

    -O2 基本的な局所的最適化と大域的最適化を行います。通常、 このレベルでは、コードのサイズが最小になります。

        -O3 関数レベルの大域的な最適化を追加します。 通常、 -O3 または -O4 レベルで行う場合、 -xspace オプションと組み合わせると コードのサイズが最小になります。 自動的に -depend によるデータ依存解析が有効になります。

    -O4 同じファイルの関数の自動インライン化を追加します。 -g は自動 インライン化を抑制します。 通常、 -O4 では、 -xspace と組み合わせない限り、 コードのサイズがさらに大きくなります。

        インライン化されるルーチンの制御については、 -inline を参照してください。

    -O5 最高レベルの最適化を行います。このレベルは、プログラムの中でも、その 実行にコンピュータ時間の大部分を要する、ごく少量のコードに対してのみ 使用します。 より長いコンパイル時間を要する最適化アルゴリズム、または実行時間が 確実に改善されるかが不明な最適化アルゴリズムを使用します。 このレベルでより確実にパフォーマンスを向上させるには、 プロファイルのフィードバックを使用してください。 -xprofile=collect|use の項を参照してください。

    相互の関連性:

        -g を使用していて、最適化レベルが -O3 以下の場合、コンパイラは、ほぼ完全な最適化によって 最大限のシンボル情報を提供します。末尾呼び出しの最適化と バックエンドのインライン化は無効です。

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

        -xcrossfile オプションは、 -O4 または -O5 といっしょに使用した場合にのみ有効です。

        関連項目:

        -fast 、 -xprofile=p 、 csh(1) マニュアルページ

        『プログラムのパフォーマンス解析』 では、最適化の各レベルがアナライザのデータに及ぼす影響に ついて説明しています。
-o nm
    実行可能ファイルの名前を指定します。

    -o と nm の間には空白が必要です。このオプションを指定しない場合、デフォルトでは、実行可能ファイルは a.out に書き込まれます。 -c と併用したとき、 -o はターゲットの .o オブジェクトファイルを指定します。また、 -G と併用したとき、 -o はターゲットの .so ライブラリファイルを指定します。

-onetrip
    DO ループを1回実行します。

    DO ループに到達したときに、そのループが少なくとも 1 回は実行されるように コンパイルします。

    Fortran 95 の DO ループは、 上限が下限よりも小さいときには 1 度も実行されません。この動作は、 従来のFortran における DO ループの動作とは異なります。

-openmp[=a]
    Fortran 95 OpenMP バージョン 2.0 指令で明示的な並列化を有効にします。

    このフラグは以下のサブオプションキーワードを受け付けます。

    parallel
        OpenMP プラグマの認識を有効にします。 -xopenmp=parallel の最低の最適化レベルは -O3 です。 コンパイラは必要であればこれより低い最適化レベルを -O3 に上げて、警告を出します。
    noopt
        OpenMP プラグマの認識を有効にします。 最適化レベルが -O3 より低くても、コンパイラはレベルを上げません。
        明示的に最適化レベルが
        -O2 -openmp=noopt
        のように -O3 よりも低く設定されている場合、コンパイラはエラーと します。-openmp=noopt に最適化レベルを指定しなければ、 OpenMP プラグマが認識されてそのように並列化されますが、最適化は 行なわれません。
    stubs
        OpenMP プラグマの認識を無効にし、スタブライブラリルーチンにリンクし、かつ、最適化レベルの変更を行ないません。アプリケーションで明示的に OpenMP 実行時ライブラリルーチンが呼び出されていて、それを順次実行するようコンパイルする場合には、このオプションを使います。
    none
        OpenMP プラグマの認識を無効にし、最適化レベルを変更しません (デフォルト)。
    サブオプションキーワードを付けずに -openmp を指定した場合、 -openmp=parallel と同じ意味になります。このデフォルトは将来のリリースで変更になるかもしれません。

    サブオプション parallel、 noopt、 stubs は _OPENMP プロプロセッサのトークンを 200011 と定義します。

    サブオプション parallel と noopt は自動的に -stackvar を起動します。

    OpenMP プログラムを dbx を使ってデバッグする場合は、
    -g -openmp=noopt
    を使用し、並列領域内で停止して変数の中身を表示できるようにします。

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

    コンパイルとリンクを別々のステップで実行する場合は、リンクのステップ でも -openmp を指定します。このことはとくに動的ライブラリ (.so) をコンパイルする際に重要です。OpenMP 指令を含むライブラリを コンパイルするときには、そのライブラリを参照するプログラムのコンパイルに 使用したのと同じリリースのコンパイラを使用しなければなりません。

    Fortran 95 OpenMP 指令については、『 OpenMP API ユーザーズガイド 』を参照してください。

-p  (旧式) prof を使ったプロファイリング用にコンパイルします。

    prof(1) を使ったプロファイリングのための オブジェクトファイルを準備します。 手続きごとのプロファイルを作成し、 各手続きの呼び出しの数と、 各手続きによって使用された時間の割合を示します。

    コンパイルとリンクを別々に行う場合、 -p でコンパイルしたら、 リンク時にも必ず -p を使用してください。

-pad[=p]
    キャッシュを有効に使用するために、パディングを挿入します。

    このオプションは、配列または文字列が次の状態である場合に、 配列または文字列の間にパディングを挿入します。
    o 静的、局所的で、初期化されていない。または
    o 共通ブロック内にある

    上記どちらの場合でも、配列または文字列は等値にはなりません。

    =p を指定する場合、次の 1 つでなければなりません (空白なし)。
    %none: パディングは行なわれません。
    local: 局所変数にパディングを挿入します。
    common: 共通ブロック内にある変数にパディングを挿入します。
    local,common: 局所変数と共通ブロック内の変数の両方にパディングを挿入します。 local
     および common
     の順序は任意です。

    デフォルト:
    コンパイラのデフォルトは、パディングなしです。
    値なしで -pad を指定すると、 -pad=local,common と同等です。

    プログラムは、次の制限事項に従っている必要があります。

    o   -pad=common を共通ブロックを参照するファイルに指定する場合、その共通ブロックを 参照する他のすべてのファイルにも -pad=common を指定しなければなりません。

    o   -pad=common を指定した場合、異なるプログラム単位間の同じ共通 ブロック内の変数のレイアウトは、変数名以外は同じである 必要があります。

    o   パディングは -xcache の設定に依存しています。コンパイラが配列間に挿入するパディングは、データの仮定レイアウトと衝突し、予想外の方法で配列参照が失敗します。

    o   プログラムが共通ブロックの配列をオーバーインデックスする場合、 -pad=common を指定しないでください。コンパイラが配列間に挿入するパディングは、データの仮定レイアウトと衝突し、予想外の方法で配列参照が失敗します。

    o   -pad=common を指定してコンパイルした場合、 共通ブロック変数を持つ EQUIVALENCE 宣言があると「 EQUIVALENCE 宣言によってパディングが禁止されました」という内容の エラーメッセージが出力されます。 この場合、配列にパディングは挿入されません。

    プログラマは、 -pad
     が使用されたときに、共通ブロックのコンパイルの一貫性が 維持されるようにする必要があります。 異なるプログラムユニットの共通ブロックを -pad=common
     を付けてコンパイルしたとき、その一貫性が維持されない場合は、 エラーになります。 -Xlist を付けたコンパイルでは、同じ名前の共通ブロックの長さが プログラムユニットの間で異なる場合に、そのことが報告されます。

-parallel
    (SPARC) 自動並列化機能と明示的な並列化機能の組み合わせを有効にします。

    このオプションはマクロであり、次のオプションを組み合わせたものです。

    -autopar -explicitpar -depend

    コンパイラが自動的に選択したループと、ユーザーが明示的に指令で指定した ループを並列化します。最適化レベルが -O3 よりも低い場合、最適化レベルは自動的に -O3 まで引き上げられます。 sp パフォーマンスを上げるために、並列化オプション ( -autopar も含む) を使用するときには、 -stackvar オプションも指定します。 メインスレッドスタックおよびスレーブスレッドスタックの サイズを設定する方法については、 -stackvar オプションの説明を参照してください。

    デフォルトでは、Sun 形式の並列化指令が有効になっています。Cray 形式 の指令を使うには、-mp=cray を追加してください。 たとえば次のように指定します。

    -parallel -stackvar -mp=cray

    注: OpenMP 並列化には、 -parallel ではなく -openmp オプションフラグを使用してください。

    独自のスレッド管理を行う場合は、 -parallel は使用しないでください。 -mt を参照してください。

    -parallel などの並列化オプションの目的は、マルチプロセッサシステムで動作する 実行可能プログラムを生成することです。シングルプロセッサシステムでは、 一般的に、並列化はパフォーマンスを低下させます。

    コンパイルとリンクを別の段階で行う場合、 -parallel をコンパイルコマンドに指定した場合は、リンクコマンドにも 指定しなければなりません。

    -autopar の説明も参照してください。

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

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

-pg gprof を使ったプロファイリング用にコンパイルします。

    gprof(1) によるプロファイリングのためのオブジェクトファイルを準備します。 手続きごとのプロファイルを作成し、 各手続きの呼び出しの数と、 各手続きによって使用された時間の割合を示します。

    計数を行うコードの作成方法は -p オプションの場合と同じですが、 このオプションでは、より広範囲の統計情報を保持し、 正常終了時にファイル gmon.out を作成する実行時記録メカニズムが呼び出されます。 その後、 gprof(1) を使って実行プロファイルを生成することができます。

    コンパイルとリンクを別々に行う場合、 -pg でコンパイルしたら、リンク時にも必ず -pg を使用してください。

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

    -xcode=pic13 と同義です。

-PIC
    -pic と似ていますが、32 ビットアドレスを使用します。

    -xcode=pic32 と同義です。

-Qoption pr ls
    オプションリスト ls をコンパイル段階 pr に渡します。

    このオプションは、主に、カスタマサービスにより使用されます。

-qp -p と同じ意味です。

-R list
    ライブラリ検索パスを実行可能ファイルに構築します。

    このオプションを使用すると、リンカー ld(1) は、ライブラリ検索パスのリストを実行可能ファイルに追加します。

    list はコロンで区切ったディレクトリのリストで、ライブラリ検索パスを 実行時リンカーに指定するために使用されます。このリストは、 f95 がリンカーに渡すデフォルトリストに追加されます。

    -R と list の間の空白はオプションです。

    このオプションの複数のインスタンスは 1 つに連結され、それぞれのリストはコロンで区切られます。

    このオプションを使用するのは、ユーザーの動的ライブラリへのパスを特別にオプション指定せずに実行できる実行可能ファイルをエクスポートする場合です。

    このオプションで実行可能ファイルを構築すると、デフォルトのパス (常に最後に検索される) にパスが追加されます。
    /opt/SUNWspro/lib

-r8const
    単精度の定数を REAL*8 定数に拡張します。

    単精度の定数表現はすべて REAL*8 に拡張されます。倍精度の定数 (REAL*8) は拡張されません。

    このフラグは定数にだけ適用されます。定数と変数の両方を拡張するには、-xtypemap を使用してください。

    このフラグの使用には注意が必要です。実際の引数として REAL*4 定数表現を使用して、REAL*4 の値を期待するルーチンを呼び出すと、インタフェース障害が発生することがあります。また、入出力リストに REAL*4 定数表現を含む書き込み文で書かれた書式なしデータファイルを読み取るプログラムに問題が起こることもあります。

-reduction
    (SPARC) ループ内の縮約演算を並列化します。

    縮約の自動並列化についてループを解析します。 縮約ループの並列化処理を可能にするには、 -reduction と -autopar を両方指定してください。

    例: demo% f95 -autopar -reduction any.f

    配列の要素を単一のスカラー値に変換するループのことを縮約演算と呼びます。たとえば、ベクトルの要素を合計するなどは典型的な縮約演算です。このような演算は並列化の規準に違反しますが、-reduction を指定すると、コンパイラはこのような演算を特別なケースとして認識および並列化できます。 f95 が認識する縮約演算については、『Fortran プログラミングガイド』の並列化に関する章を参照してください。 -autopar を指定せずに -reduction を指定する場合、コンパイラは警告を発行します。

    シングルプロセッサシステムでは、生成されるコードの実行速度は遅くなります。

    縮約には、丸めのエラーが起こる可能性が常にあります。

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

    指定されたプログラムをコンパイルし、拡張子 .s を付けたファイルにアセンブリ言語出力を保存します ( .o ファイルは作成しません)。

-s  実行可能ファイルからシンボルテーブルを削除します。

    このオプションは、実行可能ファイルを小さくし、逆アセンブルを 困難にします。しかし、デバッグが不可能になります。

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

    ソースブラウザについては、 sbquery(1) と sbtags(1) を参照してください。

    注意: -sb は、コンパイラが fpp または cpp プリプロセッサを介して自動的に渡すソースファイルには 使用できません。 たとえば、拡張子が .F、 .F90、 .F95、 .F03 のいずれかであるソースファイル、または -F オプションを使用した場合がこれに該当します。

-sbfast
    -sb に似ていますが、 -sb より高速です。
    ソースブラウザのテーブル情報を生成するだけであり、オブジェクトファイルのアセンブル、 リンク、作成は行いません ( -sb およびソースコードプリプロセッサとの併用に関する注意事項も参照してください)。

-silent
    コンパイラメッセージを抑止します。

    通常、 f95 はコンパイル中にエラー診断以外のメッセージを出力しません。このオプションは、古いスクリプトと Makefile との互換性のためにのみ提供されています。デフォルトは -silent
     で、その使用は冗長です。

-stackvar
    すべての局所変数を強制的にスタックに割り当てます。

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

    サブプログラム呼び出しを含む明示的に並列化されたループに対しては、 -stackvar の使用は必須で、すべての並列化オプションに使用することを推奨します。 -stackvar
     を使用すべきケースと使用すべきでないケースについては、 『Fortran プログラミングガイド』の「並列化」の章を参照してください。

    次の場合にあてはまらないかぎり、変数と配列は局所的になります。

    o   SUBROUTINE 文または FUNCTION 文中の引数
         (すでにスタックに割り当てられている)

    o   COMMON 文、SAVE 文、または STATIC 文中の大域的な項目

    o   型宣言文または DATA 文中の初期化された項目
        (たとえば、 REAL X/8.0/ や DATA X/8.0/ など)

    -stackvar で大きな配列をスタックに置くと、スタックがオーバーフローし、 セグメント例外が発生することがあります。スタックのサイズを 増やす必要があります。

    プログラムを実行する初期スレッドはメインスタックを持っており、マルチスレッド化プログラムの 各補助スレッドは独自のスレッドスタックを持っています。

    メインスタックのデフォルトのサイズは、約 8 メガバイトです。デフォルトのヘルパースレッドスタックサイズは、SPARC V8 プラットフォームで 4 メガバイト、SPARC V9 プラットフォームで 8 メガバイトです。

    limit コマンド (パラメータなし) は、現在のメインスタックのサイズを表示します。

    limit シェルコマンドを使用して、 メインスレッドスタックのサイズ (K バイト単位) を設定できます。 たとえば、次のコマンドでメインスタックのサイズを 64 メガバイト に設定できます。
    % limit stacksize 65536

    STACKSIZE 環境変数に値 (K バイト単位) を指定すると、各スレーブスレッドが 使用するスタックサイズを設定できます。
    次のコマンドで、各スレーブスレッドのスタックサイズを 8M バイトに設定できます。
    % setenv STACKSIZE 8192
    詳細は 『Fortran プログラミングガイド』 の並列化に関する章を参照してください。
    関連項目 -xcheck=stkovf
     スタックオーバーフローに関する実行時検査を有効にします

-stop_status[={yes|no}]
    STOP 文により整数のステータス値を戻すことを許可します。

    オプション引数は yes または no のどちらかです。デフォルトは yes です。

    -stop_status=yes を指定すると、STOP 文には、プログラムの終了時に環境に渡される整数定数を指定できます。 この値は C シェルでは $status、Bourne シェルや Korn シェルでは $? です。

    STOP 文の値には任意の正の整数を指定してください。シェルに戻される値は 256 で割った余りになります (つまり、0 から 255 までの範囲)。

-temp=dir
    一時ファイル用のディレクトリを定義します。

    f95 で使用される一時ファイル用のディレクトリを /tmp ではなく dir に設定します。

-time
    各コンパイル処理段階の実行時間を表示します。

-U  ソースファイル内の大文字と小文字を認識します。

    大文字を小文字と同じに扱いません。デフォルトでは、文字列定数内を除き、大文字は小文字として扱われます。

    このオプションが指定されると、コンパイラは Delta、DELTA、および delta を別々のシンボルとして扱います。

    移植性を考慮する場合や Fortran を他の言語と混合する場合は、必要に応じて -U を使用してください。

    このオプションは、組み込み関数、Fortran ライブラリ関数、明示的に EXTERNAL と宣言されたルーチンへの呼び出しには影響しません。

-Uname
    プリプロセッサマクロ name を未定義にします。

    同じコマンド行の -Dname が作成したプロプロセッサマクロシンボル name の初期定義を削除します。または、オプションの順番に関係なく、コマンド行ドライバに より、暗黙に置かれます。ソースファイルのマクロ定義には影響ありません。複数の -Uname フラグは、同じ行にあり、 -U と name の間には空白文字を置いてはなりません。

    このオプションは、 fpp
     か cpp
     プロプロセッサを呼び出しソースファイルです。

-u  未宣言変数を報告します。

    各コンパイル単位に IMPLICIT NONE を指定することと同じです。このオプションは、Fortran 標準の暗黙的な型指定を使用せずに、 変数のデフォルトの型を未宣言の状態にします。このオプションは、既存の IMPLICIT 文や 明示的な型宣言文を無効にすることはありません。

-unroll=n
    可能であれば、DO ループの展開を n 回だけ有効にします。

    n は正の整数です。

    n = 1 の場合、このオプションは、すべてのループの展開を禁止します。

    n > 1 の場合、このオプションは、 n 回だけループを展開することをオプティマイザに指示します。

    任意のループが実際に展開されると、 実行可能ファイルはより大きくなります。

-use=list
    暗黙的な MODULE 使用法をグローバルに指定します。
    list は、コンマで区切ったモジュール名またはモジュールファイル名のリストです。-use=module_name を使用するコンパイルは、実際にはコンパイルされる各サブプログラムに USE module_name を追加します。同様に、-use=module_file_name を使用するコンパイルは、実際にはコンパイルされる各サブプログラムに、module_file_name ファイルに含まれる各モジュールの USE module_name を追加します。

-V  各コンパイル段階の名前とバージョンを表示します。

-v  詳細モード。-詳細なコンパイル段階を表示します。

    -V と似ていますが、ドライバが使用するオプション、マクロフラグの拡張、環境変数などの詳細も表示します。

-vax=v
    VAX VMS Fortran 拡張機能の選択を有効にします。

    v には次のいずれか 1 つの値か、あるいは複数の選択項目をコンマで区切り、指定します。

    blank_zero:
        書式付き入力の中のブランクを、内部ファイル上のゼロと解釈します。

    debug:
        文字 'D' で始まる行を注釈行ではなく、 VMS Fortran のような通常の Fortran 文と解釈します。

    rsize:
        書式なしレコードのサイズを、バイトではなくワードで表されていると 解釈します。

    struct_align:
        VMS Fortran のように、メモリー内の VAX 構造のコンポーネントを、パディングせずに配置します。このオプションフラグは f77 -xl フラグに取って代わります。 注: データが誤って整列される場合があります。

    %all:
        これらのすべての VAX VMS 機能を有効にします (デフォルト)。

    %none:
        これらすべての VAX VMS 機能を無効にします。

    サブオプションは個別に選択したり無効にしたりすることができます (直前に no% を指定) 。

    例:

        -vax=debug,rsize,no%blank_zero

    -vax=
     が省略された場合のデフォルトは、 -vax=%all です。

-vpara
    (SPARC) 詳細な並列化メッセージを表示します。

    明示的に並列化されたループが依存関係を持つことを検出すると、 コンパイラは警告メッセージを発行します。しかし、ループは並列化されます。

    -explicitpar と C$MIC DOALL 並列化プラグマを併用してください。

    例: f95 -explicitpar -vpara any.f

-w[{0|1|2|3|4}]
    警告メッセージを表示または抑止します。

    -w コンパイラから警告メッセージを抑止します。
    -w0 エラーメッセージだけを表示します。
    -w1 エラーと警告を表示します (これはデフォルトです)。
    -w2 エラー、警告、および注意を表示します。
    -w3 エラー、警告、注意、および注を表示します。
    -w4 エラー、警告、注意、注、およびコメントを表示します。
    2 つのオプションを 指定した際に、2 番目のオプションが 1 番目のオプションのすべてまたは一部を 無効にしてしまう場合は、コンパイラは警告を発行します。

-Xlist[z]
    ソースリストを出力し、大域的にプログラムを検査します。

    潜在的なプログラム上のバグを検索します。 大域プログラムでの呼び出しや共通における整合性を検査するために その他のコンパイラパスを呼び出します。クロスリファレンスのある行番号付きソースコードを生成します。

    -Xlist からの診断メッセージは、警告で、コンパイルやリンクは実行することができます。

    すべての構文エラーを最初に修正してください。 構文エラーのあるソースプログラムで実行した場合、 -Xlist は予期できない結果を出力する可能性があります。

    結果は、最初に指定されたファイルの名前の拡張子を .lst に変えた名前のファイルに出力されます。

    例 : エラー、リスト、クロスリファレンスを file1.lst に出力します。

    demo% f95 -Xlist file1.f file2.f

    手続き間での問題をチェックするには -Xlist オプションを使用してください。ただし、他のすべてのコンパイルエラーと警告が解決されてから使用してください。

    -Xlist のサブオプションの要約を示します。

    -Xlist
        デフォルト。リスト、エラー、クロスリファレンステーブルを出力する。
    -Xlistc
        大域的エラーとコールグラフのみを出力する。
    -XlistE
        エラーのみ出力 (クロスリファレンステーブルとリストはなし)。
    -Xlisterr
        -Xlist によるすべてのエラーメッセージを出力しない。
    -Xlisterr[n]
        -Xlist による n 番のエラーメッセージを出力しない。
    -Xlistf
        エラー、リスト、クロスリファレンスを表示し、オブジェクトファイルのコンパイルを行わない。
    -Xlisth
        エラーが検出された場合は、コンパイルを終了する。
    -XlistI
        インクルードファイルも検査する。
    -XlistL
        リストのみを出力 (クロスリファレンステーブルはなし)。
    -Xlistl[n]
        1 ページの行数を n 行にする。
    -XlistMP
        (SPARC) OpenMP 指令を検査する。
    -Xlisto  nm
        file.lst ではなく nm に結果を出力する。
    -Xlists
        参照されていない名前をクロスリファレンスに出力しない。
    -Xlistvn
        検査レベルを n (1、2、3、4) に設定する (デフォルトは 2)。
    -Xlistw[nnn]
        出力行の幅を n 桁に設定する (デフォルトは 79)。
    -Xlistwar
        -Xlist によるすべての警告メッセージを出力しない。
    -Xlistwar[n]
        -Xlist による n 番の警告メッセージを出力しない。
    -XlistX
        クロスリファレンステーブルのみを出力する (リストはなし)。

    詳細は、 を参照してください。

-x386
    (旧式) -xtarget=386 と同義。 かわりに -xtarget=generic を使ってください。

-x486
    -xtarget=486 と同義。

-xa -a と同義です。

-xalias[=type_list]
    コンパイラが仮定する別名の程度を指定します。

    非標準のプログラミング技法により、コンパイラの最適化戦略の妨げとなる状況が発生することがあります。特に、オーバーインデックスの使用、ポインタの使用、ならびに大域変数または一意でない変数をサブプログラム引数として渡すことにより、コンパイラが特定の最適化を適用できなくなるあいまいな別名状況が発生し、予想外の結果を招くことがあります。

    別名の詳細については、『Fortran ユーザーズガイド』を参照してください。

    コンパイラに、プログラムと Fortran 標準の別名要件との違いを知らせるには、 -xalias
     フラグを使用します。

    フラグには、リストが付くこともあれば付かないこともあります。リストに含まれるキーワードはコンマで区切られ、各キーワードはプログラムに存在する別名状況を示します。各キーワードに接頭辞 no% を付けることにより、存在しない別名のタイプを示すことができます。

    以下の別名キーワードがあります。

    dummy
        ダミー (形式) サブプログラムパラメータは相互に別名となり、大域変数となります。

    no%dummy
        (デフォルト)。ダミーパラメータの使用法は Fortran 標準に従い、相互に別名または大域変数となることはありません。

    craypointer
        (デフォルト)。 Cray ポインタは、LOC() 関数でアドレスが 取り出せる任意の大域変数または局所変数を指すことがきます。 また、2 つの Cray ポインタが同じデータを指す可能性もあります。 このような仮定に基づいて、ある種の最適化が阻止されるため、安全です。

    no%craypointer
        Cray ポインタは、malloc() で取り出せるような固有の メモリアドレスだけを指します。また、2 つの Cray ポインタが同じデータを 指すことはありません。この仮定に基づくと、コンパイラは Cray ポインタを 使った参照を最適化することが可能になります。

    actual
        コンパイラは実際のサブプログラムの引数を、それらが大域変数であるかの ように扱います。 引数をサブプログラムに渡すと、Cray ポインタにより別名が発生します。

    no%actual
        (デフォルト)。引数を渡しても別名にはなりません。

    overindex
        (a) COMMON ブロック内の配列要素を参照すると、COMMON ブロックまたは同類のグループ内の要素を参照することになります。
        (b) COMMON ブロックまたは同類のグループの要素を実引数としてサブプログラムに渡すと、その COMMON ブロックまたは同類のグループへのアクセス権が、呼び出されるプログラムに与えられます。
        (c) シーケンス構造型の要素は、 COMMON ブロックであるかのように処理されます。
        (d) 個々の配列境界が犯されることがありますが、上記を除くと、 参照された配列要素は、その配列内に留まると見なされます。

        配列構文の WHERE 文 と FORALL 文 は、オーバーインデックスとはみなされません。

    no%overindex
        (デフォルト)。配列結合違反はありません。配列参照により他の変数が参照されることはありません。

    ftnpointer
        外部関数を呼び出すと、Fortran ポインタはすべての型、種類、またはランクの TARGET 変数を指します。

    no%ftnpointer
        (デフォルト)。Fortran ポインタは標準ルールに従います。
    コンパイラのコマンド行に -xalias が指定されない場合、デフォルトは以下のとおりです。

    -xalias=no%dummy,craypointer,no%actual,no%overindex,\
             no%ftnpointer

    -xalias をリストなしで指定すると、Fortran 別名ルールに違反しないほとんどのプログラムで最良のパフォーマンスが得られます。これは、以下の指定と一致します。

    -xalias=no%dummy,no%craypointer,no%actual,no%overindex,\
             no%ftnpointer

    -xO3 以上の最適化レベルでコンパイルするときは、効率上 -xalias は使用しないでください。

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

-xarch=isa
    ターゲットの命令セットアーキテクチャ (ISA) を指定します。

    このオプションは、コンパイラが生成するコードを、指定した命令セット アーキテクチャの命令だけに制限します。つまり、指定した命令セットだけを 許可します。このオプションは、ターゲット固有の命令が使用されるとは限りません。 ただし、このオプションを使用すると、バイナリプログラムの 移植性に影響がある可能性があります。 この項目の最後にある注意と警告を参照してください。

    SPARC プラットフォームの場合:

    値   意味

    generic
        ほとんどの 32 ビットアーキテクチャで良好なパフォーマンスを得られるように コンパイルします。

        これはデフォルトです。 このオプションは、たいていの 32 ビットプロセッサで良好な パフォーマンスを得るのに最適な命令セットを使用します。 「最良な命令セット」の定義は、必要に応じてリリースごとに調整される 可能性があります。これは現時点では 「v8plus」 として解釈されています。

    generic64
        (SPARC) ほとんどの 64 ビットアーキテクチャで良好なパフォーマンスを 得られるようにコンパイルします。

        このオプションは、たいていの 64 ビットプロセッサで良好な パフォーマンスを得るのに最適な命令セットを使用します。 新しいリリースごとに、「最良な命令セット」の 定義を調節する必要があるかもしれません。 これは現時点では 「v8」 として解釈されています。

    native
        当該システムで良好なパフォーマンスを得られるようにコンパイルします (32 ビットアーキテクチャを想定)。

        これは -fast オプションのデフォルトです。コンパイラは、実行している 現在のシステム 32 ビットプロセッサに適切な設定を選択します。

    native64
        (SPARC) 当該システムで良好なパフォーマンスを得られるようにコンパイルします (64 ビットアーキテクチャを想定)。

        コンパイラは、実行している現在の 64 ビットシステムプロセッサに 適切な設定を選択します。

    v7  SPARC-V7 ISA に合ったコンパイルをします (旧式)。

        最新の Solaris オペレーティングシステムは、SPARC V7 アーキテクチャ をサポートしません。このオプションを付けてコンパイルしたプログラムは、 最新のプラットフォームで実行速度が低下します。デフォルトは -xarch=v8plus
         です。

        例: SPARCstation 1、SPARCstation 2

    v8a V8a バージョンの SPARC-V8 ISA 用にコンパイルします。

        定義上、V8a は V8 ISA を意味します。ただし、fsmuld 命令は例外です。 このオプションは、V8a ISA 上で良好なパフォーマンスを得るための コードを生成します。

        例: microSPARC I チップアーキテクチャに基づくシステム

    v8  SPARC-V8 ISA 用にコンパイルします。

        V8 アーキテクチャ上で良好なパフォーマンスを得るためのコードを生成します。

        例: SPARCstation 10

    v8plus
        V8plus バージョンの SPARC-V9 ISA 用にコンパイルします。

        定義上、V8plus は V9 ISA を意味します。ただし、V8plus ISA 仕様で 定義されている 32 ビットサブセットに制限されます。さらに、 VIS (Visual Instruction Set) と実装に固有な ISA 拡張は例外です。 このオプションは V8plus ISA 上で良好なパフォーマンスを得るための コードを生成します。結果のオブジェクトコードは SPARC-V8 + ELF32 形式であり、Solaris OS UltraSPARC 環境だけで実行できます。つまり、 V7 または V8 のプロセッサ上では動作しません。

        例: UltraSPARC チップアーキテクチャに基づくシステム

    v8plusa
        V8plusa バージョンの SPARC-V9 ISA 用にコンパイルします。

        定義上、V8plusa は V8plus アーキテクチャ + VIS (Visual Instruction Set) バージョン 1.0 + UltraSPARC 拡張を意味します。このオプションは UltraSPARC アーキテクチャ上で良好なパフォーマンスを得るためのコード を生成します。ただし、V8plus 仕様で定義されている 32 ビットサブセットに 制限されます。結果のオブジェクトコードは SPARC-V8 + ELF32 形式であり、 Solaris OS UltraSPARC 環境だけで実行できます。つまり、V7 または V8 の プロセッサ上では動作しません。

        例: UltraSPARC チップアーキテクチャに基づくシステム

    v8plusb
        UltraSPARC III 拡張付きで、V8plusb バージョンの SPARC-V8 plus ISA 用にコンパイルします。

        UltraSPARC アーキテクチャ + VIS (Visual Instruction Set) バージョン 2.0 + UltraSPARC III 拡張用のオブジェクトコードを生成します。結果の オブジェクトコードは SPARC-V8 + ELF32 形式であり、Solaris OS UltraSPARC III 環境だけで実行できます。このオプションは UltraSPARC III アーキテクチャ 上で良好なパフォーマンスを得るための最良のコードを使用します。

    v9  SPARC-V9 ISA 用にコンパイルします。

        V9 SPARC アーキテクチャ上で良好なパフォーマンスを得るためのコードを 生成します。結果の .o オブジェクトファイルは ELF64 形式であり、同じ形式の SPARC-V9 オブジェクトファイルだけとリンクできます。結果の実行可能 ファイルは、64 ビット有効な Solaris OS 環境が動作しており、 64 ビットカーネルを持つ UltraSPARC プロセッサ上だけで実行できます。

        -xarch=v9 は、64 ビット有効な Solaris OS 環境でコンパイルする ときだけ使用できます。

    v9a UltraSPARC 拡張付きの SPARC-V9 ISA 用にコンパイルします。

        SPARC-V9 ISA に VIS (Visual Instruction Set) と UltraSPARC プロセッサに固有な拡張を追加します。V9 SPARC アーキテクチャ上で 良好なパフォーマンスを得るためのコードを生成します。結果の .o オブジェクトファイルは ELF64 形式であり、同じ形式の SPARC-V9 オブジェクトファイルだけとリンクできます。結果の実行可能ファイルは、 64 ビット有効な Solaris OS 環境が動作しており、64 ビット カーネルを持つ UltraSPARC プロセッサ上だけで実行できます。

        -xarch=v9a は、64 ビット有効な Solaris OS 環境でコンパイル するときだけ使用できます。

    v9b UltraSPARC III 拡張付きの SPARC-V9 ISA 用にコンパイルします。

        V9a バージョンの SPARC-V9 ISA に UltraSPARC III 拡張と VIS バージョン 2.0 を追加します。Solaris OS UltraSPARC III 環境で良好な パフォーマンスを得るためのコードを生成します。結果の .o オブジェクト ファイルは SPARC-V9 ELF64 形式であり、同じ形式の SPARC-V9 オブジェクトファイルだけとリンクできます。結果の実行可能ファイルは、 64 ビット有効な Solaris OS 環境が動作しており、64 ビット カーネルを持つ UltraSPARC III プロセッサ上だけで実行できます。

        -xarch=v9b は、64 ビット有効な Solaris OS 環境でコンパイルするときだけ使用できます。

    また、次のことにも注意してください。

    o   SPARC 命令セットアーキテクチャ V7、V8 および V8a はすべて上位バイナリ互換です。

    o   v8plus と v8plusa でコンパイルしたオブジェクトバイナリファイル (.o) は、 SPARC V8plusa 互換プラットフォーム上でのみ、一緒にリンク および実行できます。

    o   v8plus、 v8plusa、 および v8plusb でコンパイルしたオブジェクトバイナリファイル (.o) は、SPARC V8plusb 互換プラットフォーム上でのみ、一緒にリンクおよび実行できます。

    o   -xarch には、UltraSPARC 64 ビット Solaris OS 環境でのみ、 v9、v9a、 および v9b の値を指定できます。

    o   v9 と v9a でコンパイルしたオブジェクトバイナリファイル (.o) は、 SPARC V9a 互換プラットフォーム上でのみ、一緒にリンクおよび実行できます。

    o   v9、 v9a、 および v9b でコンパイルしたオブジェクトバイナリファイル (.o) は、 SPARC V9b 互換プラットフォーム上でのみ、一緒にリンクおよび実行できます。

        どの場合でも、初期のアーキテクチャでは、生成された実行可能ファイルの 実行速度がかなり遅くなる可能性があります。また、4 倍精度 (REAL*16 と long double) の浮動小数点命令は初期の多くの命令セットアーキテクチャ でも使用できますが、コンパイラは、それらの命令を生成した コードで使用しません。

    x86 プラットフォーム用の値:

    値   意味

    generic
        命令セットを Intel x86 アーキテクチャ用に制限します。 デフォルトです。

    native
        このシステムで良好なパフォーマンスが得られるように コンパイルします。このオプションは 大きなパフォーマンスの低下もなく、たいてのプロセッサで 良好なパフォーマンスを得るのに最適な命令セットを使用します。 新しいリリースのたびに、 「最適」な命令セットの定義は、適宜調整されることがあります。

    386 命令セットを Intel 386/486 アーキテクチャ用に制限します。

    pentium_pro
        命令セットを pentium_pro アーキテクチャ用に制限します。

    sse pentium_pro 命令セットに SSE 命令セットを追加します。

    sse2
        pentium_pro 命令セットに SSE2 命令セットを追加します。

    x86 に関する特記事項
        Solaris x86 SSE/SSE2 Pentium 4 プラットフォームで実行 するために -xarch={sse|sse2} を付けて コンパイルしたプログラムは、SSE/SSE2 対応のプラットフォーム でのみ実行する必要があります。SSE/SSE2 に対応していない プラットフォーム上でそのようなプログラムを実行すると、 セグメント例外が発生したり、明示的な警告メッセージなしに 不正な結果が発生することがあります。SSE/SSE2 でコンパイル されたバイナリが SSE/SSE2 に対応していないプラットフォームで 実行されることのないようにするための OS およびコンパイラに 対するパッチが、後日提供されるかもしれません

        Pentium 4 互換のプラットフォームの場合、Solaris 9 update 6 以降の OS リリースは SSE/SSE2 に対応しています。これより 前のバージョンの Solaris OS は SSE/SSE2 に対応していません。

        このことは、.il インラインアセンブリ言語関数を 使用しているプログラムや、SSE/SSE2 命令を利用している
          __asm() アセンブラコードにも当てはまります。

        コンパイルとリンクを別々に行う場合は、必ずコンパイラを 使ってリンクし、-xarch={sse|sse2} で 適切な起動ルーチンがリンクされるようにしてください。

        x86 の浮動小数点レジスタのサイズが 80 バイトであるため、x86 上と SPARC 上での 算術演算結果が異なることがあります。こうした違いが出ないようにするには、 -fstore オプションを使用してください。あるいは、ハードウェアが SSE2 をサポートしている 場合は、 -xarch=sse2 を付けてコンパイルしてください。

    デフォルト:

    -xarch=isa を指定しない場合、 SPARC プラットフォームでは -xarch=v8plus x86 プラットフォームでは -xarch=386
     と見なされます。

    相互の関連性:
        このオプションは単体でも使用できますが、 -xtarget オプションの展開の一部でもあります。したがって、特定の -xtarget オプションによって設定された -xarch の値を変更するためにも使用できます。たとえば、 -xtarget=ultra2 は -xarch=v8 -xchip=ultra2 -xcache=16/32/1:512/64/1 に 展開されます。次のコマンドでは、 -xarch=v8plusb は、 -xtarget=ultra2 の展開で設定された -xarch=v8 を変更します。

        example% f95 -xtarget=ultra2 -xarch=v8plusb ...

    警告: このオプションを最適化と一緒に使用するとき、適切な選択をした場合、 指定されたアーキテクチャ上で良好な実行可能ファイルのパフォーマンス を得ることができます。しかし、適切な選択をしなかった場合、パフォーマンス が著しく低下するか、あるいは、作成されたバイナリプログラムが 目的のターゲットプラットフォーム上で実行できない可能性があります。

-xassume_control[=a[,a]...]
    ASSUME プラグマを制御するパラメータを設定します。

    このフラグを使用すると、コンパイラによる、ソースコードの ASSUME プラグマの取り扱いを制御できます。

    ASSUME の説明については『Fortran ユーザーズガイド』を 参照してください。

    ASSUME プラグマによって、コンパイラがよりよい最適化を行なえるようにするために利用できる特別な情報を、プログラマが表明できます。この表明には確率を指定できます。確率が「0」か「1」のものは certain で示し、その他は non-certain であるとみなされます。

    この先の分岐が発生するかどうか、整数値または式の範囲、この先の DO ループの実行回数などといった表明は、その確率、正確性を指定して行なうことができます。

    認識できるサブオプションは次のとおりです。

    optimize
        ASSUME プラグマでの表明は、そのプログラムの最適化に影響を与えます。

    check
        コンパイラが、certain と指定された表明の正しさをチェックする コードを生成し、その表明の違反について実行時メッセージを出します。 fatal が併せて指定されていなければ、プログラムは続行します。

    fatal
        check とともに使用されると、certain が指定された表明に違反が発生した 場合、プログラムは終了します。

    retrospective[:d]
        パラメータ d は耐性値でオプションで指定でき、その値は 「1」より小さい正の実定数でなければなりません。デフォルトは 「.1」です。retrospective によって、 すべての表明についてその真偽がカウントされるようコードが コンパイルされます。耐性値 d を越えた表明はプログラム終了時の 出力に記載されます。

    %none
        ASSUME プラグマをすべて無視します。

    コンパイラのコマンド行に指定されなかった場合、デフォルトは次のとおりです。 -xassume_control=optimize
    これは、コンパイラは ASSUME プラグマを認識して最適化に反映するけれども、チェックはまったく行なわれないという意味です。

    パラメータを付けないで指定された場合は、 -xassume_control は次のような意味になります。
    -xassume_control=check,fatal
    この場合、コンパイラは certain である ASSUME プラグマを すべて受け付けますが、最適化には反映されません。表明が無効であれば、 プログラムは終了します。

-xautopar
    (SPARC) -autopar と同義です。

-xcache=c
    オプティマイザ用のキャッシュを定義します。

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

    c は、次の 1 つでなければなりません。
    o generic
    o native
    o s1/l1/a1
    o s1/l1/a1:s2/l2/a2
    o s1/l1/a1:s2/l2/a2:s3/l3/a3

    si 、 li 、および ai は、次のように定義されています。

    si  レベル i におけるデータキャッシュのサイズ (キロバイト)

    li  レベル i におけるデータキャッシュの行サイズ (バイト)

    ai  レベル i におけるデータキャッシュの結合規則

    このオプションは、オプティマイザが使用できるキャッシュの属性を指定します。どのキャッシュの属性が使用されるかは保証されません。

    このオプションは単独でも使用できますが、 -xtarget オプションを展開したものの一部です。主に、 -xtarget オプションで指定された値を無効にする (変更する) 場合に使用します。

    -xcache の値は、次のとおりです。

    generic
        ほとんどのプラットフォームでよいパフォーマンスを得るためのキャッシュの 属性を定義します。これはデフォルトです。

    native
        当該ホストプラットフォームで良好なパフォーマンスを得られるようにキャッシュ特性を定義します。

    s1/l1/a1
        レベル 1 のキャッシュ属性を定義します。

    s1/l1/a1:s2/l2/a2
        レベル 1 と 2 のキャッシュ属性を定義します。

    s1/l1/a1:s2/l2/a2:s3/l3/a3
        レベル 1、2、および 3 のキャッシュ属性を定義します。

-xcg89
    (SPARC) -cg89 と同義です。

-xcg92
    (SPARC) -cg92 と同義です。

-xcheck=v
    特別な実行時チェックを実行します。

    v は以下から選択します。

    %all %none stkovf no%stkovf init_local no%init_local

    %all は特別な実行時チェックを有効にします。一方、 %none はこれを無効にします。デフォルト ( -xcheck がコマンド行に指定されなかった場合) は -xcheck=%none となります。

    次のように、サブオプションは複数をコンマで区切って指定できます。
           -xcheck=no%stkovf,init_local

    -xcheck=stkovf
        実行時にスタックオーバーフローを検出します。 -xcheck=stkovf を使用してコンパイルを行うと、各ルーチンエントリごとにコードが生成され、スレッドスタックオーバーフローが検査されます。

        -xcheck=no%stkovf は、スタックオーバーフローチェックを無効にします。

        デフォルトでは、実行時スタックオーバーフローチェックは行われません。

        スタックオーバーフローが検出されると、SIGSEGV 障害が発生します。

        -xcheck=stkovf を使用してコンパイルを行う場合、すべてのスタックオーバーフロー状況が検出される保証はありません。このオプションを使用せずにコンパイルされたルーチンでスタックオーバーフローが発生する可能性があるからです。未検出のスタックオーバーフローは、近傍スレッドのスタックでデータを破壊する可能性があります。

    -xcheck=init_local
        局所変数の特別な初期化を実行します。

        このオプションが指定されると、プログラムで値が 割り当てられる前に使用された場合に算術例外を引き起こす可能性のある 局所変数を、コンパイラはある値に初期化します。 ALLOCATE 文で割り当てられたメモリもこの方法で初期化されます。

        SAVE 変数、モジュール変数、 COMMON ブロック内の変数は初期化されません。 no%init_local によってこの初期化は無効になります。これはデフォルトです。

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

    このオプションは、ターゲットプロセッサを指定することに よって命令タイミングのプロパティを指定します。

    このオプションは単独でも使用できますが、 -xtarget オプションを展開したものの一部です。主に -xtarget オプションで指定された値を無効にする (変更する) 場合に使用します。

    次のような影響があります。

    o   命令の順序 (つまり、スケジューリング)

    o   コンパイラが飛越しを使用する方法

    o   意味的に等しい代替が利用できる場合に使用する命令

    SPARC で一般的な -xchip
     値は次のとおりです。

        ultra
            UltraSPARC(TM) チップ向けに最適化します。

        ultra2
            UltraSPARC II チップ向けに最適化します。

        ultra2e
            UltraSPARC IIe チップ向けに最適化します。

        ultra2i
            UltraSPARC IIi チップ向けに最適化します。

        ultra3
            UltraSPARC III チップ向けに最適化します。

        ultra3cu
            UltraSPARC IIIcu チップ向けに最適化します。

        ultra3i
            UltraSPARC IIIi チップ向けに最適化します。

        ultra4
            UltraSPARC IV チップ向けに最適化します。

        generic
            サポートされている大部分の SPARC プラットフォームで 良好なパフォーマンスが得られるように最適化します。 (コンパイラデフォルト)。

        native
            現在のホストプラットフォームでよいパフォーマンスが得られるよう、 最適化を行ないます。

    あまり一般的でない SPARC プロセッサ名:

        super
            SuperSPARC チップ向けに最適化します。

        super2
            SuperSPARC II チップ向けに最適化します。

        micro
            MicroSPARC(TM) チップ向けに最適化します。

        micro2
            MicroSPARC II チップ向けに最適化します。

        hyper
            HyperSPARC(TM) チップ向けに最適化します。

        hyper2
            HyperSPARC II チップ向けに最適化します。

    x86 プラットフォームでの -xchip の値は次のとおりです。

        386 Intel 386 向けに最適化します。

        486 Intel 486 向けに最適化します。

        pentium
            Pentium 向けに最適化します。

        pentium_pro
            Pentium Pro 向けに最適化します。

        pentium3
            Pentium III 向けに最適化します。

        pentium4
            Pentium 4 向けに最適化します。

        generic
            大部分の x86 プラットフォーム向けに向けに最適化します。

        native
            このホストプロセッサ向けに最適化します。

    詳細は、『Fortran ユーザーズガイド』を参照してください。

-xcode=v
    (SPARC) コードアドレス空間を指定します。

    -xcode の値は、次のとおりです。

    abs32
        32 ビット絶対アドレスを生成します。
        コード、データ、および bss を合計したサイズは 2**32 バイトに 制限されます。これは 32 ビットアーキテクチャ ( -xarch=generic,v8,v8a,v8plus,v8plusa ) でデフォルトです。

    abs44
        44 ビット絶対アドレスを生成します。
        コード、データ、および bss を合計したサイズは 2**44 バイトに制限されます。 64 ビットアーキテクチャ (-xarch=v9,v9a,v9b) だけで利用できます。

    abs64
        64 ビット絶対アドレスを生成します。
        64 ビットアーキテクチャ (-xarch=v9,v9a,v9b) だけで利用できます。

    pic13
        位置独立コード (スモールモデル) を生成します。
        -pic と同義です。32 ビットアーキテクチャでは最大 2**11 まで、 64 ビットアーキテクチャでは最大 2**10 までの固有の外部シンボルを 参照できます。

    pic32
        位置独立コード (ラージモデル) を生成します。
        -PIC と同義です。32 ビットアーキテクチャでは最大 2**30 まで、 64 ビットアーキテクチャでは最大 2**29 までの固有の外部シンボルを 参照できます。

    SPARC V8 と V7 では、デフォルトは -xcode=abs32 です。 SPARC V9 と UltraSPARC V9 (-xarch=v9,v9a,v9b) では、 デフォルトは -xcode=abs64 です。

    位置独立コード:

    動的共用ライブラリの作成時に -xcode=pic13 または -xcode=pic32 を使用すると、実行時のパフォーマンスが向上します。

    動的実行ファイル内のコードは通常、メモリー内の固定アドレスと結合されていますが、位置独立コードはプロセスのアドレス空間内のどこにでもロードできます。

    位置独立コードを使用すると、グローバルオフセットテーブル全体の間接参照として再配置可能参照が生成されます。共用オブジェクト内の頻繁にアクセスされる項目は、-xcode=pic13 または -xcode=pic32 を使用してコンパイルすると、位置独立コード以外のコードに必要な多数の再配置が不要となるメリットがあります。

    グローバルオフセットテーブルのサイズは、SPARC では 8K バイトに制限されています。

    -xcode={pic13|pic32} には、2 つのパフォーマンス損失があります。

        o   -xcode=pic13 または -xcode=pic32 を使用してコンパイルされたルーチンは、共用ライブラリの大域変数または静的変数へのアクセスに使用されるグローバルオフセットテーブルをポイントするために、レジスタ設定のエントリ時に若干の余分な命令を実行します。

        o   大域変数または静的変数にアクセスするたびに、グローバルオフセットテーブル全体の余分な間接メモリー参照が必要です。pic32 を使用してコンパイルを行う場合、広域メモリーおよび静的メモリーの参照ごとに 2 つの追加命令があります。

        上述のパフォーマンス損失を検討する場合、-xcode=pic13 または -xcode=pic32 を使用すると、ライブラリコードの共有の効果により、システムのメモリー所要量が大幅に削減されることに注意してください。-xcode=pic13 または -xcode=pic32 を使用してコンパイルされた共用ライブラリ内のコードのすべてのページは、このライブラリを使用するすべてのプロセスで共用できます。共用ライブラリ内のコードのページに 1 つでも非 pic (すなわち絶対) メモリー参照が含まれると、そのページは非共用となり、ライブラリを使用するプログラムが実行されるたびにそのページのコピーを作成する必要があります。

        nm <ファイル>.o | grep _GLOBAL_OFFSET_TABLE_

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

        -xcode=pic13 または -xcode=pic32 のどちらを使用するか決定する 際は、elfdump -c (詳細は elfdump(1) のマニュアルページを参照) を使って大域オフセットテーブル (GOT: Global Offset Table) のサイズを調べ、 セクション見出し sh_name: .got を確認します。sh_size の値が GOT の サイズを示しています。GOT が 8,192 バイトに満たない場合は -xcode=pic13、 そうでない場合は -xcode=pic32 を指定します。

        一般に、-xcode の使用方法を決める際は、次の指針に従います。

        o 実行可能ファイルを構築する場合は、-xcode=pic13 と-xcode=pic32 のどちらも使わない。

        o 実行可能ファイルへのリンク専用のアーカイブライブラリを構築する場合は、-xcode=pic13 と -xcode=pic32 のどちらも使わない。

        o 共有ライブラリを構築する場合は、まず -xcode=pic13 を使い、GOT サイズが 8,192 バイトを超えたら、-xcode=pic32 を使う。

        o 共有ライブラリへのリンク用のアーカイブライブラリを構築する場合は、-xcode=pic32 だけ使う。

        Solaris OS マニュアル 『リンカーとライブラリ』を参照してください。

-xcommonchk[={yes|no}]
    共通ブロック不一致の実行時検査を有効にします。

    このオプションは、TASK COMMON と並列化 (-explicitpar または -parallel) を使用するプ ログラム向けのデバッグ支援ツールとして提供されています (task common プラグマを参照してくだ さい)。

    通常は、矛盾した TASK COMMON 宣言の実行時検査は無効になっています。-xcommonchk=yes を指定してコンパイルすると、実行時検査が有効になります。

    ある共通ブロックが 1 つのソースモジュールで正規の共通ブロックとして宣言され、別の場所で TASK COMMON プラグマ内に出現する場合、プログラムは停止し、最初の不一致を示すメッセージが出力されます。

    このオプションによって呼び出される実行時検査はプログラムパフォーマンスを低下させるため、 プログラムの開発とデバッグ時にだけ使用してください。

    -xcommoncheck だけの指定は -xcommoncheck=yes と同じです。

-xcrossfile[=n]
    複数ソースファイルに渡る最適化とインライン化を有効にします。

    このオプションが指定される場合、n は 0、または 1 です。

    通常、コンパイラの解析範囲はコマンド行上の個々のファイルに限定されます。たとえば、 -O4 の自動インライン化は、同じソースファイル内で定義および参照された副プログラムに限定されます。

    -xcrossfile が指定されると、コンパイラはコマンド行に指定されたすべてのファイルを、それらが単一のソース ファイルとして結合されているかのように解析します。

    -xcrossfile が有効になるのは、 -O4 または -O5 と共に使用される場合だけです。 -xcrossfile フラグは、 -S と共にコンパイルされた場合無視されます。

    アセンブリ言語の .s ソースファイルは、ファイルをまたいだ解析からは 除外されます。

    このコンパイルから生成されるファイルは (インライン化が原因で) 相互依存の関係にあり、プログラム にリンクされる際には 1 つの単位として使用されなければなりません。ルーチンのどれかが変更された ためにファイルを再コンパイルする場合には、すべてのファイルを再コンパイルする必要があります。

    このオプションを使用すると、結果的に Makefile の構造に作用します。

    デフォルト (コマンド行で指定が行われない場合) は、 -xcrossfile=0 で、複数のファイルを対象とした最適化は行われません。 -xcrossfile は -xcrossfile=1 に同じです。

-xdebugformat={stabs|dwarf}
    Sun Studio コンパイラでは、デバッガ情報の形式が "stabs" 形式から "dwarf" 形式へと移行されようとしています。 このリリースのデフォルト値は
     -xdebugformat=stabs です。

    デバッグ情報を読み取るソフトウェアを管理している場合、 stabs 形式から dwarf 形式にツールを移行させるかどうかを 選択できます。

    このオプションは、ツールの移植のために新しい形式に アクセスする手段として 利用してください。デバッガ情報を読み取るソフトウェア管理しているか、 特定のツールで、これらの形式のいずれかのデバッガ情報が 必要となるのでない限り、 このオプションを使用する必要はありません。

    -xdebugformat=stabs は、stabs 標準形式でデバッグ情報を 生成します。

    -xdebugformat=dwarf は、dwarf 標準形式でデバッグ情報を 生成します。

    -xdebugformat を指定しなかった場合は、 -xdebugformat=stabs と見なされます。 引数なしでこのオプションを指定すると エラーになります。

    このオプションは、-g オプションを使って記録された データに影響します。 -g なしでも、少量のデバッグ情報が記録され、 その情報の形式は、このオプションで制御されます。 このため、-xdebugformat は、-g が 使用されなかい場合でも影響します。

    dbx およびパフォーマンスアナライザは、stabs および dwarf 形式の両方を認識するため、このオプションを使用しても、 どちらのツールの機能にも影響はありません。

    これは、過渡的なインタフェースです。このため、 マイナーリリースであっても、 リリースがのたびに互換性のない方法で変更が発生する可能性があります。

    また、stabs と dwarf のどちらも、フィールドまたは値の細部仕様 が進化しています。

-xdepend
    (SPARC) -depend と同義です。

-xdryrun
    -dryrun と同義です。

-xexplicitpar
    (SPARC) -explicitpar と同義です。

-xF Sun Studio パフォーマンスアナライザによる関数レベルの並べ替えを許可します。

    コンパイラ、アナライザ、およびリンカーを使用してコアイメージの関数 (副プログラム) を並べ替えることを許可します。 -xF オプションを指定してコンパイルし、続いてアナライザを実行すると、メモリー内の関数がどのように使用されているかに応じて、それらの関数の順序を最適化するマップファイルを生成できます。リンカーの -Mmapfile オプションを使用し、実行ファイルを構築する後続のリンクに対して、このマップを使用するように指示できます。これにより、実行ファイルの各関数が個別のセクションに置かれます。

    メモリー内の副プログラムの並べ替えは、アプリケーションテキストのページフォルトタイムがアプリケーションタイムの大部分を消費している場合に便利です。 そうでない場合は、並べ替えによってアプリケーションの全体的な パフォーマンスが向上しないかもしれません。Performance Analyser は、 Sun Studio の一部です。 アナライザの詳細については、マニュアル 『プログラムのパフォーマンス解析』 を参照してください。

-xhasc[={yes|no}]

    実引数リストで、ホレリス定数を文字列として扱う。

    -xhasc=yes を指定すると、コンパイラは、副プログラム呼び出しで実引数として出現するホレリス定数を文字列として扱います。 これは、デフォルトで、Fortran 77 規格でコンパイルします。

    -xhasc=no を指定すると、ホレリス定数は、副プログラム呼び出しリストで型なし値として扱われます。

    このフラグは、古い Fortran プログラムをポートするのを助けます。 呼び出した副プログラムの引数が INTEGER または CHARACTER 以外の他の型であると想定される場合、 -xhasc=no を指定して、 ホレリス定数で副プログラムを呼び出すルーチンをコンパイルしてください。

-xhelp=h
    オプションの要約または README ファイルを表示します。

    h は、 readme または flags のどちらかです。

    readme: オンラインの README ファイルを表示します。
    flags: コンパイラのフラグ (オプション) を表示します。

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

-xia[={widestneed|strict}]
    (SPARC) 区間演算の拡張機能を有効にし、適切な浮動小数点環境を設定します。

    区間演算は、Fortran 95 における数値計算技法の拡張機能です。詳細については、Fortran 95 のマニュアルを参照してください。

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

    -xia と -xia=widestneed は、次のように展開されます:
        -xinterval=widestneed -ftrap=%none -fns=no -fsimple=0

    -xia=strict 次のように展開されます:
        -xinterval=strict -ftrap=%none -fns=no -fsimple=0

        詳細については『Fortran 95 区間演算プログラミングリファレンス』を参照してください。

-xildoff

    インクリメンタルリンカー ild を使用不可にします。 これがデフォルトです。

    -xildon を指定すると、このデフォルトが無効になります。

-xildon
    インクリメンタルリンカー ild を使用可能にします。

    このオプションは、 -g が使用されていて、 -G の指定がなく、 コマンド行にオブジェクトファイルしかない場合に ild
     を有効にします。

-xinline=rl
    -inline=rl と同義です。

-xinterval[={widestneed|strict|no}]
    (SPARC) 区間演算の拡張機能の処理を有効にします。

    区間演算は、Fortran 95 における数値計算技法の拡張機能です。詳細については、Fortran 95 のマニュアルを参照してください。

    このフラグは、許可される式評価構文を制御します。

    -xinterval が値なしで指定されると、デフォルトの widestneed が使用されます。

    no が指定されると、区間演算は有効になりません。

    widestneed
        混在モードの式に含まれるすべての非区間変数と非区間リテラルを、その式における最大幅の区間データ型に拡張します。

    strict
        型または長さが混在した区間式を禁じます。区間の型と長さの変換はすべて明示的でなければなりません。

-xipo[={1|0|2}]
    (SPARC) 内部手続きの最適化を行います。

    内部手続き解析パスを起動して、プログラム全体を最適化します。 -xcrossfile と異なり、 -xipo はリンクステップのすべてのオブジェクトファイルを最適化し、コンパイルコマンドのソースファイルだけに限定しません。

    解析と最適化は、 -xipo でコンパイルされたオブジェクトファイルに限定されます。

    -xipo=0 は、内部手続き解析を無効にします。
    -xipo=1 は、ソースファイル全体のインライン化を有効にします。
    -xipo=2 は、メモリー割り当ておよびメモリー最適化を含むプログラム全体の検出と解析を追加し、キャッシュのパフォーマンスを向上させます。

    デフォルトは、 -xipo=0 です。

    値を指定しない場合、 -xipo=1
     とみなされます。

    -xipo=2 を付けてコンパイルすると、 -xipo=2 を付けずにコンパイルされた関数やサブルーチン (たとえばライブラリ)から -xipo=2 を付けてコンパイルされた関数やサブルーチンへの呼び出しはありません。 そうでない場合は、呼び出された関数の使用法に関するコンパイラの前提が 間違っている可能性があります。

    -xipo を使用するケースについての詳細は、 Fortran 95 ユーザーズガイド を参照してください。

    別々のステップでコンパイルとリンクを行った場合、両方のステップに -xipo を指定して、有効化する必要があります。

    ライブラリは、 -xipo を指定してコンパイルされていた場合であっても、ファイルをまたいだ内部手続き解析 の対象となることはできません。 また、アセンブリ言語の .s ソースファイルは、解析から除外されます。

    -xipo フラグは、-Sと共にコンパイルされた場合無視されます。

    -xipo に関する追加情報:
    は、少なくとも最適化レベル -xO4 を必要とします。

    -xcrossfile と共に使用しないでください。 共に使用すると、コンパイルエラーが発生します。

    -xipo を指定しないでコンパイルしたオブジェクトは、このフラグを使用してコンパイルされていないオブジェクトに自由にリンクできます。

    -xjobs も参照してください。

-xipo_archive[={none|writeback|readonly|none}]
    (SPARC) ファイル相互の最適化でアーカイブ (.a) ライブラリを 取り込むことを可能にします。

    writeback
        コンパイラは、実行可能ファイルを生成する前に、 -xipo を付けてコンパイルされた、 アーカイブライブラリ (.a) 内のオブジェクトファイルを使って、 リンカーに渡すオブジェクトファイルを最適化します。 コンパイル中に最適化された、このライブラリ内の オブジェクトファイルは、その最適化されたバージョンに 置き換えられます。

    readonly
        コンパイラは、実行可能ファイルを生成する前に、-xipo を付けてコンパイルされた、アーカイブライブラリ (.a) 内の オブジェクトファイルを使って、リンカーに渡す オブジェクトファイルを最適化します。

    none
         アーカイブファイルの処理はありません。

    -xipo_archive の値が指定されていない場合、コンパイラは -xipo_archive=none と見なします。

-xjobs=n
    (SPARC) 複数のプロセッサを使用してコンパイルします。

    -xjobs オプションを使用すると、コンパイラが作業を完了するために 作成するプロセスの数を設定できます。このオプションによって、 マルチ CPU のマシンにおける構築時間を削減できます。 現在、-xjobs は -xipo オプションととも指定した場合だけに 機能します。 -xjobs=n を指定した場合、n は、内部手続きオプティマイザが さまざまなファイルをコンパイルするために起動できる、コードジェネレータと なるインスタンスの最大数です。

    一般に n の安全な値は利用可能なプロセッサ数の 1.5 倍です。 利用可能なプロセッサの数の何倍もの数を指定すると、生成された ジョブ間でのコンテキスト切り替えにオーバーヘッドがかかり、 パフォーマンスが劣化します。また値をあまり大きくすると、 スワップ空間などのシステムリソースの制限が使い切られてしまう可能性が あります。

    -xjobs は必ず値を指定して使います。値を指定しないと エラー診断が出て、コンパイルが異常終了します。

    コマンド行に -xjobs の複数のインスタンスを指定すると、 もっとも右にあるインスタンスに達するまで、前の値が 上書きされていきます。

    次は、プロセッサを 2 つ持つシステム上において、 -xjobs オプションを指定してコンパイルする例で、 同じコマンドでこのオプションを指定しない場合よりも 短時間でコンパイルできます。

    example% f95 -xipo -xO4 -xjobs=3 t1.f t2.f t3.f

-xknown_lib=lib
    既知のライブラリの呼び出しを認識します。

    このフラグが指定されると、コンパイラは特定の既知のライブラリ参照を組み込みとして扱い、ユーザーが指定するバージョンを無視します。これによりコンパイラは、ライブラリの特殊な知識に基づいてライブラリルーチンの呼び出しを最適化することができます。

    lib には、以下のキーワードのいずれか 1 つを指定するか、複数をコンマで区切って指定できます。

       blas
       blas1
       blas2
       blas3
       組み込み関数

    -xknown_lib=[blas | blas1 | blas2 | blas3 ]
        コンパイラは以下の BLAS ライブラリルーチンへの呼び出しを認識し、 Sun Performance Library 実装に対して適切になるよう、自由に最適化します。

        -xknown_lib=blas1 が認識する BLAS1 ルーチン:

        caxpy   ccopy   cdotc    cdotu   crotg
        cscal   csrot   csscal   cswap   dasum
        daxpy   dcopy   ddot     drot
        drotg   drotm   drotmg   dscal   dsdot
        dswap   dnrm2   dzasum   dznrm2  icamax
        idamax  isamax  izamax   sasum   saxpy
        scasum  scnrm2  scopy    sdot    sdsdot
        snrm2   srot    srotg    srotm   srotmg
        sscal   sswap   zaxpy    zcopy   zdotc
        zdotu   zdrot   zdscal
        zrotg   zscal   zswap
        -xknown_lib=blas2 が認識する BLAS2 ルーチン:

        cgemv   cgerc   cgeru   ctrmv   ctrsv
        dgemv   dger    dsymv   dsyr    dsyr2
        dtrmv   dtrsv   sgemv   sger
        ssymv   ssyr    ssyr2   strmv   strsv
        zgemv   zgerc   zgeru   ztrmv   ztrsv
        -xknown_lib=blas3 が認識する BLAS3 ルーチン:

        cgemm   csymm   csyr2k  csyrk   ctrmm
        ctrsm   dgemm   dsymm   dsyr2k  dsyrk
        dtrmm   dtrsm   sgemm   ssymm   ssyr2k
        ssyrk   strmm   strsm   zgemm   zsymm
        zsyr2k  zsyrk   ztrmm   ztrsm

        これらはどのように組み合わせて指定することも可能です。たとえば、
           -xknown_lib=blas2,blas3
        は BLAS2 ルーチンと BLAS3 ルーチンだけを選択します。

        BLAS ルーチンすべてを選択するには
           -xknown_lib=blas
        と指定します。これは次の指定と同じことです。
           -xknown_lib=blas1,blas2,blas3

        コンパイラは、これらのライブラリルーチンのユーザー指定バージョンを無視して、Sun Performance Library 内の BLAS ルーチンへリンクします。

    -xknown_lib=intrinsics
        intrinsics の指定には、Fortran 95 組み込みの明示的 EXTERNAL 宣言を無視する効果があり、ユーザー指定の組み込みルーチンは無視されます。

-xlang=f77
    (SPARC) 適切な実行時ライブラリをインクルードして、既存の Fortran 77 のための正しい実行時環境が確実に設定されるようにします。

    相互の関連性:

    -xlang=f77 オプション指定には、 f77compat ライブラリとのリンクが暗黙的に含まれているので、 Fortran 77 オブジェクトファイルと Fortran 95 オブジェクトファイルを 簡単にリンクできます。 -xlang=f77 を使用すると、確実に正しい実行時環境を設定できます。

    警告:

    -xnolib は -xlang と組み合わせて使用しないでください。

    Fortran オブジェクトファイルと C++ オブジェクトファイルを 混在させる場合は、C++ コンパイラとリンクして、 -xlang=f95 を指定します。

    -mt flag 並列 Fortran オブジェクトと C++ オブジェクトを混在させる場合は、 リンク行に -mt フラグを指定する必要があります。

-xlibmil
    -libmil と同義です。

-xlibmopt
    最適化された 数学ルーチンのライブラリを使用します。

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

    このオプションを使用する場合は、デフォルトの丸めモードの -fround=nearest が前提であり、必須です。

-xlicinfo
    ライセンス情報を表示します。

    インストールされた Sun Studio ソフトウェアのシリアル番号獲得情報を返します。

-xlic_lib=sunperf
    Sun Performance Library とリンクします。

    例 :
    f95 -o pgx -fast -pgx.f xlic_lib=sunperf

    libs はコンマで区切られたライブラリのリストです。

    -l と同様に、コマンド行のすべてのソースファイル名とオブジェクトファイル名 の後に指定しなければなりません。Sun Performance Library と リンクするときは、このオプションを指定する必要があります。

-xlinkopt[=level]
    (SPARC) 再配置可能オブジェクトファイルに対してリンク時最適化を実行します。

    ポストオプティマイザが、リンク時にバイナリオブジェクトコードに対して パフォーマンス上の高度な最適化を多数、実行します。 level の値で、実行する最適化のレベルを設定します。 値は 0、1、2 のいずれかです。

    最適化のレベルは以下のとおりです。
    0   ポストオプティマイザは無効です (これはデフォルトです)。
    1   命令キャッシュカラーリングおよび分岐最適化など、 制御フロー分析に基づいて、リンク時に最適化します。
    2   デッドコードの除去とアドレス計算の簡素化など、 リンク時により詳細なデータフロー分析を実行します。

    レベルパラメータを指定せずに -xlinkopt を指定した場合、 -xlinkopt=1 という意味になります。

    こうした最適化はオブジェクトバイナリコードを分析して リンク時に実行されます。このオブジェクトファイルは 書き直されませんが、結果として出力される実行可能コードは 元のオブジェクトコードとは異なる場合があります。

    このオプションはプログラム全体をコンパイルするときに、 プロファイルのフィードバックとともに使用すると 最も効果的です。

    ステップを分けてコンパイルする場合には、 -xlinkopt をコンパイルとリンク、双方のステップに指定する必要があります。

      % f95 -c -xlinkopt a.f95 b.f95
      % f95 -o myprog -xlinkopt=2 a.o b.o

    level パラメータはコンパイラがリンクする際だけに使われることに注意してください。 上記の例では、オブジェクトバイナリは暗黙のレベルである 1 でコンパイル されていますが、ポスト最適化レベルは 2 となっています。

    リンク時ポストオプティマイザはインクリメンタルリンカー ild とともに使えません。 -xlinkopt はデフォルトのリンカーを ld に設定します。インクリメンタルリンカーを -xildon で明示的に有効にすると、両方がともに指定されていれば -xlinkopt が無効になります。

    -xlinkopt を有効に使用できるようにするには、必ずしもすべてではありませんが、 少なくともプログラム内の一部のルーチンは、このオプションを使用して リンクする必要があります。それでも、 -xlinkopt 以外を使ってコンパイルされたオブジェクトバイナリに対しても、 一部の限定された最適化は実行されます。

    -xlinkopt はコンパイラコマンド行に指定された静的ライブラリからのコードを 最適化しますが、コマンド行に指定された 共用 (動的) ライブラリから取り込んだコードはスキップして最適化しません。 また、共用ライブラリ ( -G でコンパイル) を構築するときに -xlinkopt を使用することも可能です。

    リンク時ポストオプティマイザーは、実行時プロファイルのフィードバックと ともに使用されるともっとも効果的です。 プロファイリングによって、もっとも使用されている、あるいはもっとも 使用されていないコード部分が明らかになり、オプティマイザに対して それに従って最適化するよう指示が出されます。 このことは、リンク時に行なわれる最適なコード配置によって 命令キャッシュミスが削減できる大きなアプリケーションでは、 とくに重要です。 こうしたコンパイルは通常、次のようにして行ないます。

    % f95 -o progt -xO5 -xprofile=collect:prog file.f95
    % progt
    % f95 -o prog -xO5 -xprofile=use:prog -xlinkopt file.95

    プロファイルフィードバックの使用法についての詳細は、 -xprofile を参照してください。

    このオプションを指定してコンパイルすると、リンク時間が若干 長くなることにご注意ください。オブジェクトファイルのサイズも 大きくなりますが、実行可能ファイルのサイズは変わりません。 -xlinkopt と -g を指定してコンパイルすると、デバッグ情報も含まれるため、 実行可能ファイルのサイズは大きくなります。

-xloopinfo
    (SPARC) -loopinfo と同義です。

-xmaxopt[=n]
    最適化プラグマを有効にし、最大の最適化レベルを設定します。

    C$PRAGMA SUN OPT=m 指令によって指定される最適化レベルを nに制限します。 -xmaxopt フラグ上の n を超えるレベル m を指定する指令が出現する場合、コンパイラは n を使用します。

    値 n は、 -O 最適化レベルフラグの値 1 〜 5 に対応します。n の値は、他のオプションによって指定される最大の最適化レベルの値以上でなければなりません。次に適切な例を示します。

    f95 ... -O3 -xmaxopt=4

    フラグ -xmaxopt だけが指定されると、デフォルトの -xmaxopt=5 が使用されます。

-xmemalign[=ab]
    (SPARC) 最大メモリー整列および整列不正のデータアクセス時の 動作を指定します。

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

    コンパイル時に整列の決定が不可能なメモリーアクセスの場合は、 整列を想定して、必要なロード/ストア命令シーケンスを 生成する必要があります。

    -xmemalign フラグを使用すると、このような 決定不可能な状況において、コンパイラが想定すべきデータの 最大のメモリー整列を指定できます。このフラグは、整列不正の メモリーアクセスが発生した場合に実行時に従うべき エラー動作も指定します。

    値:

    値を指定する場合は、2 つの部分、数値の整列値 a と 英字の動作フラグ b を指定する必要があります。

    整列の a に指定できる値は次のとおりです。

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

    動作の b に指定できる値は次のとおりです。

    i   アクセスを解釈し、実行を継続します。
    s   シグナル SIGBUS を立てます。
    f   4 以下の整列に対してシグナル SIGBUS を立て、整列が 4 以下でない場合 はアクセスを解釈し、実行を継続します。

    デフォルト:

    -xmemalign
     フラグがない場合に最初に適用されるデフォルトは次のとおりです。

    最大のメモリー引き継ぎ整列と、不正に整列したデータアクセスの動作を指定します。

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

    コンパイル時に整列を決定できないメモリーアクセスの場合、コンパイラは必要な読み込み / 格納シーケンスを生成するために整列を想定しなければなりません。

    -xmemalign フラグを使用すると、このような決定不可能な状況において、コンパイラがデータの最大のメモリー配列を想定するように指定できます。このフラグは、不正に整列したメモリーアクセスが発生する場合に実行時に追跡されるエラー動作も指定します。

    値:

    値を指定する場合は、2 つの部分、数値で指定される整列値 a と英字で指定される動作フラグ b を指定する必要があります。

    整列の値 a には次の値を指定できます:

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

        動作の値 b には次の値を指定できます:

        i   アクセスを解釈し、実行を継続します。
        s   シグナル SIGBUS を立てます。
        f   4 以下の整列に対してシグナル SIGBUS を立て、整列が 4 以下でない場合はアクセスを解釈し、実行を継続します。

        デフォルト:

        -xmemalign フラグが出現しない場合に適用される最初のデフォルトは次のとおりです:

        -xmemalign=8i
        C および C++ の -xarch=v9、v9a の場合は -xmemalign=8s
        Fortran の -xarch=v9、v9a の場合は -xmemalign=8f

        値が指定されていない -xmemalign が出現する場合に適用される 2 番目のデフォルトは次のとおりです:

        すべてのプラットフォームとも -xmemalign=1i

        -xmemalign
         そのものは、特定のデータ整列を強制的に行わせるわけでは ないことに注意してください。 -dalign または -aligncommon を参照してください。

    -xnolib
        -nolib と同義です。

    -xnolibmil
        -nolibmil と同義です。

    -xnolibmopt
        -xlibmopt を取り消します。

        -fast と併用すると、最適化した数学ライブラリとのリンクを取り消します。

    -xO[n]
        -O[n] と同義です。

    -xopenmp
        (SPARC) -openmp と同義です。

    -xpad
        -pad と同義です。

    -xpagesize=n
        (SPARC) スタックおよびヒープの優先ページサイズを設定します。

        n の値は次のいずれかでなければなりません。
        8K 64K 512K 4M 32M 256M 2G 16G またはデフォルト

        対象となるプラットフォーム上の Solaris OS 環境で有効な ページサイズを指定する必要があります。 getpagesize(3C) を使用するとそのサイズがわかります。 有効なページサイズを指定しなかった場合、その要求は実行時に無視され、 何もメッセージは出されます。Solaris OS 環境では ページサイズ要求が尊重されることを保証していません。

        pmap(1) または meminfo(2) を使って、対象となるプラットフォームのページサイズを判断することが できます。

        -xpagesize=default を指定すると、このフラグは無視されます。 -xpagesize に引数を指定しない場合、 -xpagesize=default と同じことになります。

        このオプションは次のためのマクロです。
        -xpagesize_heap=n -xpagesize_stack=n

        この 2 つのオプションは -xpagesize と同じく、8K、 64K、512K、4M、32M、256M、2G、 16G、default を引数として受け付けます。 -xpagesize=n と指定して上記の 2 つのオプションに 同じ値を設定することができ、あるいはこれらを別々に指定して異なる 値に設定することも可能です。

        このフラグを使ってコンパイルすることは、 同じオプションを使って LD_PRELOAD 環境変数を mpss.so.1 に設定すること、またはプログラム実行前に 同じオプションを使って Solaris OS 9 コマンドの ppgsz(1) 実行するのと同様の効果があります。 詳細は Solaris OS 環境に関するマニュアルページを参照してください。

        注: この機能は Solaris OS 7 および 8 環境では利用できません。 このオプションは使ってコンパイルされたプログラムは、 Solaris 7 および Solaris OS 8 環境ではリンクできません。

    -xpagesize_heap=n
        (SPARC) ヒープのためのメモリのページサイズを設定します。

        n は 8K、64K、 512K、4M、32M、256M、2G、16G、 または default です。対象となるプラットフォームの Solaris OS 環境で有効なページサイズを指定しなければなりません。 この値は getpagesizes(3C) で確認できます。有効なページサイズを指定しなかった場合、その要求は 実行時に無視され、何もメッセージは出力れません。

        -xpagesize_heap=default と指定した場合、このフラグは無視されます。 -xpagesize_heap を指定して引数をつけなかった場合、 -xpagesize_heap=default と同じ意味になります。

        この機能は Solaris OS 7 および 8 環境で利用できません。

        詳細については -xpagesize を参照してください。

    -xpagesize_stack=n
        (SPARC) スタックためのメモリのページサイズを設定します。

        n は 8K、64K、 512K、4M、32M、256M、2G、16G、 または default です。対象となるプラットフォームの Solaris OS 環境で有効なページサイズを指定しなければなりません。 この値は getpagesizes(3C) で確認できます。有効なページサイズを指定しなかった場合、 その要求は実行時に無視され、何もメッセージは出力されません。

        -xpagesize_stack=default と指定した場合、フラグは無視されます。 -xpagesize_stack を指定して引数をつけなかった場合、 -xpagesize_stack=default と同じ意味になります。

        この機能は Solaris OS 7 および 8 環境では利用できません。

        詳細は -xpagesize を参照してください。

    -xparallel
        (SPARC) -parallel と同義です。

    -xpentium
        (x86) -xtarget=pentium と同じ

    -xpg
        -pg と同義です。

    -xpp={fpp|cpp}
        .F .F95 .F03 ファイルに使用するソースファイルプリプロセッサを選択します。

        デフォルトは fpp です。Fortran には fpp の使用が適しています。旧バージョンのコンパイラでは、 標準の C 言語プリプロセッサ cpp が使用されていました。 cpp を選択するには、 -xpp=cpp を指定します。

    -xprefetch[=a[,a]]
        (SPARC) UltraSPARC II など、先読み命令 (プリフェッチ) をサポートするアーキテクチャ上で先読み命令を使用および調整できるようにします。(-xarch=v8plus、v8plusa、v8plusb、v9、v9a、v9b、generic64、または native64)

        a は、次のいずれかの値でなくてはなりません。

        値   意味

        auto
            先読み命令を自動生成できるようにします。

        no%auto
            先読み命令を自動生成できないようにします。

        explicit
            明示的な先読みマクロを有効にします。

        no%explicit
            は、明示的な先読みマクロを無効にします。

        latx:factor
            コンパイラによるロード命令とストア命令に対する先読み命令の、 「潜在期間」の仮定値を、指定された因数 (factor) で調整します。factor は、 正の浮動小数点または整数でなければなりません。

            先読み命令の「潜在期間」とは、先読み命令が実行された時点から、 先読み命令の対象であるデータが実際にキャッシュに入れられる時点までの、 ハードウェアに起因する時間のずれを指します。

            コンパイラは、先読み命令の挿入位置と、先読みされたデータを 使用するロードまたはストアの命令文の位置がどれだけ離れているかを 確認して、先読みの潜在期間を仮定します。 注意 — 仮定される先読みの潜在期間は、ロード命令とストア命令では 異なる場合があります。

            コンパイラは、広範囲に渡るマシンおよびアプリケーションに対して適切に なるように、先読みのメカニズムを調整しています。このため現在の機能が、 すべてのマシンまたはアプリケーションで最良であるとは限りません。 メモリーを大量に消費するアプリケーション、特に大規模な複数のプロセッサで 実行するアプリケーションの場合は、先読みの潜在期間を示す値を増加させた方が、 パフォーマンスが向上する可能性があります。 先読みの潜在期間を増加させるには、 factor の値を 1 より大きい値にします。 0.5 から 2.0 の間の値にすると、ほぼ確実に最高のパフォーマンスが得られます。

            完全に外部のキャッシュに存在するデータベースを扱う アプリケーションの場合は、先読みの潜在期間を減少させた方が、 パフォーマンスが向上する可能性があります。 先読みの潜在期間を減少させるには、 factor の値を 1 より小さい値にします。

            latx:factor サブオプションを使用する場合は、まず factor の値を 1.0 に近い値に設定して、 対象のアプリケーションに対するパフォーマンスを調べます。 そして徐々にその値を変化させていき、パフォーマンスの変化を確認します。 最良のパフォーマンスが得られるまでテストを繰り返し、適切な factor の値を特定します。 factor の値を細かく変更した場合は、しばらくの間パフォーマンスの変化は まったく見られませんが、ある値で突然高くなります。続けて値を増加または減少 させていくと、パフォーマンスは再び下がります。

        yes -xprefetch=auto,explicit と同じです。 他のサブオブジェクトは指定できません。

        no  -xprefetch=no%auto,no%explicit と同じです。 他のサブオブジェクトは指定できません。

        -xprefetch 、 -xprefetch=auto 、または -xprefetch=yes と指定した場合、コンパイラは、生成するコード中に先読み命令 を必要に応じて挿入します。これにより、先読み命令 (プリフェッチ) をサポートする アーキテクチャ上でパフォーマンスが向上します。

        デフォルト:

        コマンド行で -xprefetch が指定されていない場合のデフォルトは、 -xprefetch=no%auto,explicit 、
         と見なされます。

        -xprefetch が指定されている場合だけ、 -xprefetch=auto,explicit 、
         と見なされます。

        引数なしで、または引数に auto あるいは yes を指定して -xprefetch を使用し、明示的に上書きしない限り、 no%auto がデフォルトです。 たとえば、 -xprefetch=explicit は、 -xprefetch=explicit,no%auto と同じです。

        no%explicit あるいは no を指定して明示的に上書きしない限り、デフォルトで explicit とみなされます。 たとえば、 -xprefetch=auto は、 -xprefetch=auto,explicit と同じです。

        -xprefetch または -xprefetch=yes など、自動先読みが有効だが 遅延要素が指定されない場合は、 latx:1.0 とみなされます。

        相互の関連性:

        -xprefetch=explicit が指定されると、コンパイラは次の指令を認識します:
        $PRAGMA SPARC_PREFETCH_READ_ONCE (address)
        $PRAGMA SPARC_PREFETCH_READ_MANY (address)
        $PRAGMA SPARC_PREFETCH_WRITE_ONCE (address)
        $PRAGMA SPARC_PREFETCH_WRITE_MANY (address)

        -xchip 設定は、「潜在期間」の仮定値の決定と、それによる latx:factor 設定の結果に影響します。

        latx:factor サブオプションは、自動先読みが可能な場合のみ、有効です。 つまり、 auto と共に使用しない限り、 latx:factor は無視されます。

        警告:

        明示的な先読みは、測定方法がサポートする 特別な環境だけで使用してください。

        コンパイラは、広範囲に渡るマシンおよびアプリケーションで、パフォーマンスを 最適にするように先読みメカニズムを調整するので、 パフォーマンステストにより明らかに利点があるとわかった場合のみ、 latx:factor サブオプションを使用してください。 先読み命令の「潜在期間」の仮定値は、リリース間で異なる可能性があります。 そのため、別のリリースに切り替えるたびに 「潜在期間」がパフォーマンスに与える影響をテストし直すことを 強くお勧めします。

    -xprefetch_auto_type=[no%]indirect_array_access
        (SPARC) 間接アクセスされるデータ配列に対する間接先読み命令を生成します。

        [no%]indirect_array_access
            直接メモリーアクセス用の先読み命令の生成と同じようにして、 -xprefetch_level=[1|2|3] オプションの 指示するループに対して間接先読みを生成させるかどうかを指定します。

        -xprefetch_auto_type に値が指定されなかった場合、 コンパイラは -xprefetch_auto_type=no%indirect_array_access に設定します。

        -xprefetch=auto および最適化レベル -xO3 以上が必要です。

        メモリー使用に関する別名解析のあいまいさを排除できる可能性が高まるため、 -xdepend などのオプションが、間接先読み命令の候補の 計算の積極性、つまりは、自動的な間接先読み命令の挿入の積極性に 影響することがあります。

    -xprefetch_level=n
        (SPARC) prefetch 命令の挿入の程度を制御します。

        このオプションは、-xprefetch=auto を使用して、最適化レベル 3 以上 (-xO3) で、prefetch をサポートするプラットフォーム (-xarch=v8plus、v8plusa、v8plusb、v9、v9a、v9b、generic64、native64) でコンパイルする場合にのみ有効です。

        n は 1、2、3 のいずれかです。

        でのデフォルトです。 -xprefetch=auto でのデフォルトは レベル 2 です。

        prefetch レベル 2 では、レベル 1 を超える prefetch 命令の追加生成が可能です。prefetch レベル 3 では、レベル 2 を超える prefetch 命令の追加生成が可能です。

        prefetch レベル 2 と 3 は、UltraSPARC III プラットフォーム (-xarch=v8plusb または v9b) にのみ有効です。

    -xprofile=p
        実行時プロファイルデータを収集するか、これらのデータで最適化を行います。

        実行中の実行頻度データを収集および保存します。そして、 収集したデータをその後の実行で使用することにより、パフォーマンスを 上げます。

        p は collect[:nm]、use[:nm]、または tcov でなければなりません。

        コンパイルとリンクを別の段階で行う場合、リンク時には コンパイル時と同じ -xprofile オプションを使用しなければなりません。

        collect[:nm]
            実行頻度データを収集および保存します。後で -xprofile=use を指定すると、オプティマイザがこのデータを使用できます。 コンパイラは、文の実行頻度を測定するコードを生成します。

            nm は解析されるプログラムの名前です。この名前はオプションです。 この名前を指定しない場合、 a.out が実行可能ファイルの名前であると仮定されます。

            実行時、 -xprofile=collect:nm でコンパイルされたプログラムは、サブディレクトリ nm.profile を作成し、実行時フィードバック情報を保持します。 データはこのサブディレクトリにあるファイル feedback に書き込まれます。 プログラムを何回も実行する場合、実行頻度データは feedback ファイルに累積されます。つまり、以前の実行の出力は失われません。

            プログラムの実行時プロファイルデータの記述を制御するには、 環境変数 SUN_PROFDATA および SUN_PROFDATA_DIR を設定してください。 設定された場合、プログラムは nm.profile/feedback の代わりに カレントディレクトリの $SUN_PROFDATA_DIR/$SUN_PROFDATA に書き込みます。

            プロファイル収集はマルチスレッドに対して安全です。つまり、自身のマルチタスク処理( -mt ) を行なうプログラムをプロファイリングした場合、正しい結果が生成されます。 注:

        use[:nm]
            実行頻度データを使用し、計画的に最適化します。

            collect:nm と同様に、nm はオプションで、 プログラムの名前を指定します。

            プログラムは、実行頻度データを元に最適化されます。 このデータは、 -xprofile=collect 付きでコンパイルしたプログラムが前回実行された際に作成された フィードバックファイルに生成され、保存されます。

            ソースファイルや、その他のコンパイラオプションは、このフィードバックファイルが 生成されたコンパイル時とまったく同じものを使用しなければなりません。 -xprofile=collect:nm を使用してコンパイルした場合、同じプログラム名 nm を最適化 コンパイルでも指定しなければなりません ( -xprofile=use:nm )。

            collect 段階と use 段階との間のコンパイルの高速化については -xprofile_ircache も参照してください。

        tcov
            新しいスタイルの tcov(1) を使用する基本的な ブロックカバレージ解析。

            コードの使用法は -a と似ていますが、ソースファイルごとに .d ファイルは生成されません。その代わりに、 単一のファイルが生成されます。このファイルの名前は、 最終実行可能ファイルの名前に基づきます。たとえば、 stuff が実行可能ファイルである場合は、 stuff.profile/tcovd がデータファイルです。

            tcov を実行するときは、 -x オプションを渡し、新しいスタイル のデータを使用するように指示しなければなりません。 そうしないと、 tcov はデフォルトで古い .d ファイル (もしあれば) を データとして使用し、予想外の結果を生成します。

            -a とは異なり、 TCOVDIR 環境変数はコンパイル時には効果がありません。 しかし、その値はプログラムの実行時に使用され、 どこにプロファイルのサブディレクトリを作成するのかを指定します。

            注 -
            -O4 または -inline を使用したためにサブプログラムのインライン化が存在する場合、 tcov が生成するレポートは不正確である可能性があります。インライン化された ルーチンへの呼び出しの範囲は記録されません。

    -xprofile_ircache[=path]
        (SPARC) プロファイルの収集段階と使用段階とで、コンパイルデータを保存、再利用します。

        -xprofile=collect|use とともに指定すると、プロファイルの collect 段階に保存されたコンパイルデータが use 段階で再利用され、コンパイル時間が改善されます。

        このオプションの指定によって、path がキャッシュ化されたファイルの 保存場所を上書きします。 デフォルトでは、このファイルはオブジェクトファイルと同じディレクトリに 保存されます。パスを指定すると、収集フェーズと使用フェーズが別の ディレクトリで実行される場合に便利です。

        コマンドは一般的に次のような順で指定します。

          f95 -xO5 -xprofile=collect -xprofile_ircache t1.c t2.c
          a.out    // run collects feedback data
          f95 -xO5 -xprofile=use -xprofile_ircache t1.c t2.c

        大きなプログラムの場合、中間データがこのようにして保存されているので、 使用段階でのコンパイル時間が著しく向上します。ただし、 ディスクスペースを使うので、その必要量が増えます。

    -xprofile_pathmap=collect_prefix:use_prefix
        (SPARC) プロファイルデータファイルのパスマッピングを設定します。

        -xprofile_pathmap オプションは -xprofile=use オプションと使います。

        -xprofile_pathmap は、コンパイラが -xprofile=use でコンパイルされたオブジェクトファイルの プロファイルデータを見つけられず、かつ次の条件に当てはまる 場合に使います。

        o  -xprofile=collect でコンパイルするときに使用したディレクトリ
            ではない、別のディレクトリに -xprofile=use でコンパイル しようとする場合

        o  オブジェクトファイルがプロファイル中で共通のベース名を
            使用しているが、ディレクトリを別にして場所によって ベース名を使い分けている場合

        collect-prefix は、-xprofile=collect を指定して オブジェクトファイルがコンパイルされたディレクトリツリーの UNIX パス名の接頭辞です。

        use-prefix は、-xprofile=use を指定して オブジェクトファイルをコンパイルしようとしているディレクトリツリーの UNIX パス名の接頭辞です。

        -xprofile_pathmap に複数のインスタンスを指定した場合、 コンパイラその指定の順序でそれらを処理していきます。 -xprofile_pathmap のインスタンスが指定した各 use-prefix は、 マッチする use-prefix が特定されるか、最後に指定した use-prefix がオブジェクトファイルのパス名と一致しないことが わかるまで、オブジェクトファイルのパス名と比較されます。

    -xrecursive
        RECURSIVE 属性のないルーチンがそれ自体を再帰的に呼び出すことを許可します。

        それ自体を再帰的に呼び出すことができるのは、通常、 RECURSIVE 属性をもつ副プログラムだけです。

        -xrecursive を指定して副プログラムをコンパイルすると、属性 RECURSIVE で定義されていなくても副プログラムはそれ自体を再帰的に呼び出すことができます。ただし RECURSIVE 属性と異なり、このフラグは、デフォルトで局所変数をスタックに割り当てることはできません。副プログラムの再帰呼び出しごとに個別の局所変数値を割り当てるには、-stackvar を指定してコンパイルを行い、局所変数をスタックに設定します。

        -xrecursive を指定してルーチンをコンパイルすると、パフォーマンスが低下する場合があります。

    -xreduction
        (SPARC) -reduction と同義です。

    -xregs=r
        (SPARC) レジスタの使用法を指定します。

        生成されるコードのレジスタの使用法を指定します。

        r は、コンマで区切った 1 つまたは複数の [no%]appl 、 [no%]float のリストです。

        例 : -xregs=appl,no%float

        機能を無効にするには、その機能の前に [no%] を置きます。

        -xregs の値は、 -xarch の値 に固有です。

        appl
            一時レジスタとしてアプリケーションレジスタを使用する コードを、コンパイラが生成するのを許可します。 レジスタは、v8、v8a、v8plus、v8plusa プラットフォームの g2、 g3、 g4 と v9、v9a プラットフォームの g2、 g3 です。

        float
            整数値のための一時レジスタとして浮動小数点レジスタを 使用するコードをコンパイラが生成するのを許可します。 このオプションは浮動小数点値のために浮動小数点レジスタを使用することには まったく影響ありません。

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

    -xs オブジェクトファイルなしで dbx によるデバッグができるようにします。

        このオプションは、デバッグ情報すべてを実行可能ファイルにコピーします。 dbx パフォーマンスやプログラムの実行時パフォーマンスには ほとんど影響を与えませんが、使用するディスクスペースの量は増えます。

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

    -xsafe=mem
        (SPARC) メモリー保護違反が発生しないことを前提として、コンパイラを動作させます。

        このオプションは、コンパイラが、SPARC V9 アーキテクチャで フォルト発生を想定しないロード命令を使用することを許可します。

        警告:

        フォルト発生を想定しないロード命令は、アドレス割り当ての失敗やセグメント違反 のようなフォルトが発生した場合でも、トラップを発生させません。 そのためこのオプションは、そのようなフォルトが起こり得ないプログラムで のみ使用してください。メモリーに基づいたトラップを発生させるプログラムは ごく少数なので、このオプションはほとんどのプログラムで安全に使用できます。 しかし、例外的な状態を処理するために、メモリーに基づいたトラップを明示的に使用している プログラムでは、このオプションは使用しないでください。

        相互の関連性:

        このオプションは、 -xO5 の最適化レベルで、かつ、 次のいずれかの値をとる -xarch オプションと一緒に使用された場合にのみ有効です。
        v8plus、 v8plusa、 v8plusb、 v9、 v9a、 または v9b

    -xsb
        -sb と同義です。

    -xsbfast
        -sbfast と同義です。

    -xspace
        コードのサイズを増やしません。

        コードのサイズを増やす最適化を行いません。
        例: ループは展開しません。

    -xtarget=t
        最適化用のシステムを指定します。

        命令セットと最適化用のターゲットシステムを指定します。

        t は native 、 native64 、 generic 、 generic64 、またはシステム名の 1 つでなければなりません。

        -xtarget オプションを使用すると、実システムで発生する -xarch 、 -xchip 、および -xcache の組み合わせを簡単に指定できます。 -xtarget の唯一の意味は、その展開の中にあります。

        -xtarget の値は、次のとおりです。

        native: ホストシステムで最良のパフォーマンスを得ることができます。(32 ビットアーキテクチャ)
        -xarch=native -xchip=native -xcache=native

        native64: (SPARC) ホストシステムで最良のパフォーマンスを得られるように最適化 します (64 ビットアーキテクチャ)。
        -xarch=native64 -xchip=native64 -xcache=native

        generic: ほとんどの 32 ビットプラットフォームで最良のパフォーマンスを得られるように最適化します。 これはデフォルトであり、次のオプションのセットと同じです。
        -xarch=generic -xchip=generic -xcache=generic

        generic64: ほとんどの 64 ビットプラットフォームで最良のパフォーマンスを得られるように最適化します。 これは、次のオプションのセットと同じです。
        -xarch=generic64 -xchip=generic64 -xcache=generic

        プラットフォーム名: 指定したシステムで最良のパフォーマンスを得ることができます。

        有効な SPARC プラットフォーム名は以下のとおりです。

        一般的なプラットフォーム名:
        ultra, ultra2, ultra2i, ultra1/140, ultra1/170, ultra1/200, ultra2/1170, ultra2/1200, ultra2/1300, ultra2/2170, ultra2/2200, ultra2/2300, ultra2e, ultra2i, ultra3, ultra3cu, 次のターゲットプラットフォームは -xtarget=ultra
         と同等です。
        entr2, entr2/1170, entr2/2170, entr2/1200, entr2/2200, entr3000, entr4000, entr5000, entr6000

        あまり一般的でないプラットフォーム名:
        sun4/15, sun4/30, sslc, sslx, sslx2, ss4, ss4/85, ss4/110, ss5, ss5/85, ss5/110, ssvyger, ss10, ss10/hs11, ss10/hs12, ss10/hs14, ss10/20, ss10/hs21, ss10/hs22, ss10/30, ss10/40, ss10/41, ss10/50, ss10/51, ss10/61, ss10/71, ss10/402, ss10/412, ss10/512, ss10/514, ss10/612, ss10/712, ss20, ss20/hs11, ss20/hs12, ss20/hs14, ss20/hs21, ss20/hs22, ss20/50, ss20/51, ss20/61, ss20/71, ss20/151, ss20/152, ss20/502, ss20/512, ss20/514, ss20/612, ss20/712, ss600/41, ss600/51, ss600/61, ss600/412, ss600/512, ss600/514, ss600/612, ss1000, sc2000, cs6400, solb6

        UltraSPARC V9 上の 64 ビット Solaris OS 環境用に コンパイルするには、-xarch=v9 または -xarch=v9a フラグを指定します。-xtarget=ultra または ultra2 の設定 は必要ないか不十分です。-xtarget を指定する場合、 次のように、-xarch=v9 または v9a オプションを -xtarget の後に指定しなければなりません。
        -xtarget=ultra2 ... -xarch=v9
        そうしない場合、-xtarget の設定によって、 -xarch は v8plusa に戻されます。

        x86 システムの場合は、有効なプラットフォーム名は次のとおりです。 generic、 native、 386、 486、 pentium、 pentium_pro、 pentium3、 および pentium4。

        -xtarget の展開については、『Fortran ユーザーズガイド』を参照してください。 各プラットフォーム名に対して使用される -xarch -xchip -xarch の値が示されています。

        このオプションはマクロです。-xtarget の各値は、 -xarch 、 -xchip 、および -xcache オプションの特定の値に展開されます。たとえば、 -xtarget=sun4/15 は、
        -xarch=v8a -xchip=micro -xcache=2/16/1 と同義です。

        稼働中のシステムにおける -xtarget=native の展開を調べるには、fpversion(1) コマンドを使用します。

        あるホストプラットフォームの -xtarget が、 そのプラットフォームでコンパイルするときの -xtarget=native と 同じ -xarch、-xchip、-xcache の設定に展開されない 場合があります。

    -xtime
        -time と同義です。

    -xtypemap=spec
        デフォルトのデータマッピングを指定します。

        このオプションを使用すると、デフォルトのデータ型に対するバイトサイズを柔軟に指定できます。

        文字列 spec の構文は次のとおりです:

        type:bits,type:bits,...

        許可されるデータ型は、 REAL、 DOUBLE、 および INTEGERです。 許可されるデータサイズは、 32、 64、 および 128 です。

        このオプションは、 REAL XYZ のように、明示的なバイトサイズが指定されることなく宣言されるすべての変数に適用されます。

        許可される組み合わせを次に示します。

        real:32 または real:64
        double:64 または double:128
        integer:32 または integer:64

        次に、便利なマッピングを示します。

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

        これは、REAL と DOUBLE を 8 バイトにマッピングしますが、DOUBLE PRECISION は QUAD PRECISION に拡張しません。

        INTEGER と LOGICAL は同様に処理されること、および、COMPLEX は 2 つの REAL データ要素としてマッピングされることに注意してください。また、DOUBLE COMPLEX は DOUBLE がマッピングされるように処理されます。 詳細は、 『Fortran ユーザーズガイド』 を参照してください。

    -xunroll=n
        -unroll=n と同義です。

    -xvector[={yes|no}]
        (SPARC) ベクトルライブラリ関数への呼び出しの自動生成を有効にします。

        -xvector=yes を指定すると、コンパイラは、可能であれば、DO ループ内の 数学ライブラリ呼び出しを、同等なベクトル数学ルーチンへの 単一の呼び出しに変換します。このオプションを使用すると、 ループカウントが大きなループのパフォーマンスが飛躍的に 上がることがあります。

        オプションを指定しない場合、デフォルトは -xvector=no です。 -xvector を指定することは、 -xvector=yes と同義です。

        コマンド行上で -xvector の前に -depend が 指定されていない場合、このオプションは -depend も有効にします。 しかし、コマンド行上で -xvector の後に -nodepend が 指定されている場合、-xvector の影響は取り消されます。

        コンパイラは、自動的に、ロードの段階で libmvec と libc ライブラリをインクルードするようにリンカーに知らせます。 コンパイルとリンクを別のコマンドで行う場合、f95 コマンドを リンクするときにも、-xvector を指定しなければなりません。 -xvector=yes を使用する場合は、デフォルト丸めモードの -fround=nearest が前提であり、必須です。

    -ztext
        再配置が残った状態では、ライブラリを作成しません。

        -ztext は、主に、生成されるライブラリが純粋なテキスト であるかどうか評価するために使用します。これは、命令がすべて 位置独立コードであるかを確認することです。したがって、通常はこのオプションは、 -G と -pic と併用します。

        -ztext を使用すると、テキストセグメントに不完全な再配置を検出した場合、 ld はライブラリを構築しません。データセグメントに不完全な再配置を 検出した場合、 ld は一般的にライブラリを構築します。つまり、 データセグメントは書き込み可能です。

        -ztext を使用しないと、再配置の状態にかかわらず、 ld はライブラリを構築します。

        典型的な使用法は、 -pic を指定してオブジェクトファイルを 作成したかどうかが判明しない場合に、 ソースファイルとオブジェクトファイルの 両方からライブラリを作成することです。

    上記以外の引数は、リンカーのオプション引数、 f95 互換オブジェクトプログラムの名前 (通常は事前に作成されたオブジェクト)、または f95 と互換性のあるルーチンのライブラリとみなされます。 これらのプログラムを 指定されたコンパイルの結果とともに (指定された順で) リンクして 実行可能プログラムを作成し、 -o オプションで指定されたファイル ( -o オプションが指定されていない場合は a.out ) に出力します。

ファイルの接尾辞
コンパイラのコマンド行には以下の接尾辞を持つファイルを指定できます。接尾辞は通常、ファイルの型を識別し、コンパイラのファイル処理方法を決定します。

.f90 .f95 .f03
    自由形式の Fortran 95 ソースファイル。

.f .for
    固定形式の Fortran 95 または Fortran 77 ソースファイル。

.F .F95 .F03
    プリプロセッサ指令を含む固定形式の Fortran 77、Fortran 95、 または Fortran 2003 ソース。 これらのファイルは、コンパイルの前に fpp(1) により事前処理されます (-xpp= オプションも参照)。

.F90 .F95
    プリプロセッサ指令を含む自由形式の Fortran 95 ソースファイル。これらのファイルは、コンパイルの前に fpp(1) により事前処理されます (-xpp= オプションも参照)。

.s  SPARC[tm] アセンブラソースファイル。

.il インラインアセンブラ展開コードテンプレートファイル。コンパイラはこのファイルを使用して、選択したルーチンの呼び出しをインラインコードに展開します。インラインテンプレートファイルの詳細は、inline(1) マニュアルページと -inline オプションフラグを参照してください。

.o  リンカーに渡されるオブジェクトファイル。

.so リンカーに渡される共用オブジェクトファイルまたはライブラリ。

.a  リンカーに渡される、すなわち MODULE サププログラムが検索されるライブラリファイル (-M オプションフラグを参照)。

.mod
    事前コンパイルされた MODULE プログラムユニットを含むファイル。コンパイラによって生成されます。-M オプションを参照してください。

64 ビット Solaris OS 環境用コンパイル:

このバージョンのコンパイラは、32 ビットまたは 64 ビット Solaris OS 7、8、または 9 SPARC プラットフォーム版で 64 ビットオブジェクトバイナリを生成できます。結果の実行可能ファイルは、64 ビットカーネルを持つ Solaris OS 7、8、または 9 環境で、64 ビット SPARC(tm) または UltraSPARC(tm) プロセッサでのみ実行されます。64 ビットオブジェクトのコンパイル、リンク、および実行は、Solaris OS 7、8、または 9 環境でのみ可能です。

64 ビット Solaris OS 環境でのコンパイルは、-xarch=v9、v9a、または v9b オプションにより指示されます。-xtarget または -fast が一緒に指定されている場合でも、これらのオプションの 1 つを指定する必要があります。この場合、-xarch= オプションは、-xarch オプションを設定する -xtarget またはその他のオプションの後に指定する必要があります。以下はその例です。

      -xtarget=ultra -xarch=v9

-xtarget=ultra、-xtarget=ultra2、および -xtarget=ultra3 は -xarch=v8 を意味し、自動的に 64 ビットコンパイルは実行されないことに注意してください。

64 ビット Solaris OS 環境で -xarch=v9、v9a、または v9b を指定して共用動的ライブラリを構築する場合、-pic または -PIC オプションを指定する必要があります。

コードアドレスサイズの指定については、新規の -xcode=abs32|abs44|abs64|pic13|pic32 オプションも参照してください。

64 ビット Solaris OS オペレーティング環境は、64 ビット整数データとポインタデータを有効にするだけでなく、大規模ファイルと大規模配列もサポートします。

64 ビット Solaris OS オペレーティング環境用コンパイルの詳細については、http://docs.sun.com/ で『Fortran ユーザーズガイド』と『Solaris 64 ビット 開発ガイド』を参照してください。

指令
一般的な指令: f95 は、 C$PRAGMA 、 !$PRAGMA 、または *$PRAGMA で始まる一般的なコンパイラ指令行を許可します。 大文字と小文字は関係ありません。次に例を示します。

C$PRAGMA C(list_of_subprogram_names)
C$PRAGMA SUN UNROLL n
C$PRAGMA WEAK function_name
C$PRAGMA SUN OPT=n
C$PRAGMA PIPELOOP=n
C$PRAGMA SPARC_PREFETCH_READ_ONCE (name)
C$PRAGMA SPARC_PREFETCH_READ_MANY (name)
C$PRAGMA SPARC_PREFETCH_WRITE_ONCE (name)
C$PRAGMA SPARC_PREFETCH_WRITE_MANY (name)
!$PRAGMA IGNORE_TKR list
C$PRAGMA ASSUME (expression [, probability])

並列化指令: f95 は、OpenMP API 並列化指令を認識します。OpenMP は、すべての Sun Studio コンパイラの明示的並列化のための推奨モデルです。

このリリースでは、f95 コンパイラはバージョン 2.0 の OpenMP Fortran 95 API を受け入れます。指令標識は !OMP です。

Sun Studio OpenMP 実装の詳細については、『OpenMP API ユーザーズガイド』を参照してください。

f95 は、従来の Sun スタイルと Cray スタイルの並列化指令も認識します。C$PAR、!$PAR、または *$PAR で始まる Sun スタイルの並列化コンパイラ指令行が使用可能です。大文字と小文字は関係ありません。

C$PAR DOALL
C$PAR DOSERIAL
C$PAR DOSERIAL*
C$PAR TASKCOMMON

Cray スタイルの並列化指令も認識されます。指令標識は CMIC$ または !MIC$ です。

CMIC$ DOALL
CMIC$ TASKCOMMON
CMIC$ DOSERIAL
CMIC$ DOSERIAL*

詳細やバリエーションについては、『Fortran ユーザーズガイド』を参照してください。

従来の Sun/Cray 並列化を OpenMP API 指令に変換するガイドラインについては、『OpenMP API ユーザーズガイド』も参照してください。

環境
以下に示すパスは /opt/SUNWspro/ への Sun Studio コンパイラの標準インストールを仮定しています。 コンパイラがその他のディレクトリパスへカスタマイズされてインストールされている場合は、システム管理者にお問い合わせください。

  PATH
f95 を使用するには、検索パスの先頭に以下のディレクトリを追加してください。

/opt/SUNWspro/bin/

  MANPATH
f95 のマニュアルページを使用するには、 MANPATH 環境変数に以下のディレクトリを追加してください。

/opt/SUNWspro/man/

  MODDIR
コンパイラが .mod モジュールファイルを書き込むディレクトリへのパスを指定します。MODDIR 環境変数の設定に優先する -moddir も参照してください。

  LD_LIBRARY_PATH
通常の場合、 LD_LIBRARY_PATH を設定する必要はありません。この環境変数の設定がないとプログラムが 動作しない場合には、インストールに問題があるか、あるいは、実行 プログラムが正しく作成されていない場合があります。

LD_LIBRARY_PATH 環境変数は次のように設定します。

/opt/SUNWspro/lib/

  LD_LIBRARY_PATH_64
LD_LIBRARY_PATH 環境変数と同様、LD_LIBRARY_PATH_64 は 64 ビットのライブラリを検索するためのパスを設定します。

SPARC プロセッサ上の 64 ビット Solaris OS 環境で、32 ビットモードでリンクするとき、 LD_LIBRARY_PATH_64 は無視されます。LD_LIBRARY_PATH だけが定義されている場合、32 ビットのリンクと 64 ビットのリンクの両方にこの値が使用されます。LD_LIBRARY_PATH と LD_LIBRARY_PATH_64 の両方が定義されている場合、32 ビットのリンクには LD_LIBRARY_PATH が使用され、64 ビットのリンクには LD_LIBRARY_PATH_64 が使用されます。

これらの環境変数についての詳細は、 『リンカーとライブラリ』を参照してください。

  LD_RUN_PATH
LD_RUN_PATH を使用する場合、 f95 では LD_RUN_PATH が -R と同一ではないことに注意してください ( ld.so に対しては同一です)。 詳細は 『Fortran ユーザーズガイド』 の -R の説明を参照してください。

  STACKSIZE
STACKSIZE 環境変数に値 (単位 K バイト) を指定することにより、マルチスレッドプログラム内の各スレーブスレッドが使用するスタックサイズを指定できます。
% setenv STACKSIZE 8192
上記の指定では、各スレーブスレッドのスタックサイズは 8M バイトに設定されます。

SPARC V8 システムでのデフォルトのスレッドスタックサイズは、4M バイトです。V9 システムでは 8M バイトです。

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

  SUNW_MP_WARN
OpenMP 実行時ライブラリが出力する警告メッセージを制御します。 TRUE と設定すると、ライブラリは警告メッセージを stderr に出力します。 FALSE と設定すると、警告は無効になります。デフォルトは、 FALSE です。

  SUNW_MP_THR_IDLE
各ヘルパースレッドのタスクの終わりのステータスを制御します。 spin ns、または sleep nms の値が指定できます。 デフォルトは spin です。 詳細については 『OpenMP API ユーザーズガイド』 を参照してください。

  OMP_NUM_THREADS
アプリケーション実行時に使用するスレッド数を設定します。

ファイル
コンパイラのコマンド行に指定される名前の接尾辞によって識別されるファイルについては、上記の「ファイルの接尾辞」の項を参照してください。

そのほかに、コンパイラは以下のファイルを使用します。

/usr/lib/libc.a
    標準の C ライブラリ、 intro(3) を参照
/usr/lib/libp/libc.a
    プロファイリングライブラリ、 intro(3) を参照
/tmp/*
    コンパイラの一時ファイル
mon.out
    prof(1) による解析用に生成されるファイル
gmon.out
    gprof(1) による解析用に生成されるファイル

その他のファイルは、絶対パスが示されていない場合、次のディレクトリにあります。

/opt/SUNWspro/

bin/fpp
    Fortran プリプロセッサ
bin/cpp
    C プリプロセッサ
prod/include/f95
    f95 の INCLUDE 文で検索されるパス
prod/include/f95/f95_floatingpoint.h
    f95 IEEE 演算型定義

次のライブラリには、.so と .a の両方のバージョンがあります。
lib/libfsu
    f95 サポート組み込み
lib/libfui
    f95 - UNIX インタフェース
lib/libfio
    Fortran 95 入出力
lib*libfai
    Fortran 95 配列組み込みライブラリ
lib/libifai
    Fortran 95 区間配列組み込みライブラリ
lib/libf77compat
    f77 互換入出力ライブラリ
/usr/lib/libm.a
    数学ライブラリ
/usr/lib/libp/libm.a
    数学プロファイルライブラリ
lib/libsunmath.a
    Sun 付加価値インターバル数学ライブラリ
lib/libsunmath.a
    Sun 付加価値数学プロファイルライブラリ

lib/libp/libsunimath.a
    Sun が提供する付加価値区間数学プロファイルライブラリ

README ファイル
多くの README ファイルがコンパイラとライブラリについての有益な最新情報を提供しています (白書も含む)。特に、次の話題に注目しています。

     o   fortran_95
     o   math_libraries

READMEs ディレクトリへのパスは、次のとおりです。
/opt/SUNWspro/READMEs/

関連項目
次の URL のサイトで、Sun Studio 9 のマニュアル一式を提供しています。
file:/opt/SUNWspro/docs/ja/index.html

追加情報については、以下のマニュアルページを参照してください。
asa(1)、cc(1)、dbx(1)、fpp(1)、fpr(1)、fsplit(1)、gprof(1)、ild(1)、ld(1)、perror(3f)、prof(1)、tcov(1)

詳細情報については、以下のマニュアルを参照してください。
『Fortran ユーザーズガイド』
『Fortran プログラミングガイド』
『OpenMP API ユーザーズガイド』
『数値計算ガイド』
『Sun Performance Library User's Guide』
『Sun Studio 9 プログラムのパフォーマンス解析』
『Fortran ライブラリ・リファレンス』
『Solaris リンカーとライブラリ』
『dbx コマンドによるデバッグ』
『Sun Performance Library User's Guide』: この Sun Studio リリースには、線形代数やフーリエ変換に使用されるサブルーチンや関数を含む Sun Pefrormance Library が含まれています。

Sun の開発者向け Web サイトにもその他の多数の情報があります。
http://developers.sun.com/prodtech/cc/

診断
f95 が生成する診断メッセージは、それだけで理解できるようになっています。メッセージの中にはリンカーによって生成されるものもあります。