Oracle Solaris Studio 12.4 Man Pages

印刷ビューの終了

更新: January 2015
 
 

f95(1)

名前

f95 , f90 - Fortran 95 コンパイラ

形式

f95 または f90 のどちらかのコマンドで呼び出すことができます。これらは
同等です。
f95  [ -aligncommon[=a] ] [ -ansi ] [ -arg=local ]
     [ -autopar ] [ -Bx ] [ -C ] [ -c ]
     [ -copyargs ] [ -Dnm[=def] ] [ -dalign ]
     [ -dbl_align_all[={yes|no}] ] [ -depend[={yes|no}] ]
     [ -dryrun ] [ -d{y|n} ] [ -e ] [ -erroff[=taglist] ]
     [ -errtags[={yes|no}] ] [ -errwarn[=taglist] ]
     [ -ext_names=e ] [ -F ] [ -f ]
     [ -f77[=list] ] [ -fast ] [ -fixed ] [ -flags ]
     [ -fma={none|fused} ] [ -fnonstd ] [ -fns[={yes|no}] ]
     [ -fpover[={yes|no}] ] [ -fpp ] [ -fopenmp ]
     [ -fprecision=p ] [ -free ] [ -fround=r ]
     [ -fserialio ] [ -fsimple[=n] ] [ -fstore ]
     [ -ftrap=t ] [ -G ] [ -g ]
     [ -g[n] ] [ -hnm ] [ -help ] [ -Ipath ] [ -inline=rl ]
     [ -iorounding[=r] ] [ -keepmod[={yes|no}] ]
     [ -keeptmp ] [ -KPIC ] [ -Kpic ] [ -Lpath ] [ -lx ]
     [ -libmil ] [ -library=sunperf ]
     [ -loopinfo ] [ -Mpath ]
     [ -m32|-m64 ] [ -moddir=path ] [ -mt ]
     [ -native ] [ -noautopar ] [ -nodepend ]
     [ -nofstore ] [ -nolib ]
     [ -nolibmil ] [ -noreduction ] [ -norunpath ]
     [ -O[n] ] [ -o nm ] [ -onetrip ]
     [ -openmp[=a] ] [ -PIC ] [ -p ]
     [ -pad[=a] ] [ -pg ] [ -pic ]
     [ -preserve_argvalues[=int|none] ]
     [ -Qoption pr ls ] [ -qp ] [ -R list ] [ -r8const ]
     [ -recl=a[,b] ] [ -reduction ] [ -S ] [ -s ]
     [ -silent ] [ -stackvar ] [ -stop_status={yes|no} ]
     [ -temp=path ] [ -time ] [ -traceback[=list] ]
     [ -U ] [ -Uname ] [ -u ]
     [ -unroll=n ] [ -use=list ] [ -V ] [ -v ] [ -vax=v ]
     [ -vpara ] [ -Wc,arg ] [ -w[n] ]
     [ -Xlinker arg ] [ -Xlist[z] ]
     [ -xaddr32[={no|yes}] ] [ -xalias[=a[,a]...] ]
     [ -xannotate[={yes|no}] ] [ -xarch=a ]
     [ -xassume_control[=a[,a]...] ]
     [ -xautopar ] [ -xbinopt={prepare|off} ]
     [ -xcache=c ] [ -xcheck=n ] [ -xchip=c ]
     [ -xcode=v ] [ -xcommonchk[={no|yes}] ]
     [ -xdebugformat={stabs|dwarf} ]
     [ -xdebuginfo=a[,a...] ] [ -xdepend ]
     [ -xdryrun ] [ -xF ] [ -xfilebyteorder=options ]
     [ -xglobalize[={yes|no}] ]
     [ -xhasc[={yes|no}] ] [ -xhelp=h ]
     [ -xhwcprof[=e] ] [ -xia[=i] ] [ -xinline=rl ]
     [ -xinline_param=a[,a[,a]...] ] [ -xinline_report[=n] ]
     [ -xinstrument=d ] [ -xinterval=i ]
     [ -xipo[=n] ] [ -xipo_archive=a ]
     [ -xipo_build=[yes|no] ] [ -xivdep[=p] ]
     [ -xjobs=[n|auto] ]
     [ -xkeep_unref[={[no%]funcs, [no%]vars}] ]
     [ -xkeepframe[=p] ]
     [ -xknown_lib=lib ] [ -xl ] [ -xld ] [ -xlang=f77 ]
     [ -xlibmil ] [ -xlibmopt ] [ -xlicinfo ]
     [ -xlinkopt[=level] ]
     [ -xloopinfo ] [ -xM ] [ -xmaxopt[=n] ]
     [ -xmemalign[=ab] ] [ -xmodel=[a] ] [ -xnolib ]
     [ -xnolibmil ] [ -xnolibmopt ] [ -xO[n] ]
     [ -xopenmp[=a] ] [ -xpad[=a] ] [ -xpagesize=n ]
     [ -xpagesize_heap=n ] [ -xpagesize_stack=n ]
     [ -xpatchpadding[={fix|patch|size}] ]
     [ -xpec[={yes|no}] ] [ -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[={yes|no}] ] [ -xsafe=mem ] [-xsegment_align=n] [ -xspace ]
     [ -xtarget=t ] [ -xtemp=path ]
     [ -xthroughput[={yes|no}] ] [ -xtime ]
     [ -xtypemap=spec ] [ -xunboundsym={yes|no} ]
     [ -xunroll=n ] [ -xvector[={v}] ] [ -xvpara ]
     [ -ztext ]   source file(s) ...  [ -lx ]

説明

Oracle Solaris Studio 12.4 Fortran 95 コンパイラ、バージョン 8.6。

F95 コンパイラは、標準準拠の Fortran 95 ソースコードプログラムを受け入れます。また、一部の Fortran 2003 機能、区間演算用の拡張機能、および OpenMP[tm] Fortran 95 API バージョン 3.1 も受け入れます。また、-f77 互換性オプションの下の多くの FORTRAN 77 (f77) 言語拡張と、VAX VMS Fortran 拡張機能 (-vax) も受け入れます。

Fortran 95 コンパイラ f95 のバージョン 8.6 は、Oracle Solaris Studio 12.4 のコンポーネントとしてリリースされ、SPARC および x86 プラットフォームの Oracle Solaris オペレーティングシステム (Oracle Solaris OS) と、Linux x86 プラットフォームで使用できます。

システム環境およびバージョンの完全なリストについては、Oracle Solaris Studio 12.4 のリリースノートを参照してください。

このリリースの完全なドキュメントは、Oracle Technical Network (OTN) Solaris Studio の Web サイトで入手できます。

http://oracle.com/technetwork/server-storage/solarisstudio

OTN Web サイトには Oracle Solaris Studio の完全なリソースがあり、ベストプラクティス、さまざまなプログラミングテクノロジの詳細、およびその他のトピックからなる多数の技術的な記事が含まれています。

Oracle Solaris Studio スイートのすべての新機能の完全な説明については、このリリースでの新機能のガイドを参照してください。

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

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

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

このマニュアルページの末尾に、Oracle Solaris Studio の関連ドキュメントのリストが示されています。

64 ビットプラットフォーム用のコンパイル

ターゲットコンパイルのメモリーモデル (ILP32 または LP64) を指定するには、それぞれ -m32 および -m64 オプションを使用します。

-xarch オプションには、暗黙的なメモリーモデル定義が含まれなくなったため、ターゲットプロセッサの命令セットを指定するためのみに使用してください。

ILP32 モデルは、C 言語の int、long、およびポインタデータ型がすべて 32 ビット拡張であることを指定します。long およびポインタデータ型を指定する LP64 モデルは、すべて 64 ビット拡張です。Oracle Solaris および Linux OS は、LP64 メモリーモデルの大きなファイルや大きな配列もサポートします。

-m64 を使用してコンパイルを行う場合、結果の実行可能ファイルは、64 ビットカーネルを実行する Oracle Solaris OS または Linux OS の 64 ビット SPARC または x86 プロセッサでのみ動作します。64 ビットオブジェクトのコンパイル、リンク、および実行は、64 ビット実行をサポートする Oracle Solaris または Linux OS でのみ行うことができます。

x86 の特記事項

x86 の Oracle Solaris プラットフォーム用にコンパイルする場合は、注意する必要がある重要な問題がいくつかあります。

-xarchssesse2、sse2a、または sse3 以上に設定してコンパイルされたプログラムは、それらの拡張機能が備わったプラットフォームでのみ実行する必要があります。

このリリースでは、デフォルトの命令セットおよび -xarch=generic の意味が sse2 に変更されました。ターゲットプラットフォームオプションを指定せずにコンパイルすると、古い Pentium III または以前のシステムと互換性がない sse2 バイナリが生成されます。

コンパイルとリンクを別々に行う場合は、必ずコンパイラを使ってリンクし、同じ -xarch 設定で正しい起動ルーチンがリンクされるようにしてください。

-xarch=pentium_pro または -xarch=sse での数値の結果は、x86 の 80 ビットの浮動小数点レジスタの影響で、SPARC での結果と異なる場合があります。この差を最小にするには、-fstore オプションを使用するか、デフォルトの -xarch=sse2 を指定してコンパイルします。

組み込み数学ライブラリ (sin(x) など) が異なるため、Oracle Solaris と Linux の間でも数値結果が異なることがあります。

バイナリ互換性の検証 特殊な -xarch ハードウェアフラグを使用してコンパイルおよび構築されたプログラムバイナリは、適切なプラットフォーム上で実行されていることが検証されます。特殊化された -xarch オプションでコンパイルしたプログラムを、適切な機能または命令セット拡張に対応していないプラットフォームで実行すると、セグメント例外や明示的な警告メッセージなしの不正な結果が発生することがあります。

ただし、Linux ではそのような検証は行われません。古いハードウェアプラットフォームの Oracle Solaris Studio のコンパイラでコンパイルされたバイナリオブジェクトを実行すると、ランタイムエラーになることがあります。Linux では、それらのバイナリを適切なハードウェアプラットフォームにデプロイすることはユーザーの責任です。

この警告は、.il インラインアセンブリ言語関数を使用しているプログラムや、SSE、SSE2、SSE2a、SSE3 (およびそれ以降の) 命令と拡張機能を利用している __asm() アセンブラコードにも当てはまります。

ユーザー指定のデフォルトコンパイラオプション起動ファイル

これらのデフォルトコンパイラオプションファイルは、ユーザーがすべてのコンパイルに適用される (ほかの方法で上書きされる場合を除く)、一連のデフォルトオプションを指定することを許可します。たとえば、ファイルによって、すべてのコンパイルのデフォルトを -xO2 としたり、またはファイル setup.il を自動的に含めたりするように指定できます。

コンパイラは起動時に、すべてのコンパイルに含めるべきデフォルトオプションがリストされているデフォルトオプションファイルを検索します。環境変数 SPRO_DEFAULTS_PATH は、デフォルトファイルを検索するディレクトリのコロン区切りリストを指定します。

環境変数が設定されていない場合、標準のデフォルトセットが使用されます。環境変数が設定されているが空の場合、デフォルトは使用されません。

デフォルトファイルの名前は compiler.defaults の形式である必要があります。compilercc、c89、c99、CC、ftn、または lint のいずれかです。たとえば、Fortran コンパイラのデフォルトは、ftn.defaults となります。

SPRO_DEFAULTS_PATH にリストされたディレクトリにコンパイラ用のデフォルトファイルが見つかった場合、コンパイラはファイルを読み取り、コマンド行でオプションを処理する前にオプションを処理します。最初に見つかったデフォルトファイルが使用され、検索は終了します。

システム管理者は、システム全体のデフォルトファイルを Studio-install-path/prod/etc/config に作成できます。環境変数が設定されている場合、インストールされたデフォルトファイルは読み取られません。

デフォルトファイルの形式はコマンド行と同様です。ファイルの各行には、1 つ以上のコンパイラオプションを空白で区切って含めてもかまいません。ワイルドカードや置換などのシェル展開は、デフォルトファイル内のオプションには適用されません。

-#、-###,、および -dryrun の各オプションによって生成される詳細出力では、SPRO_DEFAULTS_PATH の値と、完全展開されたコマンド行が表示されます。

ユーザーによってコマンド行で指定されたオプションは、通常、デフォルトファイルから読み取られたオプションをオーバーライドします。たとえば、—xO4 でのコンパイルがデフォルトファイルで指定されており、ユーザーがコマンド行で —xO2 を指定した場合、—xO2 が使用されます。

デフォルトオプションファイルに記載されているオプションの一部は、コマンド行で指定されたオプションのあとに付加されます。これらは、プリプロセッサオプション —I、リンカーオプション —B、—L、—R —l、および、ソースファイル、オブジェクトファイル、アーカイブ、共有オブジェクトなどのすべてのファイル引数です。

次に示すのは、ユーザー指定のデフォルトコンパイラオプション起動ファイルがどのように使用される可能性があるかの例です。

 
demo% cat /project/defaults/ftn.defaults
-fast -I/project/src/hdrs -L/project/libs -llibproj -xvpara
demo% setenv SPRO_DEFAULTS_PATH /project/defaults
demo% f95 -c -I/local/hdrs -L/local/libs -lliblocal tst.f

コンパイラコマンドは次と同等になります。

 
f95 -fast -xvpara -c -I/local/hdrs -L/local/libs -lliblocal \
       tst.f -I/project/src/hdrs -L/project/libs -llibproj

コンパイラデフォルトファイルはプロジェクト全体のデフォルトを設定するための便利な方法ですが、問題の診断を困難にする原因になる場合もあります。このような問題を回避するには、環境変数SPRO_DEFAULTS_PATHを現在のディレクトリではなく絶対パスに設定します。

デフォルトオプションファイルのインタフェース安定性はコミットされていません。オプション処理の順序は、将来のリリースで変更される可能性があります。

オプション

SPARC プラットフォームでのみ有効なオプションは (SPARC) と付記しています。

x86/x64 プラットフォームでのみ有効なオプションは (x86) と付記しています。

非推奨のオプションは (廃止) とマークされており、今後は使用しないでください。これらは、以前のリリースとの互換性のためにのみ提供されています。代わりに示されているオプションを使用してください。

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

f95 は「メッセージを表示せずに」コンパイルします。エラーおよび警告メッセージを除き、コンパイル中に「進捗」メッセージは表示されません。

通常、コンパイラオプションの処理は、左から右へと行われ、マクロオプションは、条件に応じて内容が変更されます。この規則はリンカーまたはプロセッサのオプションには適用されません。

コマンド行オプションの構文では、角括弧 ( [] ) の項目はオプションです。選択するリテラル項目をバーで区切ったリストは、{yes | no | maybe } のように、中括弧で囲まれています。値なしでフラグが表示されている場合は、通常、リストの最初の項目がデフォルト値を示しています。

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

次のオプションがサポートされています。

-aligncommon[={1|2|4|8|16}]

共通ブロックおよび標準数値連続型内のデータの整列を指定します。

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

デフォルト (-aligncommon を指定しない場合) では、最大 4 バイトの境界上に、共通ブロックおよび標準数値連続型データが整列します。

値を付けずに -aligncommon だけを指定すると、すべてのプラットフォームでデフォルトの 1 に設定され、すべてのデータが 1 バイト境界に整列されます。要素間のパディングは行われません。

64 ビットに対応していないプラットフォーム用にコンパイルする場合、-aligncommon=16-aligncommon=8 に戻ります。

SPARC プラットフォームで -aligncommon=1 を使用すると、不正な整列によるバスエラーが発生する可能性があります。この場合は、-xmemalign オプションの適切な選択を使用する必要があります。アプリケーションに応じて、-xmemalign=1s-xmemalign=4i、または -xmemalign=8i を指定すると、パフォーマンスを最適化するとともに、セグメント例外を回避できます。

関連項目: -xmemalign

-ansi

非標準の拡張機能を識別します。

-arg=local

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

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

このオプションは、従来の FORTRAN 77 プログラムとの互換性のために用意されています。このオプションに依存するコードは、標準外です。

-autopar

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

適切なループを検索して並列化します。依存関係の解析 (データの依存関係に関するループの解析) を行います。ループの再構築を行います。最適化が -O3 以上でない場合は、-O3 に上げられます。

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

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

また、-autopar はシングルプロセッサシステムでは不適切で、パフォーマンスが低下します。

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

-xautopar コンパイラオプションによって自動的に並列化されるプログラムを実行する場合に、使用するスレッド数を指定するには、OMP_NUM_THREADS 環境変数を使用します。OMP_NUM_THREADS が設定されない場合、使用されるデフォルトのスレッド数は 2 です。より多くのスレッドを使用するには、OMP_NUM_THREADS をより高い値に設定します。1 つのスレッドだけで実行する場合は、OMP_NUM_THREADS を 1 に設定します。一般的に、OMP_NUM_THREADS は、実行中のシステム上で使用可能な仮想プロセッサ数に設定します。これは、Oracle Solaris の psrinfo(1M) コマンドを使用して判別できます。詳細は、『OpenMP API ユーザーズガイド』を参照してください。

-autopar を使用してコンパイルとリンクを一度に実行する場合、リンクには自動的にマイクロタスキングライブラリおよびスレッドに対して安全な Fortran 実行時ライブラリが含まれます。-autopar を使用してコンパイルとリンクを別々に実行する場合、リンクにも f95 -autopar を指定しなければいけません。

-B{dynamic|static}

動的または静的ライブラリリンクを指定します。

このフラグは、動的ライブラリリンクを使用するか、コマンドであとからリストされるライブラリに静的リンクが必要かを示します。これはリンカーオプションです。

-Bdynamic

動的リンク (共有ライブラリ) を優先します。

-Bstatic

静的リンク (共有ライブラリなし) を優先します。

デフォルトは -Bdynamic です。

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

ただし、-Bdynamic を指定した場合に静的ライブラリしか見つからないと、その静的ライブラリとリンクされます。警告メッセージは表示されません。

コマンド行で -Bdynamic-Bstatic を切り替えて、一部のライブラリを静的に、ほかのライブラリを動的にリンクさせることができます。

これらはリンカーオプションなので、-Bstatic または -Bdynamic を指定してコンパイルする場合、コンパイルとリンクを別々の手順で行うときには、リンカーコマンドでも同じオプションを指定する必要があります。

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

注:Fortran 実行時システムの静的ライブラリと動的ライブラリを組み合わせて使用することは推奨しません。リンカーエラーが発生したり、データが警告なしに破壊されたりする可能性があります。必ず、Fortran 実行時システムの最新の共有動的ライブラリとリンクさせてください。

-C

範囲を超えた添字や適合性について配列参照をチェックします。

添字の付いた配列が宣言されている範囲を超えると、セグメント例外などの予期しない結果になる場合があります。-C オプションは、実行中にソースコードで配列の添字違反が発生していないかどうかをチェックします。

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

-C を指定してコンパイルすると、配列構文を使用した、文内での実行時の配列適合性のチェックも追加されます。

このオプションを使用すると、実行可能ファイルのサイズが増え、実行パフォーマンスが低下します。これは、デバッグ時にのみ使用する必要があります。

-c

各ソースファイルの .o ファイルをリンクせずにコンパイルおよび生成します。-o オプションを使用すると、1 つのオブジェクトファイルを明示的に指定できます。コンパイラが各入力ファイルに対応するオブジェクトコードを生成する場合は、現在の作業ディレクトリにオブジェクトファイルを作成します。リンクを行わないと、オブジェクトファイルの削除も行われません。

-copyargs

定数の引数への代入を可能にします。

定数である仮引数を副プログラムで変更できるようにします。このオプションの目的は、定数の変更で実行時エラーが発生することなく従来のコードでコンパイルおよび実行できるようにすることのみです。

-copyargs を指定しない場合、定数の引数をサブルーチンに渡し、そのサブルーチン内でその定数を変更しようとすると、実行時エラーが発生します。

-copyargs を指定した場合、定数の引数をサブルーチンに渡し、そのサブルーチン内でその定数を変更しようとしても、必ずしも実行時エラーが発生するとはかぎりません。

-copyargs フラグを指定したコンパイルが必要なプログラムは、Fortran 標準に準拠していません。

-Dname[=def]

ソースコードプリプロセッサのシンボルを定義します。

これはソースでの "#define" 指令と同等です。def が指定されていない場合、名前は「1」に定義されます。このオプションは、.F .F90 .F95 .F03 の接尾辞のファイルにのみ適用されます。

次のシンボルは、適切なシステム上で事前定義されます。先頭にある 2 つの下線に留意してください。__sparc__sparcv8__sparcv9__unix__sun__i386__x86_64__amd64__SVR4__SunOS_5_10__SunOS_5_11

Fortran の構文では、これらのシンボルの実際の値をサポートしていない場合があります。これらは条件文 #ifdef __sparc などの fpp または cpp プリプロセッサ文でのみ指定する必要があります。

対応する古い値 (以前のリリース) は、sparcunixsun です。

これらの以前に事前定義されていた値は、今後のリリースで削除される可能性があります。

f95 はデフォルトで fpp(1) プリプロセッサを使用します。C プリプロセッサ cpp(1) と同様に、fpp はソースコードマクロを展開して、コードを条件付きでコンパイルできます。ただし、cpp とは異なり、fpp は Fortran 構文を理解できるので、Fortran プリプロセッサとしてはこちらを使用することをお勧めします。-xpp=cpp フラグを使用すると、コンパイラは fpp ではなく cpp を使用します。

-dalign

COMMON ブロックと標準数値連続型を配置し、より高速なマルチワードのロード/ストアを生成します。

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

-dalign は、次と同等なマクロです。

  • SPARC プラットフォームの場合は -xmemalign=8s -aligncommon=16

  • 32 ビット x86 プラットフォームの場合は -aligncommon=8

  • 64 ビット x86 プラットフォームの場合は -aligncommon=16 です。

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

-dalign-xtypemap=real:64,double:64,integer:64 とともに使用すると、SPARC で 64 ビット整数変数がダブルワードで境界整列されます。

-dalign を使用した結果、非標準の FORTRAN 整列になる場合があります。これが原因で、EQUIVALENCE や COMMON の変数に問題が生じることがあります。さらに、-dalign が必要な場合、移植性のないプログラムになります。

-dalign を使用して 1 つの副プログラムまたはファイルをコンパイルした場合、プログラムユニット内のすべての副プログラムおよびファイルも、-dalign を使用してコンパイルする必要があります。

-dalign-aligncommon を呼び出すので、標準数値連続型の整列にも影響があります。

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

-dbl_align_all[={yes|no}]

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

値が yes の場合、変数はすべて 8 バイトの境界に整列されます。デフォルトは -dbl_align_all=no です。-dbl_align_all 単独では -dbl_align_all=yes と同じです。

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

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

使用する場合、このオプションを指定してすべてのルーチンをコンパイルする必要があります。

-depend[=yes|no]

データ依存関係についてループを解析し、再構築します。

-depend-depend=yes と同じであり、ループ依存関係の解析を有効にします。これはすべてのプラットフォームでデフォルトでオンになっています。

-depend=no は、DO ループのデータ依存関係解析を無効にします。

-dryrun

f95 ドライバで作成されるコマンドを表示しますが、コンパイルは行いません。

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

-d{y|n}

実行可能ファイルに対して動的ライブラリを使用できるかどうか指定します。

実行可能ファイル全体に対して動的ライブラリを使用できるかどうか指定します。このフラグはリンカーオプションです。

-dy

動的ライブラリを許可します。

-dn

動的ライブラリを許可しません。

デフォルトは -dy です。

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

-d{y|n} はリンカーオプションです。これらのオプションを使用してコンパイルとリンクを別々の手順で行う場合は、最後のリンク手順でも同じオプションを指定する必要があります。

64 ビットの環境では、多くのシステムライブラリは共有の動的ライブラリとしてのみ利用できます。これらのシステムライブラリには、libm.so および libc.so があります。libm.a と libc.a は提供していません。その結果、-Bstatic-dn を使用すると、64 ビット Oracle Solaris OS プラットフォームと、Solaris 10 リリース以降の 32 ビット Oracle Solaris x86 プラットフォームおよび 32 ビット Oracle Solaris プラットフォームでリンクエラーが生じる可能性があります。この場合、アプリケーションを動的ライブラリとリンクさせる必要があります。

-e

ソース行の最大長を 132 文字に拡張します。

コンパイラは 132 桁目まで各行の右側を空白で埋めます。-e を指定してコンパイルするときに継続行を使用する場合、行をまたいで文字定数を分割しないでください。分割させると定数に不要な空白が挿入されることがあります。

-erroff[={%all|%none|taglist}]

タグ名によって一覧表示された警告メッセージを抑制します。

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

関連項目: -errtags

-errtags[={yes|no}]

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

コンパイラの内部エラータグ名がエラーメッセージとともに表示されます。デフォルトでは、タグは表示されません (-errtags=no)。第 2 デフォルト (値を付けない -errtags) は -errtags=yes になります。

-errwarn[={%all|%none|taglist}]

警告メッセージをエラーとして処理します。

taglist は、エラーとして処理する警告メッセージのコンマ区切りのタグ名リストを指定します。%all とだけ指定すると、すべての警告がエラーとして処理されます。%none とだけ指定すると、どの警告もエラーとして処理されません。

関連項目: -errtags

-ext_names=e

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

e は、plainunderscores、または fsecond-underscore のいずれかにする必要があります。

plain

後続の下線は使用しません。

underscores

後続の下線を使用します。

fsecond-underscore

下線を含む外部名に二重下線を付け、下線を含まない外部名に一重下線を付けます。

デフォルトは underscores です。

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

fsecond-underscore は、gfortran との互換性のために用意されています。

-F

ソースファイルプリプロセッサを呼び出しますが、コンパイルしません。

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

fpp は Fortran のデフォルトのプリプロセッサです。-xpp=cpp を指定する代わりに、C プリプロセッサ cpp を選択できます。

-f

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

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

-f-aligncommon=16 と同様の従来のオプションです。-aligncommon を使用することをお勧めします。

このオプションは実数および複素数の両方のデータに適用されます。

生成されるコードは、標準でない可能性があり、移植できない場合があります。

ある 1 つの副プログラムに -f を付けてコンパイルした場合は、プログラムのすべての副プログラムに -f を付けてコンパイルしてください。

このオプションを単独で使用すると、コンパイラで倍精度および 4 倍精度のデータに対して高速のダブルワードのフェッチ/ストア命令を生成することはできません。これを行うのは -dalign だけです。

-f77[=list]

Fortran 77 互換性モードを選択します。

list は、次のキーワードから選択された、コンマで区切られたリストです。

%all

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

%none

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

output

リスト型出力や名前リスト出力など、f77 形式の出力を生成します。

input

f77 で使用できる入力形式を受け付けます。

tab

無制限のソース行の長さを含む、f77 形式の TAB 書式設定を有効にします。また、72 文字未満のソース行に対して、空白文字のパディングは行われません。

backslash

文字列のバックスラッシュ文字をエスケープシーケンスの先頭として受け入れます。

intrinsics

組み込み関数の認識を FORTRAN 77 組み込み関数のみに制限します。

logical

次に示す論理変数の FORTRAN 77 での使用法を受け入れます。

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

  • 条件文で論理式の代わりに算術式を使用できるようにします。.NE.0.TRUE を表します。

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

subscript

配列添字として整数式以外の表現を許可します。

misc

Fortran 95 でサポートされていない、Fortran 77 のそのほかの拡張機能を許可します。

すべてのキーワードの前に no% を付けて対応する機能を無効にできます。

-f77=%all,no%backslash

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

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

-f77 とそれによる互換性機能の詳細については、『Fortran ユーザーズガイド』の FORTRAN 77 の互換性に関する章を参照してください。正しくない結果を生む可能性のある標準外の FORTRAN 77 プログラミングを処理する方法については、-xalias フラグも参照してください。

Fortran 77 コンパイラのスクリプトは、利便性を考慮して提供されています。f77 コマンド行スクリプトは、Fortran 77 互換性用の一連の適切なオプションを指定して f95 コンパイラを呼び出します。詳細は、f77(1) のマニュアルページを参照してください。

-fast

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

-fast は、特定のアプリケーションに高いパフォーマンスをもたらします。しかし、オプションによっては、アプリケーションで使用できない場合があります。-fast を使用して、最大のパフォーマンスを得るためにアプリケーションをコンパイルしてください。ただし、さらに調整が必要な場合があります。-fast を指定してコンパイルしたプログラムが正しく動作しない場合、-fast を形成している個々のオプションを調査して、プログラムを正しく動作させるオプションだけを呼び出してください。

また、-fast でコンパイルされたプログラムは、使用するデータセットにより、高いパフォーマンスと正確な結果を実現できないことがあります。浮動小数点演算の特定プロパティーに依存しているプログラムは、-fast を使用してコンパイルしないでください。

-fast では次のオプションが選択されます。

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

    f95 -fast -xtarget=generic ...
  • -O5 は最適化レベル 5 を選択します。

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

  • -fsimple=2 は、積極的な浮動小数点演算の最適化を選択します。このオプションは、IEEE 754 規格の厳密な準拠が必要なプログラムには適していない可能性があります。

  • -dalign は、高速なダブルワードロードおよびストア命令の生成と、共通ブロックでの自然整列境界上の倍精度および 4 倍精度データの整列を選択します。このオプションを使用すると、標準外の形式で Fortran データの境界整列が行われる可能性があります。

  • -xlibmopt は最適化された数学ライブラリのリンクを選択します。

  • -depend=yes は、DO ループをさらに最適化する依存関係解析を選択します。(最適化レベルが -O3 以上の場合、このオプションが常に選択されます)。

  • -fma=fused は、浮動小数点の積和演算 (FMA) 命令の自動生成を有効にします。

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

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

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

  • -xvector=lib は、ベクトル化した数学ライブラリを選択します。(SPARC)

  • -xvector および -xlibmopt で必要になるので、-fround=nearest が選択されます。

  • -nofstore は、式の精度を強制的に結果の精度にする設定を取り消します。(x86)

  • x86 で -xregs=frameptr を使用すると、コンパイラは汎用レジスタとしてフレームポインタレジスタを使用できます。特に C、Fortran、および C++ の混合ソースコードをコンパイルする場合は、その詳細について、-xregs=frameptr の説明を参照してください。-fast のあとに -xregs=no%frameptr を指定すると、フレームポインタレジスタは通常の用途でのレジスタとして使用されません。(x86)

コンポーネントオプションフラグのこの選択内容は、各リリースのコンパイラで変更される可能性があります。-fast で設定されたオプションの詳細は、『Fortran ユーザーズガイド』を参照してください。

実行中のシステムで -fast の展開を調べるには、次のコマンドを実行します。

f95 -fast -dryrun |& grep ###

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

f95 -fast -fsimple=1 -xnolibmopt

この例では、-fsimple=2 フラグをオーバーライドし、-fast で選択された -xlibmopt を無効にします。

-fast は、

-dalign -fns -fsimple=2

を選択するので、このオプションを指定してコンパイルしたプログラムの結果、標準外の浮動小数点演算、標準外のデータ整列、および標準外の順序の式評価になる可能性があります。これらの選択オプションは、ほとんどのプログラムに適していない可能性があります。

また、-fast-xlibmopt-xvector=lib を選択するので、-fast を使用するときにデフォルトの丸めモードである -fround=nearest が想定され必要になります。

コンパイル手順とリンク手順を分ける場合、-fast を指定してコンパイルするときには、必ずリンクするときにも -fast を指定してください。

-fixed

固定形式のソース入力を想定します。

すべてのソースファイルを Fortran 95 固定形式と解釈します。ファイルの接尾辞をオーバーライドします。

-flags

-help と同義です。

-fma[={none|fused}]

浮動小数点の積和演算 (FMA) 命令の自動生成を有効にします。-fma=none を指定すると、これらの命令の生成を無効にします。-fma=fused を指定すると、コンパイラは浮動小数点の積和演算 (FMA) 命令を使用して、コードのパフォーマンスを改善する機会を検出しようとします。

デフォルトは -fma=none です。

積和演算命令を生成するための最低限のアーキテクチャーの要件は、SPARC では -xarch=sparcfmaf、x86 では -xarch=avx2 です。積和演算 (FMA) 命令をサポートしていないプラットフォームでプログラムが実行されないようにするため、コンパイラは積和演算 (FMA) 命令を生成する場合、バイナリプログラムにマーク付けをします。最低限のアーキテクチャーが使用されていない場合、-fma=fused は無効になります。

積和演算 (FMA) 命令により、積と和の間で中間の丸め手順が排除されます。その結果、-fma=fused を指定してコンパイルしたプログラムは、精度は減少ではなく増加する傾向にありますが、異なる結果になることがあります。

-fnonstd

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

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

-fns -ftrap=common

次の目的で浮動小数点算術ハードウェアを初期化します。

  • 例外を発生して異常終了します。

  • 速度が向上する場合非正規化数をゼロにフラッシュします。

有効にするには、このフラグを指定してメインプログラムをコンパイルする必要があります。

非正規化数のアンダーフローおよび処理の詳細は、-fns を参照してください。

-fnonstd オプションは、浮動小数点オーバーフロー、ゼロ除算、および不正演算例外のハードウェアトラップを有効にします。これらは、SIGFPE シグナルに変換され、SIGFPE ハンドラがないプログラムは異常終了します。詳細は、 ieee_handler (3M) 、『数値計算ガイド』、および『Fortran プログラミングガイド』を参照してください。

-fns[={yes|no}]

非標準浮動小数点を選択します。

オプションの =yes または =no を使用すると、-fast のように、-fns を含むほかのマクロフラグに続く -fns フラグを切り替えることができます。

-fns-fns=yes と同じです。-fns=yes では非標準の浮動小数点が選択されます。デフォルトである -fns=no は標準の浮動小数点モードを使用します。

-fast では -fns が選択されます。

SPARC プラットフォームでは、非標準の浮動小数点モードは「段階的アンダーフロー」を無効にします。つまり、小さな結果は、非正規数にはならず、ゼロに切り捨てられます。さらに、このモードでは、非正規のオペランドが報告なしにゼロに置き換えられます。段階的アンダーフローや非正規の数値をハードウェアでサポートしていない SPARC プラットフォーム上でこのオプションを使用すると、一部のプログラムのパフォーマンスが大幅に向上する場合があります。

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

x86 では、-fns は SSE flush-to-zero モードを選択します。利用可能な場合には、denormals-are-zero モードが選択されます。このフラグは、非正規数の結果をゼロに切り捨てます。また、利用可能な場合には、非正規数オペランドもゼロとして扱われます。

このフラグは、SSE または SSE2 命令セットを利用しない従来の x87 浮動小数点演算には影響しません。

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

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

-fpover[={yes|no}]

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

-fpover=yes を指定すると、入出力ライブラリは書式付きの入力で浮動小数点オーバーフローを検出し、演算例外を引き起こします。—ftrap とともに使用すると、完全な診断情報が表示されます。

デフォルトでは、このようなオーバーフローの検出は行いません (-fpover=no)。-fpover-fpover=yes と同等です。

-fpp

fpp を使用した入力ファイルの前処理を強制します。

ファイルの拡張子に関係なく、コマンド行にリストされた全入力ソースファイルを fpp プリプロセッサに渡します。(.F90.F95.FF03 の拡張子の付いたファイルは fpp で自動的に前処理されます。)

関連項目: -xpp

-fopenmp

-xopenmp=parallel と同じです。

-fprecision=p

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

x86 では、浮動小数点精度モードを、singledouble、または extended のいずれかに設定します。

psingledouble の場合、丸め精度モードは、プログラムの実行が始まるときに、それぞれ単精度、倍精度に設定されます。pextended であるか、-fprecision フラグが使用されていなければ、丸め精度モードは拡張精度に初期化されます。

このオプションは、x86 システムでメインプログラムのコンパイル時に使用する場合にのみ有効で、64 ビットプラットフォーム (-m64) または SSE2 対応プロセッサ (-xarch=sse2) でコンパイルする場合は無視されます。SPARC プラットフォームでは -fprecision は無視されます。

-free

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

すべてのソースファイルを Fortran 95 自由形式として解釈します。ファイルの接尾辞をオーバーライドします。

-fround=r

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

r は、nearest tozeronegativepositive のいずれかである必要があります。

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

rtozeronegativepositive のいずれかにすると、プログラムが実行を開始するときに、丸め方向モードがそれぞれ、ゼロの方向に丸める、負の無限の方向に丸める、正の無限の方向に丸めるに設定されます。rnearest のとき、あるいは -fround フラグを使用しないとき、丸め方向モードは初期値から変更されません (デフォルトは nearest)。

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

-xvector または -xlibmopt でのコンパイルには、デフォルトの丸めが必要です。-xvector または -xlibmopt のどちらか、あるいはその両方を使用してコンパイルされたライブラリにリンクするプログラムは、デフォルトの丸めが有効になっていることを確認する必要があります。

-fserialio

プログラムが一度に複数のスレッド内で I/O を実行しないことを指定するリンクオプション。競合状態を回避するため、同期を実行せずに Fortran I/O 文を実行することを可能にします。このオプションは、実行可能プログラムの作成時にのみ指定してください。共有オブジェクトライブラリの作成時や、プログラムに Sun Forte 7 リリースより前の Sun f77 バージョンでコンパイルされたコードが含まれる場合には、これは指定すべきではありません。

-fsimple[=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 のデフォルトの丸めとトラップモードが、プロセスの初期化以後も変わらない。

  • 浮動小数点例外以外には、目に見える結果が生じない演算は削除できる。

  • 無限大数または非数をオペランドとする演算は、その結果に非数を伝える必要がない。x*0 は 0 によって置き換えられる可能性がある。

  • 演算はゼロの符号を区別しない。

-fsimple=1 の場合、四捨五入や例外を考慮せずに完全な最適化を行うことは許可されていません。特に、浮動小数点演算を、実行時に一定に保たれる丸めモードにおいて異なる結果を生成する浮動小数点演算と置き換えることはできません。

-fsimple=2

-fsimple=1 以外に、積極的な浮動小数点演算の最適化を許可し、この結果、丸めの変化によって、多くのプログラムが異なる数値結果を生じる可能性があります。また、-xvector=simd を指定してコンパイルするときに、SIMD 命令を使用して縮約を計算できるようにします。

特に、Fortran の標準規則は、部分式の明示的な括弧を重視して式の評価の配列を制御するため、-fsimple=2 によって違反が生じることがあります。この結果、この規則に依存したプログラムと丸めの数値の差が生じる可能性があります。

たとえば、-fsimple=2 を使用すると、コンパイラは C-(A-B) を (C-A)+B として評価する可能性があるため、最終的なコードがより良好に最適化されている場合、明示的な括弧について標準規則の違反が生じます。また、コンパイラは、x/y の反復演算を x*z で置き換えることがあります。この場合、z=1/y が 1 回だけ計算されて一時的に保存されるため、コストのかかる割り算が除去されます。

浮動小数点演算の特定プロパティーに依存するプログラムは、-fsimple=2 を指定してコンパイルしないでください。

-fsimple=2 を指定していても、オプティマイザは、指定しなければ発生しない浮動小数点例外をプログラムに発生させるような状況を招かないようにします。

-fast-fsimple=2 を選択します。

-fstore

(x86) 浮動小数点式の精度を強制的に使用します。

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

-ftrap=t

浮動小数点トラップモードを設定します。

このオプションは、起動時に有効になる IEEE 浮動小数点トラップを設定します。

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

%all%nonecommon[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 関数の場合と同じです。

[no%]division

ゼロによる除算をトラップします [しません]。

[no%]inexact

正確でない結果をトラップします [しません]。

[no%]invalid

無効な演算をトラップします [しません]。

[no%]overflow

オーバーフローをトラップします [しません]。

[no%]underflow

アンダーフローをトラップします [しません]。

%all

前述のすべてをトラップします。

%none

前述のどれもトラップしません。

common

無効、ゼロ除算、オーバーフローをトラップします。

[no%] 形式のオプションは、%allcommon の値の意味を変更するときだけ使用し、例に示すように、これらのいずれかの値とともに使用する必要があります。[no%] 形式のオプション自体は、特定のトラップを明示的に無効にするものではありません。

このオプションを有効にするには、メインプログラムをコンパイルするときに使用する必要があります。

-G

動的にリンクされた実行可能ファイルではなく共有オブジェクトを生成します。このオプションは、-dn オプションとともに使用することはできず、ld に渡されます。

-G オプションを使用すると、コンパイラはデフォルトの -l オプションを ld に渡しません。共有ライブラリを別の共有ライブラリに依存させる場合は、必要な -l オプションをコマンド行に渡す必要があります。

コンパイル時とリンク時の両方に指定する必要があるコンパイラオプションと -G オプションを組み合わせて共有ライブラリを作成した場合は、生成された共有オブジェクトとのリンクでも、必ず同じオプションを指定してください。

-xcode の説明に記述されているように、共有オブジェクトを作成するときは、64 ビット SPARC アーキテクチャー用にコンパイルされるすべてのオブジェクトファイルもまた、明示的な -xcode 値を使用してコンパイルする必要があります。

-g

-g[n] を参照してください。

-g[n]

デバッグおよびパフォーマンス解析用にコンパイルします。

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

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

Oracle Solaris Studio パフォーマンスアナライザの機能を最大限に利用するには、-g オプションを指定してコンパイルします。一部のパフォーマンス分析機能は -g を必要としませんが、注釈付きのソースコード、一部の関数レベルの情報、およびコンパイラ解説メッセージを確認するには、-g でコンパイルする必要があります。(analyzer(1) のマニュアルページを参照してください)。

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

解説メッセージは、コンパイラが実際に最適化を実行した場合に限り表示されます。-xO4-fast などを使用して高度な最適化レベルを要求すると、解説メッセージの表示される可能性が高くなります。

-g は、さまざまなよりプリミティブなオプションに展開されるマクロとして実装されます。展開の詳細については、-xdebuginfo を参照してください。

値:

-g

標準のデバッグ情報を生成します。

-gnone

デバッグ情報は生成されません。これはデフォルト値です。

-g1

事後デバッグの際に重要と思われるファイル、行番号、および簡単なパラメータ情報を生成します。

-g2

-g と同じです。

-g3

追加のデバッグ情報 (現在はマクロの定義情報のみで構成されます) を生成します。この追加情報により、-g のみを使用したコンパイルと比較して、結果の .o および実行可能ファイルのデバッグ情報のサイズが増える可能性があります。

-h nm

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

ライブラリに内部名がある場合、実行可能ファイルを実行するたびに、リンカーは同じ内部名のライブラリを検出する必要があります。ファイルはどのライブラリ検索パスにあってもかまいません。ライブラリに内部名がない場合、リンカーは作成時と同じパスでライブラリを検出する必要があります。内部名があると実行時の柔軟性が高まります。

備考:

  • -hnm の間のスペースはオプションです。

  • -G なしで -hnm を使用しても意味がありません。

  • 通常、-h および -o のあとの名前は同じです。

  • -hnm はリンカーオプションです。

  • -hnm は、動的ライブラリ用のバージョンを簡略化します。

Oracle Solaris OS の『リンカーとライブラリ』を参照してください。

-help

f95 コマンド行オプションをリストします。

関連項目: -xhelp

-Ipath

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

ディレクトリパス path をインクルードファイル検索パスの先頭に挿入します。-Ipath の間に空白があってもかまいません。

インクルードファイル検索パスはインクルードファイルの検索対象のディレクトリのリストです。この検索パスは次の要素で使用されます。

  • プリプロセッサディレクティブ #include

  • f95INCLUDE

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

f95 -I/usr/applib growth.F

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

検索パスは、MODULE ファイルの検索にも使用されます。

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

  1. ソースファイルを含むディレクトリ

  2. -I オプションで指定されたディレクトリパス

  3. コンパイラのデフォルトリスト内にあるディレクトリ

  4. /usr/include

-i8

(-i8 のオプションはありません)。

このコンパイラで 8 バイト INTEGER を指定するには、-xtypemap=integer:64 を使用します。

-inline={%auto|[no%]function|...}

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

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

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

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

たとえば、特定のルーチン (gflub) のインライン化が無効になっているときに自動インライン化を有効にするには、次のように指定します。

-O5 -inline=%auto,no%gflub

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

-fast -inline=sourcefile.f95

ここで、-fast は、-O5 と同義であり、自動インライン化を有効にします。ただし、空のリストを指定した -inline= ではインライン化は無効になります。

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

ルーチンは、次のいずれかの条件が当てはまる場合はインライン化されず、警告は表示されません。

  • 最適化のレベルは -xO3 未満です。

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

  • インライン化の効果がないか安全でない。

  • -xipo も指定されている場合を除き、ソースはコンパイルされているファイル内にありません。

-iorounding[={compatible | processor-defined}]

書式付き入出力のための丸めモードを設定します。

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

-iorounding=compatible と指定する場合は、データ変換によって得られる値は、2 つのもっとも近い表示値のうち、より近い方の表示値になります。値が表示値のちょうど中間である場合は、0 から離れている方の表示値になります。

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

引数なしで -iorounding を指定した場合は -iorounding=compatible と同等です。

-Kpic

-pic と同義です。

-KPIC

-PIC と同義です。

-keepmod[={yes|no}]

モジュールファイルが存在し、その内容が最新のコンパイルで変更されていない場合、コンパイルによって同じ名前の新しいモジュールファイルが作成されることになっている場合でも、そのファイルは置き換えられません。モジュールファイルの内容がコンパイルで変更されないので、唯一の影響は、既存のモジュールファイルのタイムスタンプが保持されるということです。

-keepmod が指定されない場合は、デフォルトとして -keepmod=yes が使用されます。このデフォルトは、以前のリリースの Oracle Solaris Studio Fortran とは異なることに注意してください。

このオプションは、-xM コンパイルオプションで生成される依存関係とともに使用するのがもっとも適しています。このオプションは、内容が変更されないときにモジュールファイルのタイムスタンプを保持することによって、このモジュールファイルに依存するソースファイルのコンパイルのカスケードを防止します。これは増分構築で非常に役立ち、構築時間を大幅に短縮できます。

このオプションをユーザー指定の依存関係とともに使用し、対応するソースファイルへの依存関係のあるモジュールを作成する方法について明示的な構築規則がユーザーにある場合、このオプションを指定すると、モジュールファイルのタイムスタンプが失効しているためにソースファイルが一度しか変更されていない場合でも、ソースファイルが複数回再コンパイルされることがあります。

-keeptmp

コンパイル中に作成された一時ファイルを保持します。

-Lpath

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

path は、検索リストの先頭に追加されます。-Lpath の間の空白文字はオプションです。

注: -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 の前に置きます。

リンカーは、複数の場所でライブラリを検索します。詳細は、『Fortran プログラミングガイド』の「ライブラリ」の章を参照してください。ld(1) も参照してください。

-libmil

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

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

-library=sunperf

Oracle Solaris Studio 提供のパフォーマンスライブラリにリンクします。

-loopinfo

並列化されているループを示します。

並列化されているループとされていないループを示します。このオプションは通常、-autopar オプションとともに使用します。これは標準エラー時のメッセージのリストを生成します。

-Mpath

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

現在のコンパイルで参照されている Fortran 95 モジュールの検索で、指定された path を調べます。現在のディレクトリのほかに、このパスが調べられます。

path には、ディレクトリ、.a アーカイブファイル (プリコンパイル済みモジュールファイルの場合)、または .mod プリコンパイル済みモジュールファイルを指定できます。コンパイラは、ファイルの内容を検査してファイルの種類を判定します。

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

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

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

これは、-M フラグのみが表示されている場合は、-M フラグに指定されているすべてのオブジェクトの前に現在のディレクトリでモジュール検索が行われることを意味します。以前のリリースの動作をエミュレートするには、次を使用します。

-moddir=empty-dir -Mdir -M

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

検索対象の場所でファイルが見つからない場合は、—I path で指定されたディレクトリでモジュールファイルが検索されます。

-Mpath の間に空白文字を入れてもかまいません。たとえば、-M /home/siri/PK15/Modules のようにします。

Oracle Solaris で、アーカイブやモジュールファイル以外の通常ファイルを path に指定した場合は、コンパイラは ld オプションをリンカーに渡し、リンカーマップファイルとしてファイルを処理します。これは C および C++ コンパイラと同様の便利な機能です。

-m32 | -m64

コンパイルされたバイナリオブジェクトのメモリーモデルを指定します。

32 ビット実行可能ファイルおよび共有ライブラリを作成するには、-m32 を使用します。64 ビット実行可能ファイルおよび共有ライブラリを作成するには、-m64 を使用します。

ILP32 メモリーモデル (32 ビット int、long、ポインタデータ型) は、64 ビット対応ではないすべての Oracle Solaris プラットフォームおよび Linux プラットフォームでのデフォルトです。LP64 メモリーモデル (64 ビット long、ポインタデータ型) は 64 ビット対応の Linux プラットフォームのデフォルトです。-m64 は LP64 モデル対応のプラットフォームでのみ使用できます。

-m32 でコンパイルされたオブジェクトファイルまたはライブラリは、-m64 でコンパイルされたオブジェクトファイルまたはライブラリとリンクできません。

大量の静的データを持つアプリケーションを -m64 を使用してコンパイルするときは、-xmodel=medium も必要になることがあります。

一部の Linux プラットフォームは、ミディアムモデルをサポートしていません。

旧バージョンのコンパイラでは、-xarch で命令セットを選択することで、メモリーモデルの ILP32 または LP64 が暗黙に指定されていました。Sun Studio 12 以降のコンパイラでは、このようなことはありません。ほとんどのプラットフォームでは、64 ビットオブジェクトを作成するのに、コマンド行に -m64 を追加するだけです。

Oracle Solaris では、-m32 がデフォルトです。64 ビットプログラムをサポートしている Linux システムでは、-m64 -xarch=sse2 がデフォルト値です。

関連項目: -xarch

-moddir=path

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

.mod ファイルを書き込むためのデフォルトディレクトリは現在のディレクトリです。

-mt[={yes|no}]

このオプションを使用して、Oracle Solaris スレッドまたは POSIX スレッド API を使用しているマルチスレッド化コードをコンパイルおよびリンクします。-mt=yes オプションにより、ライブラリが適切な順序でリンクされることが保証されます。

このオプションは -D_REENTRANT をプリプロセッサに渡します。

Linux プラットフォーム上では、POSIX スレッドの API のみが使用できます (Linux プラットフォームには libthread はありません)。したがって、Linux プラットフォームで -mt=yes を使用すると、—lthread の代わりに —lpthread が追加されます。Linux プラットフォームで POSIX スレッドを使用するには、—mt を使用してコンパイルします。

-G を使用してコンパイルする場合は、-mt=yes を指定しても、-lthread-lpthread のどちらも自動的には含められません。共有ライブラリを構築する場合は、これらのライブラリを明示的にリストする必要があります。

(OpenMP 共有メモリー並列化 API を使用するための) —xopenmp オプションには、-mt=yes が自動的に含まれます。

-mt=yes を指定してコンパイルを実行し、リンクを個別の手順でリンクする場合は、コンパイル手順と同様にリンク手順でも -mt=yes オプションを使用する必要があります。-mt=yes を使用して 1 つの変換ユニットをコンパイルおよびリンクする場合は、-mt=yes を指定してプログラムのすべてのユニットをコンパイルおよびリンクする必要があります。

-mt=yes は、コンパイラのデフォルトの動作です。この動作が望ましくない場合は、オプション -mt=no を使用してください。

オプション -mt は、-mt=yes と同じです。

関連項目: -xnolib

-native

ホストシステムに合わせて最適化を行います。

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

-noautopar

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

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

-nodepend

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

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

-nofstore

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

式に、-fstore によって呼び出された宛先の変数の精度を強制的に持たせることを取り消します。

-nofstore は、-fast によって呼び出されます。-fstore が通常のデフォルトです。

-nolib

システムライブラリとのリンクを行いません。

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

最終的な実行には、システムおよび言語ライブラリが必要です。手動でライブラリとのリンクを行なってください。このオプションを使用すると、すべてを管理できます (責任も担います)。

-nolib オプションを使用すると、必要なライブラリを静的にリンクするといった作業が容易になります。

-nolibmil

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

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

demo% f95 -fast -nolibmil ...
-noreduction

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

-reduction は並列化オプションとともに使用されます。このオプションは、コマンド行の前方に表示されている -reduction を無効にします。

-norunpath

実行時ライブラリ検索パスを実行可能ファイルに組み込みません。

実行可能ファイルが共有ライブラリを使用する場合、コンパイラは通常、実行時のリンカーに対して共有ライブラリの場所がわかるようにパスを組み込みます。このパスはコンパイラのインストール先ディレクトリによって異なります。-norunpath オプションは、実行可能ファイルにパスが組み込まれないようにします。

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

-O[n]

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

-O[n] が指定されていない場合、ローカルな共通部分式の除去や不要コードの解析に限られた基本レベルの最適化だけが実行されます。プログラムのパフォーマンスは、明示的な最適化レベルを指定してコンパイルすると大幅に改善されることがあります。

-On の各レベルには、それよりも低いレベルでの最適化が含まれています。一般に、最適化のレベルが高いほど、実行時パフォーマンスは向上します。しかし、最適化レベルが高ければ、それだけコンパイル時間が増え、実行可能ファイルが大きくなる可能性があります。

-On では 5 つの最適化レベルを指定できます。コンパイラによって各レベルで実行される実際の最適化は、コンパイラのリリースごとに異なる場合があります。

通常のプログラムには、-O (レベル -O3) または -fast (レベル -O5) を使用することをお勧めします。

-g オプションは最適化とともに使用できます。

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

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

-O

現実の多くのアプリケーションにとってほぼ最高のパフォーマンスをもたらす可能性の高いレベル (-O3 と同等) に最適化します。

-O1

最小限のローカルな最適化 (ピープホール) だけを行います。

-O2

基本的なローカルおよびグローバルな最適化を行います。通常、生成されるコードのサイズがもっとも小さくなります。

-O3

関数レベルでグローバルな最適化を行います。一般に、このレベルと -O4 は、-xspace オプションとともに使用すると、通常、最小コードサイズになります。自動的に -depend データ依存関係解析を有効にします。

-O4

同じファイル内での関数の自動インライン化を追加します。-O4 を使用する場合、-xspace と組み合わせないかぎり、大きなコードが生成されます。

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

-O5

もっとも高いレベルの最適化を行います。これを使用するのは、コンピュータのもっとも多くの時間を小さなプログラムが使用している場合だけにしてください。この最適化アルゴリズムは、コンパイルの所要時間が長く、また実行時間が確実に短縮される保証がありません。このレベルの最適化によってパフォーマンスが改善される確率を高くするには、プロファイルのフィードバックを使用します。-xprofile=collect|use を参照してください。

相互の関連性:

-O3 以下の最適化レベルで -g を指定すると、ほぼ完全な最適化と可能なかぎりのシンボル情報を取得できます。末尾呼び出しの最適化とバックエンドのインライン化は無効です。

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

-fast, -xprofile=p, csh(1) マニュアルページも参照してください。

-o filename

デフォルトの a.out ではなく、出力ファイル filename を指定します。cc はソースファイルを上書きしないため、filenameソースファイルと同じにできません。

filename は適切な接尾辞を持つ必要があります。-c とともに使用されると、filename はターゲットの .o オブジェクトファイルを指定します。-G とともに使用されると、ターゲットの .so ライブラリファイルを指定します。このオプションとその引数は ld に渡されます。

-onetrip

ワントリップ DO ループを有効にします。

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

Fortran 95 の DO ループは、一部の古典的な Fortran の実装とは異なり、上限が下限より小さい場合には、1 回も実行されません。

-openmp

-xopenmp と同義です。

-p

(廃止) prof を使用するプロファイリング用にコンパイルします。

prof(1) を使用したプロファイリング用にオブジェクトファイルを準備します。このオプションは、プロシージャーごとにプロファイルを作成し、各プロシージャーに対する呼び出し回数と各プロシージャーで使用される時間の割合を示します。

コンパイル手順とリンク手順を分ける場合、-p を指定してコンパイルするときは、必ずリンクするときにも -p を指定してください。

このオプションは廃止されました。代わりに、-g とパフォーマンスアナライザ analyzer(1) を使用してください。

-pad[=p]

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

このオプションは、配列または文字列が次の場合に、これらの間にパディングを挿入します。

  • 静的で局所的で初期化されていない、または

  • (共通ブロック内)。

どちらの場合でも、配列または文字列は等値化できません。

=p を指定する場合、次のいずれかにする必要があります (空白なし)。

%none

パディングは実行されません。

local

ローカル変数をパディングします。

common

共通ブロック内で変数をパディングします。

local,common

ローカルと共通の両方のパディングが実行されます。

localcommon の順序は、任意でかまいません。

デフォルト:

デフォルトではコンパイラはパディングを行いません。値を付けずに -pad を指定した場合は、-pad=local,common と同等になります。

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

  • ある共通ブロックを参照するファイルに対して -pad=common を指定するときは、その共通ブロックを参照するすべてのファイルにも指定する必要があります。

  • -pad=common を指定する場合、異なるプログラムユニットの同じ共通ブロック内の変数のレイアウトは、変数の名前を除いて同じにする必要があります。

  • パディングは -xcache の設定に依存します。-pad=common を使用する場合、すべてのファイルは同じ -xcache 設定でコンパイルする必要があります。

  • プログラムが共通ブロック内の配列をオーバーインデックスする場合、-pad=common を指定しないでください。コンパイラによって配列間にパディングが挿入されると、データの想定されたレイアウトと干渉し、配列参照が予想できない形で失敗する原因になります。

  • 共通ブロック変数を含む EQUIVALENCE 宣言は、-pad=common を指定してコンパイルされている場合、パディングが EQUIVALENCE によって禁止されているという警告メッセージを生成します。これらの配列にはパディングが行われません。

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

-pg

gprof(1) を使用したプロファイリング用のデータを収集するようにオブジェクトコードを準備します。-xpg-pg と同義です。

プログラムが正常に終了したときに gmon.out を生成する実行時記録メカニズムが呼び出されます。

注: -xpg を指定した場合、-xprofile でコンパイルする利点はありません。これら 2 つは、他方で使用できるデータを生成せず、他方で生成されたデータを使用できません。

プロファイルは、64 ビットの Oracle Solaris プラットフォーム上では prof または gprof を使用して、また 32 ビットの Oracle Solaris プラットフォーム上では gprof だけを使用して生成され、概略のユーザー CPU 時間が含まれます。これらの時間は、メインの実行可能ファイルのルーチンと、実行可能ファイルをリンクするときにリンカー引数として指定した共有ライブラリのルーチンの PC サンプルデータ (pcsample(2) を参照) から導出されます。そのほかの共有ライブラリ (dlopen(3DL) を使用してプロセスの起動後に開かれたライブラリ) のプロファイルは作成されません。

32 ビット Oracle Solaris システムの場合、prof(1) を使用して生成されるプロファイルは、実行可能ファイル内のルーチンに制限されます。32 ビット共有ライブラリは、-xpg で実行可能ファイルをリンクし、gprof(1) を使用することでプロファイリングできます。

最新の Oracle Solaris リリースには、-p でコンパイルされるシステムライブラリが含まれません。その結果、現行の Oracle Solaris プラットフォームで収集されるプロファイルには、システムライブラリルーチンの呼び出し回数が含まれません。

注: x86 システムでは、gprof ランタイムライブラリがプロファイルされるルーチンの戻りアドレスを判別するには、有効なフレームポインタが必要となるため、-xpg-xregs=frameptr と互換性がありません。x86 システムで -fast を指定してコンパイルすると、-xregs=frameptr が呼び出されます。代わりに、次のように指定してコンパイルします。

-fast -xregs=no%frameptr -xpg

注: コンパイラオプション -p-pg、または -xpg の実行時サポートは、スレッドに対して安全ではありません。そのため、マルチスレッドプログラムのコンパイルには使用しないでください。マルチスレッドを使用するプログラムをこれらのオプションを付けてコンパイルすると、実行時に、不正な結果やセグメント例外が発生する可能性があります。

コンパイル手順とリンク手順を分ける場合、-pg を指定してコンパイルするときには、リンクするときにも -pg を指定してください。

警告: gprof プロファイリングのために -xpg でコンパイルされたバイナリは、binopt(1) では使用しないでください。互換性がないため、内部エラーになる可能性があります。

-pic

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

SPARC では、-pic-xcode=pic13 と同等です。

x86 では、位置独立コードを生成します。このオプションは、共有ライブラリを構築するためにソースファイルをコンパイルするときに使用します。グローバルデータへの各参照は、グローバルオフセットテーブルにおけるポインタの間接参照として生成されます。各関数呼び出しは、手続きリンケージテーブルを通して PC 相対アドレス指定モードで生成されます。

-PIC

SPARC では、-PIC-xcode=pic32 と同等です。

x86 では、-PIC-pic と同じです。

-preserve_argvalues[=simple|none|complete]

(x86) レジスタベースの関数の引数のコピーをスタックに保存します。

コマンド行に none を指定した場合、または -preserve_argvalues オプションを指定しない場合、コンパイラは通常どおりに動作します。

simple を指定した場合、最大で 6 つの整数引数が保存されます。

complete を指定した場合、スタックトレース内のすべての関数引数の値は、適切な順序でユーザーに表示されます。

仮引数に割り当てられている関数の有効期間中、値は更新されません。

-Qoption pr ls

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

このオプションは主に顧客サービスで使用されます。

-qp

-p と同義です。

-R list

ライブラリ検索パスを実行可能ファイルに組み込みます。

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

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

-Rlist の間には空白文字はオプションです。

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

動的なリンクへのパスに対する特殊なオプションを使用せずに実行できる実行可能ファイルをエクスポートする場合に、このオプションを使用します。

このオプションを指定して実行可能ファイルを構築すると、常に最後に検索されるデフォルトパスにパスが追加されます。

<installpath>/lib

デフォルトのライブラリ検索順序は、-dryrun オプションを使用し、ld 呼び出しの -Y オプションを検査することによって確認できます。

-r8const

単精度定数を REAL*8 定数に変換します。

すべての単精度リテラル定数が REAL*8 に変換されます。倍精度定数 (REAL*8) は変換されません。

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

このフラグを使用する際には注意が必要です。このフラグを使用すると、REAL*4 値が想定されている引数に REAL*4 リテラル定数を使用してルーチンを呼び出した場合、インタフェース問題が起きる可能性があります。また、入出力リストにリテラル REAL*4 定数がある write 文によって書き込まれた書式なしデータファイルを読み取るプログラムで問題を生じる可能性もあります。

-recl=a[,b]

デフォルトの出力記録長を設定します。

接続済みのユニットの出力 (標準の出力) とエラー (標準のエラー) のいずれかまたは両方に対するデフォルトの記録長 (文字数単位) を設定します。

このオプションは、次のいずれかの書式で指定する必要があります。

 
-recl=out:N
-recl=error:N
-recl=out:N1,error:N2
-recl=error:N1,out:N2
-recl=all:N

ここで、N、N1、N2 はすべて、72 から 2147483646 の範囲の正の整数です。

out は標準出力を、error は標準エラーを表し、all は両方に対してデフォルトの記録長を設定します。

デフォルトは -recl=all:80 です。

このオプションは、コンパイルされるプログラムが Fortran 主プログラムを持つ場合にのみ有効です。

-reduction

ループ内の縮約演算を並列化します。

自動的な並列化を実行するときにループの縮約を解析します。縮約ループの並列化を有効にするには、-reduction-autopar の両方を指定します。

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

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

シングルプロセッサシステムでは、通常、生成されたコードの実行速度は低下します。

ループの縮約には、潜在的に丸めのエラーが常にあります。

-S

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

指定したプログラムをコンパイルし、アセンブル言語の出力結果を、接尾辞が .s の対応するファイルに出力させます (.o ファイルは作成されません)。

-s

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

実行可能ファイルを縮小しますが、リバースエンジニアを困難にします。ただし、このオプションはデバッグを防止します。

-silent

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

通常、f95 はコンパイル中に、エラー診断以外のメッセージを発行しません。このオプションは、以前のスクリプトおよび Makefile との互換性のためだけに用意されています。-silent はデフォルトであり、その使用は不要です。

-stackvar

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

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

-stackvar の使用は、副プログラムの呼び出しを含む明示的に並列化されたループで必要であり、どの並列化オプションにもお勧めします。-xopenmp が使用されるときに、-stackvar は自動的に含まれます。-stackvar を使用する必要がある場合と必要がない場合の詳細は、『Fortran プログラミングガイド』の「並列化」の章を参照してください。

次の条件に当てはまらないかぎり、変数と配列はローカルです。

  • SUBROUTINE または FUNCTION 文の引数 (すでにスタックにある)

  • COMMON または SAVE のグローバル項目、または STATIC

  • 次のような型宣言文または DATA 文の初期化済み項目

    REAL X/8.0/ or DATA X/8.0/

-stackvar で大きな配列をスタックに入れると、セグメント例外を引き起こすスタックのオーバーフローを招く場合があります。このような場合はスタックサイズを大きくする必要があります。

プログラムを実行する初期スレッドには、メインスタックがあり、マルチスレッド化されたプログラムの各ヘルパースレッドには、それぞれスレッドスタックがあります。

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

limit コマンド (パラメータなし) を実行すると、現在のメインスタックのサイズが表示されます。

limit シェルコマンドを使用して、メインスレッドスタックのサイズを設定します (キロバイト単位)。たとえば、メインスタックサイズを 64M バイトに設定するには、次のコマンドを使用します。

% limit stacksize 65536

各スレーブスレッドで使用されるスタックサイズは、STACKSIZE 環境変数に値 (キロバイト単位) を指定することで設定できます。

% setenv STACKSIZE 8192

各スレーブスレッドのスタックサイズを 8M バイトに設定します。

STACKSIZE 環境変数は、接尾辞 BKM、または G の付いた数値も受け付けます。これらの接尾辞はそれぞれ、バイト、キロバイト、メガバイト、ギガバイトを表します。デフォルトはキロバイトです。

詳細は、『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 に設定します。このオプションは、TMPDIR 環境変数に優先します。

-time

コンパイル処理ごとの実行時間を示します。

-traceback[={%none|common|signals_list}]

実行時に重大エラーが発生した場合にスタックトレースを発行します。

-traceback オプションを指定すると、プログラムによって特定のシグナルが生成された場合に、実行可能ファイルで標準エラー出力へのスタックトレースが発行されて、コアダンプが実行され、終了します。複数のスレッドが 1 つのシグナルを生成すると、スタックトレースは最初のスレッドに対してのみ生成されます。

追跡表示を使用するには、リンク時に -traceback オプションをコンパイラコマンド行に追加します。このオプションはコンパイル時にも使用できますが、実行可能バイナリが生成されない場合無視されます。-traceback -G とともに使用して共有ライブラリを作成すると、エラーが発生します。

%none
none

トレースバックを無効にします。

common

一連の共通シグナル sigillsigfpesigbussigsegv、および sigabrt のいずれかが生成された場合に、スタックトレースを発行することを指定します。

signals_list

スタックトレースを生成するべきシグナルの名前のコンマ区切りのリスト (小文字) を指定します。sigquitsigillsigtrapsigabrtsigemtsigfpesigbussigsegvsigsyssigxcpusigxfsz のシグナル (コアファイルが生成されるシグナル) をキャッチできます。

これらのシグナルの前に no% を付けると、シグナルのキャッチは無効になります。

たとえば、-traceback=sigsegv,sigfpe と指定すると、sigsegv または sigfpe が生成された場合にスタックトレースとコアダンプが生成されます。

このオプションを指定しない場合、デフォルトは -traceback=%none になります。

= 記号なしで、-traceback だけを指定すると、-traceback=common の意味になります。

注: コアダンプが不要な場合は、次を使用して coredumpsize 制限を 0 に設定できます。

% limit coredumpsize 0

-traceback オプションは、実行時のパフォーマンスに影響しません。

-U

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

大文字を小文字と同等には取り扱いません。デフォルトでは、文字列定数中を除き、大文字をすべて小文字として解釈します。

このオプションを指定すると、Delta、DELTA、および delta はすべて別の記号として解釈されます。

Fortran を別の言語に移植したり、混用したりする場合は、-U オプションを指定する必要があることがあります。

組み込み関数の呼び出しは、このオプションによる影響を受けません。

-Uname

プリプロセッサのマクロ name の定義を取り消します。

同じコマンド行の -Dname で作成されたプリプロセッサのマクロシンボル name の初期定義を削除します。この場合、指定されたオプションの順序に関係なく、コマンド行ドライバによって暗黙に配置された -Dname も対象となります。ソースファイルのマクロ定義には影響しません。複数の -Uname フラグを同じ行に指定することができ、-Uname の間には空白を入れないでください。

このオプションは、fpp または cpp プリプロセッサを呼び出す .F.F90.F95、および .F03 ソースファイルにのみ適用されます。

-u

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

コンパイル単位ごとに IMPLICIT NONE を指定する場合と同等です。この場合、標準的な Fortran の暗黙的な入力は使用されず、変数のデフォルトの型が undeclared になるという影響が生じます。このオプションは、すべての既存の IMPLICIT 文または明示的な type 文をオーバーライドしません

-unroll=n

可能な場合、DO ループの展開を n 回使用可能にします。

n は正の整数です。

n が 1 の場合、ループの展開をすべて禁止します。

n > は、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 は、次のサブオプションのいずれか、またはこれらのサブオプションをいくつか組み合わせて、コンマで区切ったリストとして指定します。

blank_zero

書式付き入力の空白を内部ファイルでゼロと解釈します。

debug

文字「D」で始まる行を、VMS Fortran と同じように、注釈行ではなく通常の Fortran 文として解釈します。

rsize

書式なしレコードサイズを、バイト単位ではなくワード単位で解釈します。

struct_align

VAX 構造体の成分を、メモリー内に VMS Fortran と同じようにレイアウトします。パディングは挿入しません。このオプションフラグは f77 -xl フラグを置き換えます。: このサブオプションを指定すると、データの不正な整列 (「バスエラー」) が発生する場合があります。このようなエラーを回避するには、-xmemalign とあわせて使用してください。

%all

前述すべての VAX VMS 機能を有効にします。(デフォルト。)

%none

前述すべての VAX VMS 機能を無効にします。

サブオプションは個々に選択することもオフにすることもできます (個々にオフにするには、サブオプションの前に no% を付けます)。

例:

 
-vax=debug,rsize,no%blank_zero

デフォルトは -vax=%none です。サブオプションを使用せずに -vax を指定した場合、-vax=%all と同等です。

-vpara

並列化の警告メッセージを表示します。

-xopenmp および OpenMP API 指令で間違った結果を招く可能性のある、並列プログラミング関連の潜在的な問題に関する警告を発行します。

OpenMP 並列領域でのアクセスによってデータの競合が起きる可能性がある共有変数の宣言、並列領域に値があって並列領域のあとで使用されるスレッド固有変数の宣言など、OpneMP のデータ共有属性節の問題のある使用をコンパイラが検出すると警告が発行されます。

すべての並列化指令が問題なく処理される場合、警告は表示されません。

例: f95 -xopenmp -vpara any.f

-Wc,arg

コンポーネント c に引数 arg を渡します。各引数は前の引数からコンマでのみ区切る必要があります。(コンマを引数の一部にするには、バックスラッシュ (\) 文字を直前に付けてエスケープします。バックスラッシュは生成される引数から削除されます。)すべての -W arg は、通常のコマンド行引数のあとに渡されます。

c には次のいずれかを指定できます。

a

アセンブラ : (fbe)、(gas)

c

f95 コードジェネレータ: (cg)(SPARC)

d

f95 ドライバ

l

リンクエディタ (ld)

m

mcs

O

(大文字「O」) 内部手続きオプティマイザ

o

ポストオプティマイザ

p

プリプロセッサ (cpp)

0

(0 番) コンパイラ (f90comp)

2

オプティマイザ: (iropt)

注: -Wd を使用して、このマニュアルページに一覧表示された f95 オプションを Fortran コンパイラに渡すことはできません。

たとえば、-Wa,-o,objfile-o および objfile をこの順序でアセンブラに渡します。また、-Wl,-I,name は、リンクフェーズで動的リンカー /usr/lib/ld.so.1 のデフォルト名をオーバーライドします。

引数がツールに渡される順序は、ほかに指定されるコマンド行オプションとの関係で、変更される可能性があります。

-w[{0|1|2|3|4}]

警告メッセージを表示または抑制します。

-w は、コンパイラからの警告メッセージを抑制します。

-w0 は、エラーメッセージのみを表示します。

-w1 は、エラーと警告を表示します。これがデフォルトです。

-w2 は、エラー、警告、および注意を表示します。

-w3 は、エラー、警告、注意、および注釈を表示します。

-w4 は、エラー、警告、注意、注釈、およびコメントを表示します。

2 つのオプションを指定し、2 番目のオプションが 1 番目のオプションのすべてまたは一部をオーバーライドする場合、コンパイラは警告を発行します。

-Xlinker arg

arg をリンカー ld に渡します。—z arg と同等です。

-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]

ページ長が 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

相互参照のみ (リストなし)

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

-xaddr32[={yes|no}]

(x86/x64) -xaddr32=yes コンパイルフラグは、生成される実行可能ファイルまたは共有オブジェクトを 32 ビットアドレス空間に制限します。

この方法でコンパイルする実行可能ファイルは、32 ビットアドレス空間に制限されるプロセスを作成する結果になります。

-xaddr32=no を指定する場合は、通常の 64 ビットバイナリが作成されます。

-xaddr32 オプションを指定しないと、-xaddr32=no が想定されます。

-xaddr32 だけを指定すると、-xaddr32=yes が想定されます。

このオプションは、-m64 コンパイルのみ、および SF1_SUNW_ADDR32 ソフトウェア機能をサポートしている Oracle Solaris プラットフォームのみに適用できます。

Linux カーネルはアドレス空間制限をサポートしないため、このオプションは Linux では使用できません。-xaddr32 オプションは Linux では無視されます。

単一のオブジェクトファイルが -xaddr32=yes を指定してコンパイルされた場合は、出力ファイル全体が -xaddr32=yes を指定してコンパイルされたものと、リンク時に想定されます。

32 ビットアドレス空間に制限される共有オブジェクトは、制限された 32 ビットモードのアドレス空間内で実行されるプロセスから読み込む必要があります。

詳細は、『リンカーとライブラリ』で説明されている SF1_SUNW_ADDR32 ソフトウェア機能の定義を参照してください。

-xalias[=type_list]

コンパイラが仮定する別名付けの程度を指定します。

非標準のプログラミングテクニックを使用すると、コンパイラの最適化方法が阻害される状況になる可能性があります。特に、オーバーインデックスやポインタを使用したり、グローバル変数または一意でない変数を副プログラムの引数として渡すと、コンパイラによる特定の最適化の適用を妨げるあいまいな別名付けの状況に陥ったり、予想外の結果を生み出す可能性のあるあいまいさが招かれる可能性があります。

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

-xalias フラグを使用すると、別名付けが Fortran の標準規則からどのように離れているかをコンパイラに知らせることができます。

フラグには、リストがある場合も、ない場合もあります。リストのキーワードはコンマで区切られ、各キーワードはプログラムにおける別名付けの状況を表しています。キーワードに接頭辞 no% が付いている場合は、その別名付けが存在しないことを表します。

別名付けのキーワードは、次のとおりです。

dummy

副プログラムの仮 (形式的な) パラメータは、お互いに別名を付けることができ、グローバル変数にも別名を付けます。

no%dummy

(デフォルト)。Fortran 標準規格に従って仮パラメータを使用します。パラメータはお互いに別名を付けたり、グローバル変数に別名を付けることはできません。

craypointer

(デフォルト)。Cray ポインタは、そのアドレスを LOC() 関数が受け取るようなすべてのグローバル変数またはローカル変数を指すことができます。また、2 つの Cray ポインタが同一のデータを指す可能性もあります。このような前提に基づいて、いくつかの最適化が抑制されるため安全です。

no%craypointer

Cray ポインタは malloc() によって得られるアドレスなど、一意のメモリーアドレスのみ指します。また、2 つの Cray ポインタが同一のデータを指すことはありません。この前提によって、コンパイラは Cray ポインタ参照を最適化できます。

actual

コンパイラは、副プログラムの実引数をグローバルな変数として扱います。引数を副プログラムに渡すことは、Cray ポインタを通して別名を付けることになります。

no%actual

(デフォルト)。引数を渡しても、別名は付けられません。

overindex

COMMON ブロック内の配列の要素のリファレンスは、COMMON ブロックまたは同等のグループの要素を参照することが可能です。COMMON ブロックまたは同等のグループの要素を実際の引数として副プログラムに渡すと、呼び出される副プログラムに、COMMON ブロックまたは同等のグループの要素へのアクセスを提供することになります。シーケンス派生型の要素は、COMMON ブロックとして扱われます。各配列境界には違反しますが、前述したものを除いては、参照される配列の要素は配列内に残ります。

配列構文、WHERE、および FORALL 文は、オーバーインデックスを考慮していません。

no%overindex

(デフォルト)。配列境界は違反されません。配列の参照がほかの変数を参照することもありません。

ftnpointer

外部関数の呼び出しによって、Fortran POINTERS は、どのような型、種類、またはランクの 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

有効にするには、-xalias は、最適化レベル -xO3 以上でコンパイルするときに使用する必要があります。

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

-xannotate[={yes|no}]

最適化および監視ツール binopt(1)code-analyzer(1)discover(1)collect(1)、および uncover(1) で使用可能なバイナリを作成するよう、コンパイラに指示します。

Oracle Solaris でのデフォルトは -xannotate=yes です。Linux でのデフォルトは -xannotate=no です。値なしで -xannotate を指定することは、-xannotate=yes と同等です。

最適化および監視ツールを最適に使用するためには、コンパイル時とリンク時の両方で -xannotate=yes が有効である必要があります。

最適化および監視ツールを使用しないときは、-xannotate=no を指定してコンパイルおよびリンクすると、バイナリとライブラリが若干小さくなります。

-xarch=isa

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

このオプションは、指定の命令セットだけを許すことによって、コンパイラが指定の命令セットアーキテクチャーの命令に対応するコードしか生成できないようにします。このオプションは、ターゲット固有の命令の使用は保証しません。ただし、このオプションを使用するとバイナリプログラムの移植性に影響を与える可能性があります。このエントリの最後の「注意事項」および「警告」のセクションを参照してください。

注: コンパイラおよびリンカーは、特定の命令セットアーキテクチャー (ISA) を必要とする .o ファイルおよび実行可能ファイルをマークし、実行しているシステムで特定の ISA がサポートされない場合に、実行可能ファイルが実行時にロードされないようにします。

注: 意図するメモリーモデルとして LP64 (64 ビット) または ILP32 (32 ビット) を指定するには、それぞれ -m64 または -m32 オプションを使用してください。次に示すように以前のリリースとの互換性を保つ場合を除いて、-xarch オプションでメモリーモデルを指定できなくなりました。

別々の手順でコンパイルしてリンクする場合は、両方の手順に同じ -xarch の値を指定してください。

すべてのプラットフォームで指定できる値:

generic

このオプションでは、ほとんどのプロセッサに共通の命令セットが使用されます。これはデフォルトであり、-xarch=sse2 と同等です。

generic64

(Oracle Solaris) ほとんどの 64 ビットプラットフォームで良好なパフォーマンスになるようにコンパイルします。

このオプションは、-m64 -xarch=generic に相当し、以前のリリースとの互換性のために用意されています。-m64 は、-xarch=generic64 の代わりに 64 ビットコンパイルを指定するために使用します。

native

このシステムで良好なパフォーマンスを得られるようにコンパイルします。

現在コンパイルしているシステムプロセッサにもっとも適した設定を選択します。

native64

(Oracle Solaris) このシステムで良好なパフォーマンスを得られるようにコンパイルします。

このオプションは、-m64 -xarch=native に相当し、以前のリリースとの互換性のために用意されています。

SPARC プラットフォームに固有の値:

sparc

SPARC-V9 ISA 用のコンパイルを行います。

V9 ISA 用のコンパイルですが、Visual Instruction Set (VIS) や、その他の実装固有の ISA 拡張機能は含まれません。このオプションを使用して、コンパイラは、V9 ISA で良好なパフォーマンスが得られるようにコードを生成できます。

sparc4

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

SPARC-V9 命令セット、VIS 1.0 を含む UltraSPARC 拡張機能、VIS2.0、浮動小数点積和演算命令、VIS 3.0、および SPARC4 命令を含む UltraSPARC-III 拡張機能の命令をコンパイラが使用できるようになります。

sparc4b

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

コンパイラが、SPARC-V9 命令セットからの命令に加えて、VIS 1.0 を含む UltraSPARC 拡張機能、VIS 2.0 を含む UltraSPARC-III 拡張機能、浮動小数点の積和演算用の SPARC64 VI 拡張機能、整数の積和演算用の SPARC64 VII 拡張機能からの命令、および SPARC T4 拡張機能からの PAUSE および CBCOND 命令を使用できるようにします。

sparc4c

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

コンパイラが、SPARC-V9 命令セットからの命令に加えて、VIS 1.0 を含む UltraSPARC 拡張機能、VIS 2.0 を含む UltraSPARC-III 拡張機能、浮動小数点の積和演算用の SPARC64 VI 拡張機能、整数の積和演算用の SPARC64 VII 拡張機能、VIS 3.0 の VIS3B サブセットと呼ばれる SPARC T3 拡張機能のサブセットからの命令、および SPARC T4 拡張機能からの PAUSE および CBCOND 命令を使用できるようにします。

sparcace

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

コンパイラが、SPARC-V9 命令セットに加えて、VIS (Visual Instruction Set) Version 1.0 を含む UltraSPARC 拡張機能、VIS (Visual Instruction Set) Version 2.0 を含む UltraSPARC-III 拡張機能、浮動小数点の積和演算用の SPARC64 VI 拡張機能、整数の積和演算用の SPARC64 VII 拡張機能、および SPARCACE 浮動小数点用の SPARC64 X 拡張機能からの命令を使用できるようにします。

sparcaceplus

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

コンパイラが、SPARC-V9 命令セットに加えて、VIS (Visual Instruction Set) Version 1.0 を含む UltraSPARC 拡張機能、VIS (Visual Instruction Set) Version 2.0 を含む UltraSPARC-III 拡張機能、浮動小数点の積和演算用の SPARC64 VI 拡張機能、整数の積和演算用の SPARC64 VII 拡張機能、SPARCACE 浮動小数点用の SPARC64 X 拡張機能、および SPARCACE 浮動小数点用の SPARC64 X+ 拡張機能からの命令を使用できるようにします。

sparcvis

SPARC-V9 ISA plus VIS 用のコンパイルを行います。

SPARC-V9 + VIS (Visual Instruction Set) version 1.0 + UltraSPARC 拡張機能用のコンパイルを実行します。このオプションを使用すると、コンパイラは、UltraSPARC アーキテクチャー上で良好なパフォーマンスが得られるようにコードを生成することができます。

sparcvis2

UltraSPARC III 拡張機能付きの SPARC-V9 ISA 用のコンパイルを行います。

UltraSPARC アーキテクチャー + VIS (Visual Instruction Set) version 2.0 + UltraSPARC-III 拡張機能用のオブジェクトコードを生成します。

sparcvis3

UltraSPARC III および VIS 3 拡張機能付きの SPARC-V9 ISA 用のコンパイルを行います。

SPARC-V9 命令セット、VIS (Visual Instruction Set) version 1.0 を含む UltraSPARC 拡張機能、VIS (Visual Instruction Set) version 2.0、積和演算 (FMA) 命令、および VIS (Visual Instruction Set) version 3.1 を含む UltraSPARC-III 拡張機能の命令をコンパイラが使用できるようになります。

sparcfmaf

SPARC-V9 ISA の sparcfmaf バージョン用のコンパイルを行います。

SPARC-V9 命令セット、VIS (Visual Instruction Set) version 1.0 を含む UltraSPARC 拡張機能、VIS (Visual Instruction Set) version 2.0 を含む UltraSPARC-III 拡張機能、および浮動小数点積和演算用の SPARC64 VI 拡張機能の命令をコンパイラが使用できるようになります。

コンパイラが自動的に積和演算命令を使用する機会を見つけられるようにするには、-xarch=sparcfmaf および -fma=fused と最適化レベルを組み合わせて使用する必要があります。

sparcima

sparcima 版の SPARC-V9 ISA 用にコンパイルします。

コンパイラが、SPARC-V9 命令セットに加えて、VIS (Visual Instruction Set) Version 1.0 を含む UltraSPARC 拡張機能、VIS (Visual Instruction Set) Version 2.0 を含む UltraSPARC-III 拡張機能、浮動小数点の積和演算用の SPARC64 VI 拡張機能、整数の積和演算用の SPARC64 VII 拡張機能からの命令を使用できるようにします。

v9

-m64 -xarch=sparc と同等です。64 ビットのメモリーモデルを取得するために -xarch=v9 を使用している従来の Makefile およびスクリプトでは、-m64 のみを使用する必要があります。

v9a

-m64 -xarch=sparcvis に相当し、以前のリリースとの互換性のために用意されています。

v9b

-m64 -xarch=sparcvis2 に相当し、以前のリリースとの互換性のために用意されています。

従来の 32 ビット SPARC 命令セットアーキテクチャー V7 および V8 は -m32 を示し、-m64 と組み合わせることはできません。

sparc および sparcvis でコンパイルされたオブジェクトライブラリファイル (.o) はリンクして、まとめて実行できますが、sparcvis 互換性のプラットフォーム上でのみ可能です。

sparcsparcvis、および sparcvis2 でコンパイルされたオブジェクトバイナリファイル (.o) はリンクして、まとめて実行できますが、sparcvis2 互換性のプラットフォーム上でのみ可能です。

特定の設定では、生成された実行可能ファイルが、以前のアーキテクチャーでの実行速度が非常に遅くなる場合があります。また、4 倍精度浮動小数点命令は、これらの命令セットアーキテクチャーの多くで使用できますが、コンパイラは、そのコンパイラが生成したコードではそれらの命令を使用しません。

x86 プラットフォームに固有の値:

avx2

386、MMX、Pentium_pro、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AES、PCLMULQDQ、AVX、FSGSBASE、RDRND、F16C、AVX2、BMI1、BMI2、LZCNT、INVPCID、および FMA の命令を使用できます。

avx_i

386、MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AES、PCLMULQDQ AVX、FSGSBASE、RDRND、および F16C の命令を使用できます。

avx

386、MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AES、PCLMULQDQ、smf、AVX の命令を使用できます。

aes

386、MMX、Pentium_pro、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AES、および PCLMULQDQ の命令を使用できます。

sse4_2

386、MMX、Pentium_pro、SSE、SSE2、SSE3、SSSE3、SSE4.1、および SSE4.2 の命令を使用できます。

sse4_1

386、MMX、Pentium_pro、SSE、SSE2、SSE3、SSSE3、および SSE4.1 の命令を使用できます。

ssse3

386、MMX、Pentium_pro、SSE、SSE2、SSE3、および SSSE3 の命令を使用できます。

sse3

386、MMX、Pentium_pro、SSE、SSE2、および SSE3 の命令を使用できます。

amdsse4a

AMD SSE4a 命令セットを使用します。

sse2

386、MMX、Pentium_pro、SSE、および SSE2 の命令を使用できます。

sse2a

386、MMX、Pentium_pro、SSE、SSE2、および AMD 拡張 (AMD プロセッサ用の 3DNow! と 3DNow! 拡張命令) を使用できます。

amd64

-m64 フラグを利用できるようになる以前に、64 ビットメモリーモデルのコードを取得するために使用された -m64 -xarch=sse2 と同等の旧バージョンのフラグ。

amd64a

AMD プロセッサで -m64 フラグを利用できるようになる以前に、64 ビットメモリーモデルのコードを取得するために使用された -m64 -xarch=sse2a と同等の旧バージョンのフラグ。

sse

386、MMX、Pentium_pro、および SSE の命令を使用できます。

ssea

386、MMX、Pentium_pro、SSE、および AMD 拡張 (AMD プロセッサ用の 3DNow! と 3DNow! 拡張命令) を使用できます。

pentium_pro

386、MMX、および Pentium_pro の命令を使用できます。

pentium_proa

386、MMX、Pentium_pro、および AMD 拡張 (AMD プロセッサ用の 3DNow! と 3DNow! 拡張命令) を使用できます。

generic

ほとんどのプロセッサに共通の命令セットを使用します。

generic64

-m64 フラグを利用できるようになる以前に、64 ビットメモリーモデルのコードを取得するために使用された -m64 -xarch=generic と同等の旧バージョンのフラグ。

native

コンパイラが実行されている現在のシステムプロセッサで使用可能な命令を使用します。

native64

-m64 フラグを利用できるようになる以前に、64 ビットメモリーモデルのコードを取得するために使用された -m64 -xarch=native と同等の旧バージョンのフラグ。

注:

プログラムのいずれかの部分が x86 プラットフォーム上で -m64 でコンパイルまたはリンクされる場合、プログラムのすべての部分もこれらのいずれかのオプションでコンパイルされる必要があります。

各種 Intel 命令セットアーキテクチャー (SSE、SSE2、SSE3、SSSE3 など) の詳細は、Intel-64 および IA-32 の『Intel Architecture Software Developer's Manual』を参照してください。

デフォルト:

-xarch=isa が指定されていない場合のデフォルトは、SPARC プラットフォームでは -xarch=generic、x86/x64 プラットフォームでは -xarch=generic です。

相互の関連性:

このオプションは単体でも使用できますが、-xtarget オプションの展開の一部でもあります。したがって、特定の -xtarget オプションで設定される -xarch のオーバーライドにも使用できます。例:

-xtarget=ultra4

展開後

-xarch=sparcvis2 -xcache=64/32/4:8192/128/2 -xchip=ultra4

警告:

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

-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

-autopar と同義です。

-xbinopt={prepare|off}

(SPARC) (廃止) -xannotate を参照してください。

binopt(1) を指定して、あとで最適化、変換、および解析を行えるようにバイナリの準備を整えるよう、コンパイラに指示します。このオプションは、実行可能ファイルまたは共有オブジェクトの構築に使用できます。このオプションを有効にするには、最適化レベル -xO1 以上で使用する必要があります。このオプションを使用して構築すると、バイナリのサイズが約 5% 増加します。

コンパイルとリンクを別々に行う場合は、両方の手順に -xbinopt を指定する必要があります。

example% f95 -o myprog -xbinopt=prepare a.o b.o c.f95

一部のソースコードがコンパイルに使用できない場合も、このオプションを使用してそのほかのコードがコンパイルされます。このとき、最終的なバイナリを作成するリンク手順で、このオプションを使用する必要があります。この場合、このオプションでコンパイルされたコードだけが最適化、変換、分析できます。

-xbinopt=prepare-g を指定してコンパイルすると、デバッグ情報が取り込まれるので、実行可能ファイルのサイズが増えます。デフォルトは -xbinopt=off です。

-xcache=c

オプティマイザによって使用されるキャッシュプロパティーを定義します。

c には次のいずれかを指定します。

  • generic

  • native

  • s1/l1/a1[/t1]

  • s1/l1/a1[/t1]:s2/l2/a2[/t2]

  • s1/l1/a1[/t1]:s2/l2/a2[/t2]:s3/l3/a3[/t3]

siliai、および ti は次のように定義されます。

si

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

li

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

ai

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

ti

レベル i でキャッシュを共有するハードウェアスレッドの数。ti パラメータはオプションです。指定しない場合は、値 1 が使用されます。

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

このオプションは単独で指定できますが、-xtarget オプションのマクロ展開の一部です。-xtarget オプションによって指定された値をオーバーライドするのが主な目的です。

-xcache の値を次に示します。

generic

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

native

ホストプラットフォームで良好なパフォーマンスを得るためのキャッシュ特性を定義します。

s1/l1/a1[/t1]

レベル 1 のキャッシュ特性を定義します。

s1/l1/a1[/t1]:s2/l2/a2[/t2]

レベル 1 と 2 のキャッシュ特性を定義します。

s1/l1/a1[/t1]:s2/l2/a2[/t2]:s3/l3/a3[/t3]

レベル 1、2、3 のキャッシュ特性を定義します。

-xcheck[=n]

シングルスレッドプログラム内のメインスレッドのスタックオーバーフローおよびマルチスレッドプログラム内のスレーブスレッドスタックに対する実行時検査を実行します。スタックオーバーフローが検出された場合は、SIGSEGVが生成されます。アプリケーションで、スタックオーバーフローで生成される SIGSEGV をほかのアドレス空間違反と異なる方法で処理する必要がある場合は、sigaltstack(2) を参照してください。

n は次のいずれかの値である必要があります。

%all

-xcheck のすべての検査を実行します。

%none

-xcheck の検査を実行しません。

stkovf[action]

実行時にスタックオーバーフローエラーを検出するためのコードを生成します。オプションで、スタックオーバーフローエラーが検出されたときに行うアクションを指定します。

スタックオーバーフローエラーは、スレッドのスタックポインタがスレッドに割り当てられているスタック境界を越えた位置に設定されると発生します。新しいスタックアドレスの先頭が書き込み可能である場合は、エラーが検出されないことがあります。

エラーの直接の結果としてメモリーアクセス違反が発生した場合、スタックオーバーフローエラーが検出され、関連付けられているシグナル (通常は SIGSEGV) が発行されます。このように発生したシグナルは、そのエラーに関連付けられていると言います。

検出されないスタックオーバーフローエラーによって、認識されずにデータが破損している場合があります。検出されないスタックオーバーフローエラーを防ぐには、コンパイルと実行時のサポートが必要となります。

-xcheck=stkovf[action] を指定すると、コンパイラはシステムのページサイズより大きいスタックフレームが使用される場合にスタックオーバーフローエラーを検出するためのコードを生成します。このコードには、無効であるがマップされている可能性があるアドレスにスタックポインタを設定する代わりに、メモリーアクセス違反を強制的に発生させるためのライブラリ呼び出しが含まれています (_stack_grow(3C) を参照)。

オプションの action を指定する場合は、次のいずれかである必要があります。

:detect

action:detect の場合は、そのエラーに通常関連付けられているシグナルハンドラを実行することによって、検出されたスタックオーバーフローエラーが処理されます。

:diagnose

action:diagnose の場合は、関連付けられているシグナルを捕捉し、stack_violation(3C) を呼び出してエラーを診断することによって、検出されたスタックオーバーフローエラーが処理されます。これは action を指定しない場合のデフォルト動作です。

メモリーアクセス違反がスタックオーバーフローエラーと診断されると、次のメッセージが標準エラー出力に出力されます。

ERROR: stack overflow detected:
pc=<inst_addr>, sp=<sp_addr>

ここで、<inst_addr> はエラーが検出された命令のアドレスであり、<sp_addr> はエラーが検出されたときのスタックポインタの値です。スタックオーバーフローを検査して前述のメッセージを出力した (該当する場合) あとに、そのエラーに通常関連付けられているシグナルハンドラに制御が渡されます。

-xcheck=stkovf:detect は、システムのページサイズより大きいスタックフレームを持つルーチンに入るときのスタック境界の検査を追加します (_stack_grow(3C) を参照)。追加の境界の検査に関連するコストは、ほとんどのアプリケーションで無視できる程度です。

-xcheck=stkovf:diagnose はスレッドを作成するためのシステムコールを追加します (sigaltstack(2) を参照)。追加のシステムコールに関連するコストは、アプリケーションが新しいスレッドを作成および破棄する頻度によって異なります。

-xcheck=stkovf は Oracle Solaris でのみサポートされます。Linux の C ランタイムライブラリは、スタックオーバーフローの検出をサポートしていません。

no%stkovf

スタックオーバーフローのチェックをオフにします。

init_local

ローカル変数の特定の初期化を実行します。

このオプションを指定すると、コンパイラはローカル変数を、プログラムによって代入される前に使用すると算術例外を起こす可能性がある値に初期化します。ALLOCATE 文によって割り当てられたメモリーも同じように初期化されます。

モジュール変数、STATIC ローカル変数と SAVE ローカル変数、および COMMON ブロックの変数は初期化されません。

コンパイラが変数を初期化するために使用する事前定義された値のリストについては、『C ユーザーガイド』のこのオプションの説明を参照してください。

no%init_local

ローカル変数を初期化しません。

-xcheck を指定しない場合は、コンパイラではデフォルトで -xcheck=%none が指定されます。引数を指定せずに xcheck を使用した場合は、コンパイラではデフォルトで -xcheck=%all が指定されます。

-xcheck オプションは、コマンド行で累積されません。コンパイラは、コマンドで最後に指定したものに従ってフラグを設定します。

-xchip=c

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

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

このオプションは単独で指定できますが、-xtarget オプションのマクロ展開の一部です。-xtarget オプションによって指定された値をオーバーライドするのが主な目的です。

いくつかの影響があります。

  • 命令の順序 (スケジューリング)

  • コンパイラが分岐を使用する方法

  • 意味が同じもので代用できる場合に使用する命令

SPARC での共通の -xchip 値を次に示します。

sparc64vi

SPARC64 VI プロセッサ用に最適化します。

sparc64vii

SPARC64 VII プロセッサ用に最適化します。

sparc64viiplus

SPARC64 VII+ プロセッサ用に最適化します。

sparc64x

SPARC64 X プロセッサ用に最適化します。

sparc64xplus

SPARC64 X+ プロセッサ用に最適化します。

ultra

UltraSPARC(TM) チップ用に最適化します。

ultra2

UltraSPARC II チップ用に最適化します。

ultra2e

UltraSPARC IIe チップ用に最適化します。

ultra2i

UltraSPARC IIi チップ用に最適化します。

ultra3

UltraSPARC III チップ用に最適化します。

ultra3cu

UltraSPARC IIIcu チップ用に最適化します。

ultra3i

UltraSPARC IIIi チップ用に最適化します。

ultra4

UltraSPARC IV チップ用に最適化します。

ultra4plus

UltraSPARC IV+ チップ用に最適化します。

ultraT1

UltraSPARC T1 チップ用に最適化します。

ultraT2

UltraSPARC T2 チップ用に最適化します。

ultraT2plus

UltraSPARC T2+ チップ用に最適化します。

T3

SPARC T3 チップ用に最適化します。

T4

SPARC T4 チップ用に最適化します。

T5

SPARC T5 プロセッサ用に最適化します。

M5

SPARC M5 プロセッサ用に最適化します。

generic

ほとんどのサポート対象の SPARC プラットフォームで適切なパフォーマンスになるように最適化します。(これがコンパイラのデフォルトです)。

native

このホストプラットフォームで適切なパフォーマンスになるように最適化します。

注: 次の SPARC の -xchip の値は廃止されており、将来のリリースで削除される可能性があります: ultraultra2ultra2eultra2iultra3ultra3cuultra3iultra4、および ultra4plus

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

nehalem

Intel Nehalem プロセッサ用に最適化します。

core2

Intel Core2 プロセッサ用に最適化します。

amdfam10

AMD FAM10 プロセッサ用に最適化します。

penryn

Intel Pentryn プロセッサ用に最適化します。

sandybridge

Intel Sandy Bridge プロセッサ用に最適化します。

ivybridge

Intel Ivy Bridge プロセッサ用に最適化します。

haswell

Intel Haswell プロセッサ用に最適化します。

westmere

Intel Westmere プロセッサ用に最適化します。

opteron

AMD Opteron プロセッサ用に最適化します。

pentium

Pentium プロセッサ用に最適化します。

pentium_pro

Pentium Pro プロセッサ用に最適化します。

pentium3

Pentium III プロセッサ用に最適化します。

pentium4

Pentium 4 プロセッサ用に最適化します。

generic

ほとんどの x86 プラットフォーム用に最適化します。

native

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

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

-xcode=v

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

注: -xcode=pic13 または -xcode=pic32 を指定することによって、共有オブジェクトを作成することを強くお勧めします。-m64 -xcode=abs64 でも作業可能な共有オブジェクトを構築できますが、それらは効率的ではありません。-m64 xarch=v9 -xcode=abs32 または -m64 -xcode=abs44 で作成された共有オブジェクトは動作しません。

-xcode の値を次に示します。

abs32

これは 32 ビットシステムのデフォルトです。32 ビットの絶対アドレスを生成します。コード、データ、および bss を合計したサイズは 2**32 バイトに制限されます。

abs44

これは 64 ビットシステムのデフォルトです。44 ビットの絶対アドレスを生成します。コード、データ、および bss を合計したサイズは 2**44 バイトに制限されます。64 ビットのアーキテクチャーでのみ利用できます。

abs64

64 ビットの絶対アドレスを生成します。64 ビットのアーキテクチャーでのみ利用できます。

pic13

共有ライブラリで使用する位置独立コードを生成します。-Kpic と同等です。32 ビットアーキテクチャーでは最大 2**11 個の固有の外部シンボルを、64 ビットでは 2**10 個の固有の外部シンボルをそれぞれ参照できます。

pic32

共有ライブラリで使用する位置独立コード (大規模モデル) を生成します。-KPIC と同等です。32 ビットアーキテクチャーでは最大 2**30 個の固有の外部シンボルを、64 ビットでは 2**29 個の固有の外部シンボルをそれぞれ参照できます。

32 ビットアーキテクチャーの場合は -xcode=abs32 です。64 ビットアーキテクチャーの場合は -xcode=abs44 です。

共有動的ライブラリを作成する場合、64 ビットアーキテクチャーでは -xcode のデフォルト値である abs44 (abs32 ではなく) を使用できません。-xcode=pic13 または -xcode=pic32 を指定してください。

-xcode=pic13 または -xcode=pic32 のどちらを使用するか決定するときは、elfdump -c (詳細は、elfdump(1) のマニュアルページを参照) を使用してセクションヘッダー (sh_name: .got) を探し、グローバルオフセットテーブル (GOT) のサイズを調べてください。sh_size 値が GOT のサイズです。GOT のサイズが 8,192 バイトに満たない場合は -xcode=pic13、そうでない場合は -xcode=pic32 を指定します。

一般に、-xcode の使用方法の決定に際しては、次のガイドラインに従ってください。

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

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

  • 共有ライブラリを構築する場合は、-xcode=pic13 から開始し、GOT のサイズが 8,192 バイトを超えたら、-xcode=pic32 を使用する。

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

-xcommonchk[={yes|no}]

共通ブロックの不一致の実行時検査を有効にします。

このオプションは、タスク共通および並列化を使用したプログラムのデバッグの助けとして用意されています (タスク共通プラグマを参照してください)。

通常、タスク共通宣言の不一致の実行時検査は無効です。-xcommonchk=yes でコンパイルすると実行時検査が行われます。

共通ブロックが、あるソースモジュールでは通常の共通ブロックとして宣言され、ほかの箇所ではタスク共通プラグマに現れた場合、プログラムは停止し、このような最初の不一致を示すメッセージが発行されます。

実行時検査はプログラムのパフォーマンスを低下させるので、プログラムの開発およびデバッグ時以外は使用しないでください。

-xcommoncheck を単独で指定した場合、-xcommoncheck=yes と同等です。

-xdebugformat={stabs|dwarf}

Oracle Solaris Studio コンパイラでは、デバッガ情報の形式を「stabs」形式から「dwarf」形式に移行しています。デフォルトは -xdebugformat=dwarf です。

このオプションは、移植ツールで使用するどちらかの形式にアクセスする方法として使用します。デバッガ情報を読み取るソフトウェアを保守していないか、ツールでこれらの内のいずれかの形式のデバッガ情報が必要でなければ、このオプションを使用する必要はありません。

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

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

-xdebugformat を指定しない場合は、コンパイラでは -xdebugformat=dwarf が指定されます。引数なしでこのオプションを指定するとエラーになります。

このオプションは、-g オプションによって記録されるデータの形式に影響します。-g を指定しなくても、一部のデバッグ情報が記録されますが、その情報の形式もこのオプションによって制御されます。したがって、-g を使用しなくても、-xdebugformat は有効です。

dbx とパフォーマンスアナライザソフトウェアは、stab 形式と dwarf 形式を両方とも認識するので、このオプションを使用しても、ツールの機能にはまったく影響を与えません。

これは過渡的なインタフェースであり、今後のリリースでは、マイナーリリースであっても互換性なく変更されることがあります。

stab と dwarf のどちらであっても、特定のフィールドまたは値の詳細は、今後とも変更される可能性があります。

オブジェクトまたは実行可能ファイルが「dwarf」と「stabs」のどちらのデバッグ情報でコンパイルされたかを判断するには、dwarfdump コマンドを使用してください。

-xdebuginfo=a[,a...]

デバッグおよび可観測性情報の出力量を制御します。

用語「タグタイプ」は、タグ付きの型 (構造体、共用体、列挙、およびクラス) を意味します。

次のリストには、サブオプション a に指定できる値が含まれています。サブオプションに接頭辞 no% を適用すると、そのサブオプションが無効になります。デフォルトは -xdebuginfo=%none です。サブオプションなしで -xdebuginfo を指定することは禁止されています。

%none

デバッグ情報は生成されません。これはデフォルト値です。

[no%]line

行番号およびファイル情報を出力します。

[no%]param

パラメータの場所の一覧情報を出力します。スカラー値 (たとえば、intchar *) の完全指定の型情報および型名を出力しますが、タグタイプの完全な定義は出力されません。

[no%]variable

構文的にグローバル変数およびローカル変数である変数の場所の一覧情報を出力します。これには、ファイルおよび関数の static は含まれますが、クラスの static および extern は含まれません。スカラー値 (intchar * など) の完全指定の型情報および型名を出力しますが、タグタイプの完全な定義は出力されません。

[no%]decl

関数と変数の宣言、メンバー関数、およびクラス宣言の静的なデータメンバーを出力します。

[no%]tagtype

param および variable データセットから参照されるタグタイプの完全指定の型情報、およびテンプレートの定義を出力します。

[no%]macro

マクロ情報を出力します。

[no%]codetag

DWARF コードタグ (Stabs N_PATCH とも呼ばれます) を出力します。これは、RTC および discover によって使用されるビットフィールド、構造体のコピー、およびスピルに関する情報です。

[no%]hwcprof

ハードウェアカウンタプロファイルに関する重要な情報を生成します。この情報には、ldst_map、ld/st 命令と参照されているシンボルテーブルのエントリのマッピング、およびバックトラックが分岐先を超えていないことを確認するため使用される分岐先アドレスの branch_target テーブルが含まれています。詳細は、-xhwcprof を参照してください。

注: ldst_map の情報を出力するには、tagtype 情報が存在している必要があります。この要件が満たされていない場合は、ドライバがエラーを発行します。

次のマクロは、-xdebuginfo およびほかのオプションの組み合わせに次のように展開されます。

 
-g = -g2

-gnone =
        -xdebuginfo=%none
        -xglobalize=no
        -xpatchpadding=fix
        -xkeep_unref=no%funcs,no%vars

-g1 =
        -xdebuginfo=line,param,codetag
        -xglobalize=no
        -xpatchpadding=fix
        -xkeep_unref=no%funcs,no%vars

-g2 =
        -xdebuginfo=line,param,decl,variable,tagtype,codetag
        -xglobalize=yes
        -xpatchpadding=fix
        -xkeep_unref=funcs,vars

-g3 =

        -xdebuginfo=line,param,decl,variable,tagtype,codetag,macro
        -xglobalize=yes
        -xpatchpadding=fix
        -xkeep_unref=funcs,vars
-xdepend

-depend と同義です。

-xdryrun

-dryrun と同義です。

-xF

Studio パフォーマンスアナライザを使用した関数レベルの並べ替えを許可します。

コンパイラ、アナライザ、およびリンカーを使用したコアイメージ内の関数 (副プログラム) の並べ替えを許可します。-xF オプションでコンパイルすると、アナライザが実行されます。これにより、マップファイルを作成して、関数がどのように使用されるかに応じて、メモリー中の関数の順序を並べ替えることができます。そのあとに実行される実行可能プログラムを作成するためのリンクでは、リンカーの -Mmapfile オプションを指定すると、そのマップを使用するように指示できます。これによって、実行可能ファイルの関数が別々のセクションに配置されます 。(f95 -Mpath オプションも、リンカーに通常ファイルを渡します。-Mpath オプションの説明を参照してください)。

メモリー中の副プログラムの並べ替えは、アプリケーションのテキストページフォルト時間がアプリケーションの実行時間に占める割合が大きい場合にのみ役に立ちます。そのほかの場合の並べ替えでは、アプリケーションの全体的なパフォーマンスは改善されない場合があります。パフォーマンスアナライザは Oracle Solaris Studio に付属しています。アナライザの詳細は、パフォーマンスアナライザのマニュアルを参照してください。

-xfilebyteorder=options

リトルエンディアン式プラットフォームとビッグエンディアン式プラットフォーム間のファイルの共有をサポートします。

このフラグは、書式なし入出力ファイルのバイト順序とバイト列を特定します。options には、次のフラグを任意に組み合わせたものを指定しますが、少なくとも 1 つのフラグを指定する必要があります。

littlemax_align:spec
bigmax_align:spec
native:spec

max_align は、ターゲットプラットフォームの最大バイト列を宣言します。指定できる値は 1、2、4、8、および 16 です。境界整列は、C 言語の構造体との互換性を維持するため、プラットフォーム依存のバイト列を使用する Fortran VAX 構造体と Fortran 95 派生型に適用されます。

最大バイト列が max_align のプラットフォームでは、little は「リトルエンディアン」ファイルを表します。たとえば little4 は 32 ビット x86 ファイルを表すのに対し、little16 は 64 ビット x86 ファイルを表します。

big は、最大バイト列が max_align の「ビッグエンディアン」ファイルを指定します。たとえば big8 が 32 ビット SPARC ファイルを表すのに対し、 big16 は 64 ビット SPARC ファイルを表します。

native は、コンパイルしているプロセッサプラットフォームが使用しているのと同じバイト順序、バイト列の「ネイティブ」ファイルを表します。次は、「ネイティブ」とみなされます。

 
  PLATFORM         "NATIVE" IS
32-bit SPARC         big8
64-bit SPARC         big16
32-bit x86           little4
64-bit x86           little16

spec は、%allunitfilename のコンマ区切りのリストにする必要があります。

%all は、SCRATCH として開かれるか、-xfilebyteorder フラグで明示的に指定する以外のすべてのファイルと、そのほかの論理ユニットを表します。%all は、1 回だけ指定できます。

unit は、プログラムによって開かれた特定の Fortran ユニット番号を表します。

filename は、プログラムによって開かれた特定の Fortran ファイル名を表します。

例:

-xfilebyteorder=little4:1,2,afile.in,big8:9,bfile.out,12
-xfilebyteorder=little8:%all,big16:20

注:

このオプションは、STATUS="SCRATCH" を指定して開かれたファイルには適用されません。それらのファイルに対する入出力操作は、常にネイティブプロセッサのバイト順序とバイト列が使用されます。

コンパイラコマンド行に -xfilebyteorder が指定されていない場合の最初のデフォルトは、-xfilebyteorder=native:%all です。

このオプションには、ファイル名およびユニット番号をそれぞれ 1 回だけ宣言できます。

コマンド行に -xfilebyteorder を含める場合は、littlebig、または native の少なくとも 1 つの指定と組み合わせる必要があります。

このフラグで明示的に宣言されていないファイルは、ネイティブファイルとみなされます。たとえば、xfilebyteorder=little4:zork.out を付けて zork.out をコンパイルした場合、このファイルは、4 バイトの最大データ整列規則を持つリトルエンディアンの 32 ビット x86 ファイルと宣言され、ほかのすべてのファイルはネイティブファイルになります。

ファイルに指定されたバイト順序はネイティブプロセッサと同じであるが、バイト列が異なる場合は、バイトスワップが行われないにしても、適切なパディングが使用されます。たとえば -m64 を付けた、64 ビット x86 プラットフォーム向けのコンパイルで、-xfilebyteorder=little4:filename が指定された場合などがそうです。

ビッグエンディアンとリトルエンディアン式プラットフォーム間で共有されるデータレコード内で宣言する型は、同じサイズである必要があります。たとえば、-xtypemap=integer:64,real:64,double:128 を付けてコンパイルした SPARC 実行可能ファイルの生成するファイルを、-xtypemap=integer:64,real:64,double:64 を付けてコンパイルした x86 実行可能ファイルが読み取ることはできません。これは、両者のデフォルトの倍精度データ型のサイズが異なるためです。

Oracle Solaris Studio ソフトウェアはこのリリースで、 x86 プラットフォームでの REAL*16 データをサポートするようになりました。REAL*16 データを含む書式なしファイルを X86 プラットフォームで使用できるようになりました。

ネイティブ以外のファイルとして指定されたファイルに対して、UNION/MAPデータオブジェクト全体を使った入出力操作を行うと、実行時入出力エラーになります。ネイティブ以外のファイルに対しては、MAP の個別メンバーを使った入出力操作のみ行うことができます。UNION/MAP を含む VAX レコード全体を使った入出力操作は行えません。

-xglobalize[={yes|no}]

ファイルの静的変数のグローバル化を制御します (関数は制御しません)。

グローバル化は修正継続機能および内部手続きの最適化で必要となる手法であり、それによってファイルの静的シンボルがグローバルに拡張されます。同じ名前のシンボルを区別するために、名前に接頭辞が追加されます。

デフォルトは -xglobalize=no です。-xglobalize と指定することは -xglobalize=yes と指定することと同等です。

相互の関連性:

-xpatchpadding を参照してください。

-xipo もグローバル化を要求し、-xglobalize をオーバーライドします。

-xhasc[={yes|no}]

ホレリス定数を実際の引数リストの文字列として扱います。

-xhasc=yes を指定すると、コンパイラは、副プログラムの呼び出しにおいて実際の引数として指定される文字列をホレリス定数として扱います。これはデフォルトであり、Fortran 77 の標準に準拠しています。

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

このフラグは、従来の FORTRAN プログラムの移植を支援するために提供されています。呼び出された副プログラムで引数が INTEGER、または CHARACTER 以外の型と想定されている場合、-xhasc=no を指定して、ホレリス定数とともに副プログラムを呼び出すルーチンをコンパイルします。

-xhelp=flages

コンパイラオプションのサマリーを表示します。

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

-xhwcprof[={enable|disable}]

(SPARC) コンパイラでのデータ領域プロファイリングのサポートを有効にします。

-xhwcprof を有効にすると、コンパイラは、プロファイル対象のロード命令およびストア命令と、それらが参照するデータ型および構造体メンバーをツールが関連付けるのに役立つ情報を、-g で生成されたシンボル情報と組み合わせて生成します。プロファイルデータは、ターゲットの命令空間ではなく、データ空間と関連付けられ、命令のプロファイリングだけでは入手の容易でない、動作に関する詳細情報が提供されます。

指定した一連のオブジェクトファイルを -xhwcprof を使用してコンパイルできますが、このオプションがもっとも役立つのは、アプリケーション内のすべてのオブジェクトファイルに適用したときです。このオプションによって、アプリケーションのオブジェクトファイルに分散しているすべてのメモリー参照を識別したり、関連付けたりするカバレージが提供されます。

コンパイルとリンクを別々に行う場合は、-xhwcprof をリンク時にも使用してくだ さい。

-xhwcprof=enable または -xhwcprof=disable のインスタンスは、同じコマンド行にある以前の -xhwcprof のインスタンスをすべてオーバーライドします。

-xhwcprof はデフォルトでは無効です。引数を指定せずに -xhwcprof と指定することは、-xhwcprof=enable と指定することと同等です。

-xhwcprof を使用する場合は最適化を有効にし、デバッグのデータ形式を dwarf (-xdebugformat=dwarf) に設定しておく必要があります。これは、Oracle Solaris Studio コンパイラのこのリリースのデフォルトです。同じコマンド行に -xhwcprof-xdebugformat=stabs を指定することはできません。

-xhwcprof-xdebuginfo を使用して必要最低限のデバッグ情報を自動的に有効にするため、-g は必要ありません。

-xhwcprof-g を組み合わせて使用すると、コンパイラに必要な一時ファイル記憶領域は、-xhwcprof-g を単独で指定することによって増える量の合計を超えて大きくなります。

-xhwcprof は、次のようによりプリミティブなさまざまなほかのオプションに展開するマクロとして実装されます。

 
-xhwcprof
        -xdebuginfo=hwcprof,tagtype,line
-xhwcprof=enable
        -xdebuginfo=hwcprof,tagtype,line
-xhwcprof=disable
        -xdebuginfo=no%hwcprof,no%tagtype,no%line

次のコマンドは、example.f をコンパイルし、ハードウェアカウンタによるプロファイリングのサポートを指定し、DWARF シンボルを使用してデータ型と構造体メンバーのシンボリック解析を指定します。

example% f95 -c -O -xhwcprof -g example.f

ハードウェアカウンタによるプロファイリングについての詳細は、『パフォーマンスアナライザ』のマニュアルを参照してください。

-xia[={widestneed|strict}]

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

区間演算は、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

x86 プラットフォームでは、-xarch=sse2 は、32 ビットコンパイルの場合に指定する必要があります。-xia は Linux プラットフォームでは使用できません。

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

-xinline=rl

-inline=rl と同義です。

-xinline_param=a[,a[,a]...]

このオプションは、コンパイラが関数呼び出しをインライン化するタイミングを判断するために使用するヒューリスティックを手動で変更するために使用します。

このオプションは -O3 以上でのみ有効となります。次のサブオプションは、自動インライン化がオンである場合に、-O4 以上でのみ有効となります。

次のサブオプションでは、n は正の整数である必要があります。a には次のいずれかを指定できます。

default

すべてのサブオプションの値にそのデフォルト値を設定します。

max_inst_hard[:n]

自動インライン化は、n 疑似命令 (コンパイラの内部表現でカウントされます) より小さい関数のみをインライン化候補と見なします。

これより大きい関数は、インライン化の候補から常に除外されます。

max_inst_soft[:n]

インライン関数のサイズ制限に n 擬似命令 (コンパイラの内部表現でカウントされます) を設定します。

これより大きいサイズの関数はインライン化されることがあります。

max_inst_hard を指定する場合、max_inst_soft の値は max_inst_hard の値以下になるようにします (つまり、max_inst_soft <= max_inst_hard)。

通常、コンパイラの自動インライン化では、呼び出される関数のサイズが max_inst_soft の値より小さい呼び出しのみがインライン化されます。関数のサイズが max_inst_soft の値より大きいが max_inst_hard の値より小さい場合は、関数がインライン化されることがあります。この場合の例は、関数に渡されたパラメータが定数である場合です。

関数の特定の 1 つの呼び出しサイトをインライン化するために max_inst_hard または max_inst_soft の値を変更するかどうかを判断する場合は、-xinline_report=2 を使用して詳細なインライン化メッセージを出力し、そのインライン化メッセージの推奨に従います。

max_function_inst[:n]

自動インライン化によって、関数が最大 n 疑似命令 (コンパイラの内部表現でカウントされます) まで増えることを許可します。

max_growth[:n]

自動インライン化は、プログラムのサイズを最大 n% (サイズは疑似命令で計測されます) 増やすことを許可されます。

min_counter[:n]

関数を自動インライン化するかどうかを判断するために、プロファイリングフィードバック (-xprofile) によって計測される、呼び出しサイトの最小頻度カウンタ。

このオプションは、アプリケーションがプロファイリングフィードバック (-xprofile=use) を指定してコンパイルされている場合にのみ有効です。

level[:n]

このサブオプションは、自動インライン化を適用する度合いを制御するために使用します。-xinline_param=level の設定を高くすると、より多くの関数がインライン化されます。

n は 1、2、または 3 のいずれかである必要があります。

このオプションを指定しない場合、または :n を使用せずに指定した場合、n のデフォルト値は 2 です。

自動インライン化のレベルを指定します

 
level:1    basic inlining
level:2    medium inlining (default)
level:3    aggressive inlining

このレベルによって、次のインライン化パラメータの組み合わせに指定される値が決定されます。

 
max_growth
+ max_function_inst
+ max_inst
+ max_inst_call

level = 1 の場合、すべてのパラメータはデフォルト値の半分になります。level = 2 の場合、すべてのパラメータはデフォルト値になります。level = 3 の場合、すべてのパラメータはデフォルト値の 2 倍になります。

max_recursive_depth[:n]

関数がそれ自体を直接または間接に呼び出している場合は、再帰呼び出しが発生していると言います。

このサブオプションは、再帰呼び出しを最大 n レベルまで自動的にインライン化することを許可します。

max_recursive_inst[:n]

自動再帰インライン化を実行することによって、再帰呼び出しの呼び出し元で増やすことができる疑似命令 (コンパイラの内部表現でカウントされます) の最大数を指定します。

max_recursive_inst および max_recursive_depth の間で相互作用が発生した場合、再帰関数呼び出しは、再帰呼び出しの max_recursive_depth の数まで、またはインライン化される関数のサイズが max_recursive_inst を超えるまでインライン化されます。これらの 2 つのパラメータの設定は、小さい再帰関数のインライン化の度合いを制御します。

-xinline_param=default を指定すると、コンパイラはサブオプションのすべての値にデフォルト値を設定します。

このオプションを指定しない場合、デフォルトは -xinline_param=default です。

値およびオプションのリストは、左から右に適用されます。このため、-xinline_param=max_inst_hard:30,..,max_inst_hard:50 と指定した場合は、値 max_inst_hard:50 がコンパイラに渡されます。

コマンド行に複数の -xinline_param オプションを指定した場合、サブオプションのリストは同様に左から右に適用されます。たとえば、次のように指定した場合は

 
-xinline_param=max_inst_hard:50,min_counter:70 ...
   -xinline_param=max_growth:100,max_inst_hard:100

次の指定と同じになります。

-xinline_param=max_inst_hard:100,min_counter:70,max_growth:100
-xinline_report[=n]

このオプションは、コンパイラによる関数のインライン化に関する報告を生成し、標準出力に書き込みます。報告のタイプは n の値 (0、1、または 2) によって異なります。

0

レポートは生成されません。

1

インライン化パラメータのデフォルト値のサマリー報告が生成されます。

2

インライン化メッセージの詳細な報告が生成され、インライン化された呼び出しサイトとインライン化されなかった呼び出しサイト、およびインライン化されなかったことの簡潔な理由が示されます。この報告には、インライン化されなかった呼び出しサイトをインライン化するために使用できる -xinline_param の推奨値が含まれている場合があります。

-xinline_report を指定しない場合、n のデフォルト値は 0 です。-xinline_report を指定して =n を指定しない場合、デフォルト値は 1 です。

-xlinkopt が指定されている場合は、インライン化されなかった呼び出しサイトに関するインライン化メッセージが正確でないことがあります。

レポートは、-xinline_param オプションで制御可能なヒューリスティックに従うコンパイラによって実行されたインライン化に制限されます。その他の理由でコンパイラによってインライン化された呼び出しサイトは報告されない可能性があります。

-xinstrument=[no%]datarace]

スレッドアナライザで分析するためにプログラムをコンパイルして計測するには、このオプションを指定します。スレッドアナライザの詳細は、tha(1) のマニュアルページを参照してください。

次に、パフォーマンスアナライザを使用して、計測されるプログラムを collect -r races で実行することによってデータ競合検出の実験を作成することができます。計測されたコードをスタンドアロンで実行できますが、低速で実行されます。

この機能を無効にするには、-xinstrument=no%datarace と指定します。これはデフォルト値です。

-xinstrument には、引数を 1 つ指定する必要があります。

コンパイルとリンクを別々に行う場合は、両方の手順で -xinstrument=datarace を指定してください。

このオプションは、プリプロセッサトークン __THA_NOTIFY を定義します。#ifdef __THA_NOTIFY を指定して、libtha(3) ルーチンへの呼び出しを保護できます。

このオプションでは、-g も設定します。

-xinterval[={widestneed|strict|no}]

(SPARC) 区間演算処理を有効にします。

区間演算は、Fortran 95 の数値計算方法の拡張版です。詳細は、Fortran 95 のドキュメントを参照してください。

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

-xinterval を値を付けずに指定した場合、デフォルトで widestneed になります。

no

区間演算は有効になりません。

widestneed

モードが混在した式に含まれる非間隔変数および定数を、式の中でもっとも広い間隔のデータ型に変換します。

strict

型や長さが混在した間隔式の使用を禁止します。間隔型および長さの変換はすべて明示的に行わなければなりません。

-xipo[={1|0|2}]

内部手続きの最適化を実行します。

内部手続き解析パスを呼び出し、プログラム全体の最適化を実行します。-xipo を指定すると、リンク手順でのすべてのオブジェクトファイル間の最適化を行い、しかもこれらの最適化は単にコンパイルコマンドのソースファイルにとどまりません。

解析と最適化は、-xipo を指定してコンパイルしたオブジェクトファイルにかぎられます。

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

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

値を付けずに指定した場合、-xipo=1 が想定されます。

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

-xipo を使用しない場合に関する詳細は、『Fortran 95 ユーザーズガイド』を参照してください。

コンパイルとリンクを個別に実行する場合、-xipo をコンパイルとリンクの両方で指定しなければなりません。

-xipo を指定してコンパイルした場合でも、ライブラリは、ファイル相互の内部手続き解析には含まれません。また、.s のアセンブリ言語ソースファイルも解析には関係しません。

-S を付けたコンパイルでは、-xipo フラグは無視されます。

-xipo フラグには、少なくとも -xO4 の最適化レベルが必要です。

-xipo を付けてコンパイルされた実行可能プログラムを、並列 make ツールを使用して構築する場合、並列実行するリンク手順に共通のオブジェクトファイルが存在すると、問題が発生する可能性があります。リンク処理の前に、最適化されるオブジェクトファイルのコピーをリンク手順ごとに作成してください。

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

関連項目: -xjobs

-xipo_archive={none|readonly|writeback}

クロスファイル最適化でアーカイブ (.a) ライブラリを取り込むことを許可します。

none

アーカイブファイルの処理は行いません。コンパイラは、-xipo を使用してコンパイルされたオブジェクトファイル、およびリンク時にアーカイブライブラリから抽出されたオブジェクトファイルに対して、モジュール相互のインライン化または最適化を適用しません。これを適用するには、-xipo と、-xipo_archive=readonly または -xipo_archive=writeback のいずれかをリンク時に指定する必要があります。

readonly

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

-xipo_archive=readonly オプションによって、リンク時に指定されたアーカイブライブラリのオブジェクトファイルに対する、モジュール相互のインライン化および内部手続きデータフロー解析が有効になります。ただし、モジュール間のインライン化によってほかのモジュールに挿入されたコード以外のアーカイブライブラリのコードに対する、モジュール間の最適化は有効になりません。

アーカイブライブラリ内のコードにモジュール相互の最適化を適用するには、-xipo_archive=writeback を指定する必要があります。これを行うと、コードが抽出されたアーカイブライブラリの内容が変更されることがあります。

writeback

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

アーカイブライブラリの共通セットを使用する並列リンクでは、最適化されるアーカイブライブラリの独自のコピーを、各リンクでリンク前に作成する必要があります。

-xipo_archive には引数が必要です。

-xipo_build=[yes|no]

-xipo_build を指定せずに -xipo を使用すると、コンパイラを通じて 2 回受け渡しが行われることになります (オブジェクトファイルを生成するとき、およびリンク時にファイル間の最適化を実行するとき)。-xipo_build を設定すると、最初の受け渡し時には最適化されず、リンク時にのみ最適化されることによって、コンパイルの時間が短縮されます。-xipo を指定するとリンク時に最適化が実行されるため、オブジェクトファイルを最適化する必要はありません。-xipo_build を指定して作成された最適化されていないオブジェクトファイルを -xipo を指定せずにリンクして最適化すると、アプリケーションのリンクが未解決のシンボルエラーで失敗します。

例:

次の例では、.o ファイルの高速ビルドを実行し、リンク時にファイル間の最適化を行なっています。

 
% cc -O -xipo -xipo_build -o code1.o -c code1.c
% cc -O -xipo -xipo_build -o code2.o -c code2.c
% cc -O -xipo -o a.out code1.o code2.o

-xipo_build は、.o ファイルを作成するときに -O をオフにして、ファイルを迅速に作成します。完全な -O の最適化は、-xipo のファイル間の最適化の一部としてリンク時に実行されます。

次の例は、-xipo を使用せずにリンクしています。

 
% cc -O -o a.out code1.o code2.o

-xipo_build を指定して code1.o または code2.o を生成した場合、リンク時にエラーになり、シンボル __unoptimized_object_file が未解決であることが示されます。

.o ファイルを別々に作成する場合、デフォルトの動作は -xipo_build=no です。ただし、実行可能ファイルまたはライブラリがソースファイルから 1 回の受け渡しで作成された場合は、-xipo_build が暗黙的に有効になります。例:

 
% cc -fast -xipo a.c b.c c.c

この場合、a.ob.o、および c.o が生成される最初の受け渡しで、-xipo_build=yes が暗黙的に有効になります。この動作を無効にするには、オプション -xipo_build=no を含めます。

-xivdep[=p]

IVDEP ディレクティブの解釈を無効または設定します。

IVDEP 指令は、最適化のためにループ内で検出された一部またはすべての配列参照のループがもたらす依存関係を無視するように、コンパイラに指示します。これによってコンパイラは、マイクロベクトル化、分散、ソフトウェアパイプラインなど、それ以外の場合は不可能なさまざまなループ最適化を実行できます。これは、依存関係が重要ではない、または依存関係が実際に発生しないことをユーザーが把握している場合に使用されます。

!DIR IVDEP 指令の解釈は、-xivdep オプションの値に応じて異なります。

p の次の値は、次のように解釈されます。

loop

ループキャリーのベクトル依存関係と想定されるものを無視します。

loop_any

ループキャリーのベクトル依存関係をすべて無視します。

back

逆方向のループキャリーのベクトル依存関係と想定されるものを無視します。

back_any

逆方向のループキャリーのベクトル依存関係をすべて無視します。

none

依存関係を無視しません (IVDEP ディレクティブの無効化)。

これらの解釈は、ほかのベンダーの IVDEP 指令の解釈と互換性があります。

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

-xjobs={n|auto}

複数のプロセスでコンパイルします。このフラグを指定しない場合、デフォルトの動作は -xjobs=auto です。

コンパイラが処理を行うために生成するプロセスの数を設定するには、-xjobs オプションを指定します。このオプションを使用すると、マルチ CPU マシン上での構築時間を短縮できます。現時点では、-xjobs とともに使用できるのは -xipo オプションだけです。-xjobs=n を指定すると、内部手続きオプティマイザ は、さまざまなファイルをコンパイルするために呼び出せるコードジェネレータインスタンスの最大数として n を使用します。

一般に、n に指定する確実な値は、使用できるプロセッサ数に 1.5 を掛けた数です。生成されたジョブ間のコンテキスト切り替えにより生じるオーバーヘッドのため、使用できるプロセッサ数の何倍もの値を指定すると、パフォーマンスが低下することがあります。また、あまり大きな数を使用すると、スワップ領域などシステムリソースの限界を超える場合があります。

-xjobs=auto を指定すると、コンパイラは適切な並列ジョブの数を自動的に選択します。

-xjobs には必ず値を指定する必要があります。値を指定しないと、エラー診断が表示され、コンパイルは中止します。

-xjobs を指定しない場合、デフォルトの動作は -xjobs=auto です。これは、コマンド行に -xjobs=n を追加することによってオーバーライドできます。コマンド行で複数の -xjobs の指定がある場合、一番右にあるインスタンスの指定によってオーバーライドされます。

例:

次の例は、-xipo に最大 3 つの並列プロセスを使用しています。

 
% cc -xipo -xO4 -xjobs=3 t1.o t2.o t3.o

次の例は、-xipo に単一のプロセスを順次リンクしています。

 
% cc -xipo -xO4 -xjobs=1 t1.o t2.o t3.o

次の例は、コンパイラが -xipo のジョブ数を選択して、並列でリンクしています。

 
% cc -xipo -xO4  t1.o t2.o t3.o

これは、-xjobs=auto を明示的に指定したときの動作とまったく同じです。

 
% cc -xipo -xO4 -xjobs=auto t1.o t2.o t3.o
-xkeep_unref[={[no%]funcs, [no%]vars}]

参照されない関数および変数の定義を維持します。接頭辞 no%は、その定義を場合によっては削除することをコンパイラに許可します。

デフォルトは no%funcs,no%vars です。-xkeep_unref を指定することは -xkeep_unref=funcs,vars を指定することと同等であり、-keep_unref によってすべてが維持されることを意味します。

-xkeepframe[=[%all,%none,function_name,no%function_name]]

指定した関数のスタック関連の最適化を禁止します。

%all を指定すると、すべてのコードでスタック関連の最適化を禁止します。%none を指定すると、すべてのコードでスタック関連の最適化を許可します。

このオプションがコマンド行で指定されていないと、コンパイラは -xkeepframe=%none を使用します

このオプションが値なしで指定されると、コンパイラは -xkeepframe=%all を使用します。

このオプションは累積的で、コマンド行で複数回指定できます。たとえば、—xkeepframe=%all —xkeepframe=no%func1 は、func1 を除くすべての関数のスタックフレームを保持すべきであることを示します。また、-xkeepframe-xregs=frameptr をオーバーライドします。たとえば、-xkeepframe=%all -xregs=frameptr は、すべての関数のスタックを保持しますが、-xregs=frameptr の最適化は行われないことを示します。

-xknown_lib=lib

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

このフラグを指定した場合、コンパイラは、既知のライブラリの参照を組み込み関数として扱い、ユーザー定義のバージョンを無視します。これによって、コンパイラは、ライブラリに関する情報に基づき、ライブラリルーチンの呼び出しを最適化します。

lib は、次のキーワードのいずれか、またはその中から選択したもののコンマ区切りのリストにできます。blasblas1blas2blas3intrinsics

-xknown_lib=[blas | blas1 | blas2 | blas3 ]

コンパイラは次の BLAS ライブラリルーチンを認識し、Sun のパフォーマンスライブラリの実装に適するように自由に最適化します。

-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 ルーチンは次のとおりです。

 
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 ルーチンを使用するか、このルーチンをインライン化します。

Sun Performance Library にリンクするには -library=sunperf オプションが必要です。

-xknown_lib=intrinsics

intrinsics を指定すると、Fortran 95 組み込み関数の明示的な EXTERNAL 宣言を無視し、したがってユーザー定義の組み込み関数ルーチンも無視するという効果があります。

組み込み関数としてコンパイラによって認識された関数のリストについて、『Fortran ライブラリリファレンス』マニュアルの第 2 章および第 3 章を参照してください。

-xl

(廃止) この (f77) オプションはサポートされなくなりました。現在の Fortran コンパイラの同等オプションとして、-f77=%all,no%backslash -vax=$all,no%debug を使用してください。

-xld

(廃止) この (f77) オプションはサポートされなくなりました。現在の Fortran コンパイラの同等オプションとして、-f77=%all,no%backslash -vax=$all,no%debug を使用してください。

-xlang=f77

(SPARC)該当する実行時ライブラリをインクルードし、従来の Fortran 77 に適切な実行時環境を確保します。

相互の関連性:

オプション -xlang=f77 は、f77compat ライブラリとのリンクを暗黙に定義し、Fortran 95 オブジェクトファイルと Fortran 77 オブジェクトファイルのリンクを容易にします。-xlang=f77 を使用すると、適切な実行時環境が確保されます。

警告:

-xnolib-xlang とともに使用しないでください。

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

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

言語が混合したリンクの場合、ドライバは次の順序で言語階層を使用してください。

C++

CC コマンドを使用します。詳細は、 CC (1) を参照してください。

Fortran 95 (または Fortran 90)

f95 コマンドを使用します。

Fortran 77

f95 -xlang=f77 を使用します。

C

cc コマンドを使用します。詳細は、cc(1) を参照してください。

-xlibmil

-libmil と同義です。

-xlibmopt

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

パフォーマンスの最適化のために選択された数学ルーチンのライブラリを使用します。このオプションによって通常は高速なコードが生成されます。結果が若干異なる場合がありますが、このときは普通は最終ビットが違っています。このライブラリオプションをコマンド行に指定する順序は重要ではありません。

デフォルトの丸めモード、-fround=nearest が想定され、このオプションを使用するときに必要です。

-xlicinfo

(廃止) このオプションは、コンパイル時には暗黙的に無視されます。

-xlic_lib=sunperf

(廃止) Sun Performance Library とリンクするときは、-library=sunperf を使用してください。

-xlinkopt[=level]

再配置可能なオブジェクトファイルに対してリンク時の最適化を実行します。

ポストオプティマイザは、リンク時にバイナリオブジェクトコードに対して高度なパフォーマンス最適化を多数実行します。値 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 です。

-xlinkopt を有効にするには、プログラム内のルーチンの少なくとも一部は、このオプションを指定してコンパイルする必要があります。-xlinkopt を指定しないでコンパイルされたオブジェクトバイナリについても、オプティマイザは限定的な最適化を実行できます。

-xlinkopt は、コンパイラのコマンド行で指定される静的ライブラリのコードを最適化しますが、コマンド行で指定される共有 (動的) ライブラリのコードはスキップして最適化しません。-xlinkopt はまた、共有ライブラリを構築する (-G でコンパイルする) 場合にも使用できます。

リンク時のポストオプティマイザは、実行時のプロファイルフィードバックとともに使用するのがもっとも効果的です。プロファイリングによって、コードでもっともよく使用される部分ともっとも使用されない部分が明らかになるので、オプティマイザはそれに基づき処理を集中するよう指示されます。これは、リンク時に実行されるコードの最適な配置が命令のキャッシュミスを低減できるような、大きなアプリケーションにとって特に重要です。このようなコンパイルの例を次に示します。

 
% f95 -o progt -xO5 -xprofile=collect:profdir
% progt
% f95 -o prog -xO5 -xprofile=use:prog

プロファイルのフィードバックの使用についての詳細は、-xprofile を参照してください。

このオプションを指定してコンパイルすると、リンク時間がわずかに増えます。オブジェクトファイルも大きくなりますが、実行可能ファイルのサイズは変わりません。-xlinkopt-g を指定してコンパイルすると、デバッグ情報が取り込まれるので、実行可能ファイルのサイズが増えます。

-xloopinfo

-loopinfo と同義です。

-xM

依存関係作成を生成します。

このオプションは、標準出力でのコンパイルされたソースファイルの依存関係作成を生成します。このオプションは、ソースファイル (ヘッダーファイルと Fortran モジュールの両方) のすべての依存関係作成を扱います。

モジュール依存関係の場合、このオプションは、オブジェクトベースのモジュール依存関係スキームを使用して、モジュールファイルを作成するための明示的な構築規則の必要性をなくします。

このオプションは、-c-S-Xlist、または別のコンパイル出力を生成するほかのどのコンパイルオプションとも一緒に使用することはできません。

生成された依存関係出力には構築規則は含まれず、ファイルの依存関係だけが含まれます。ユーザーは、構築に必要なすべてのファイルの構築規則を指定する必要があります。ただし、モジュールファイルの場合は、関連したオブジェクトファイルと同時に作成されるので、明示的な構築規則は必要ありません。したがって、モジュールファイルには一般的な構築規則だけで十分です。

%.mod:
        @ echo $@ is already up to date.
  

モジュールファイル構築規則は、構築規則がなければモジュールファイルに関連したすべての依存関係を「make」プロセスで除外できないようにする場合にのみ必要です。それ以外では、上記の例に示すように、構築規則は何も行いません。

-keepmod オプションを指定して使用した場合、-xM オプションで生成された依存関係は、不必要に更新したモジュールファイルのために生じるコンパイルカスケードを防止するほか、モジュールファイルでの不必要な更新を防止するために -keepmod オプションを使用したことで生じる同一のソースファイルでの再コンパイルの問題も防止します。

このオプションは、-M-I-moddir オプションとともに機能して、構築で必要なモジュールファイルの適切なディレクトリを判断します。プリコンパイルされたモジュールファイル (たとえば第三者が出荷したもの) は、正しい依存関係を生成できるように、-M オプションで示されるディレクトリに存在する必要があります。

-xmaxopt[=n]

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

!$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 フラグを使用すると、このようなあいまいな状況の場合にコンパイラが想定するデータの最大メモリー境界整列を指定できます。-xmemalign オプションは、境界整列に失敗したメモリーへのアクセスが実行時に発生した場合に行われるエラー動作 (処理) についても指定できます。

値:

値を指定する場合、数字の境界整列値 (a) と、アルファベットの動作フラグ (b) の 2 つの部分から構成する必要があります。

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

1

最大 1 バイトの境界整列

2

最大 2 バイトの境界整列

4

最大 4 バイトの境界整列

8

最大 8 バイトの境界整列

16

最大 16 バイトの境界整列

動作 b に使用できる値は次のとおりです。

i

アクセスを解釈し、実行を継続する

s

シグナル SIGBUS を発生させます。

f

すべての SPARC 64 ビットプラットフォームでは、4 バイト以下の境界整列に SIGBUS 信号を発生させます。それ以外ではアクセスを解釈して実行を継続します。ほかのすべての -xarch 値の場合、f フラグは i と同等です。

デフォルト:

-xmemalign フラグが記されていない場合に適用される最初のデフォルトは次のとおりです。

  • 32 ビット SPARC プラットフォーム (-m32) の場合は -xmemalign=8i

  • C および C++ の 64 ビット SPARC プラットフォーム (-m64) の場合は -xmemalign=8s

  • Fortran の 64 ビット SPARC プラットフォーム (-m64) の場合は -xmemalign=8f

-xmemalign が記されているが、値が指定されてない場合に適用される第 2 デフォルトは、すべてのプラットフォームで -xmemalign=1i です。

-xmemalign 自体は、特定のデータ境界整列を強制しません。-dalign または -aligncommon を参照してください。

また、b の値に i または f を指定してコンパイルしたオブジェクトファイルにリンクする場合は、必ず、-xmemalign を指定してください。

-xmodel=[a]

(x86) Oracle Solaris x64 プラットフォームで共有オブジェクトのデータアドレスモデルを指定します。

-xmodel オプションを使用すると、コンパイラで Oracle Solaris x64 プラットフォーム用の 64 ビット共有オブジェクトを作成できます。このオプションは、そのようなオブジェクトのコンパイル時にのみ指定してください。

このオプションは、64 ビット対応の x64 プロセッサで -m64 も指定した場合にのみ有効です。

a には、次のいずれかを指定できます。

small

このオプションは、実行されるコードの仮想アドレスがリンク時にわかっていて、すべてのシンボルが 0 から 2^31 - 2^24 - 1 の範囲の仮想アドレスに配置されることがわかっているスモールモデルのコードを生成します。

kernel

すべてのシンボルが 2^64 - 2^31 ~ 2^64 - 2^24 の範囲で定義されるカーネルモデルのコードを生成します。

medium

データセクションへのシンボリック参照の範囲に関する前提がないミディアムモデルのコードを生成します。テキストセクションのサイズとアドレスは、スモールコードモデルの場合と同じように制限されます。静的データが大量にあるアプリケーションでは、-m64 を指定してコンパイルするときに、-xmodel=medium が必要になることがあります。

-xmodel を指定しない場合、コンパイラは -xmodel=small と見なします。引数を指定せずに-xmodel を指定すると、エラーになります。

この範囲内でオブジェクトにアクセスすることが確実であれば、必ずしもすべてのルーチンをこのオプションでコンパイルする必要はありません。

すべての Linux システムが、ミディアムモデルをサポートしているわけではありません。

-xnolib

-nolib と同義です。

-xnolibmil

-nolibmil と同義です。

-xnolibmopt

-xlibmopt を取り消します。

最適化された数学ライブラリとのリンクを取り消すには、-fast と一緒に使用してください。

-xO[n]

-O[n] と同義です。

-xopenmp[={parallel|noopt|none}]

OpenMP 指令による明示的な並列化を有効にします。

このフラグは、次のサブオプションキーワードを受け入れます。

parallel

OpenMP プラグマの認識を有効にします。-xopenmp=parallel での最適化レベルは -xO3 です。コンパイラは必要に応じて最適化レベルを -xO3 に引き上げ、警告を発行します。

このフラグは、プリプロセッサマクロ _OPENMP も定義します。_OPENMP マクロは、10 進値 yyyymm が含まれるように定義します。ここで、yyyymm は、この実装がサポートする OpenMP API のバージョンの年と月を示します。特定のリリースの _OPENMP マクロの値については、『Oracle Solaris Studio OpenMP API ユーザーガイド』を参照してください。

noopt

OpenMP プラグマの認識を有効にします。最適化のレベルが -xO3 より低い場合でも、コンパイラは最適化のレベルを上げません。f95 -xO2 -xopenmp=noopt のように -xO3 より低い最適化レベルを明示的に設定すると、エラーが表示されます。-xopenmp=noopt で最適化レベルを指定しなかった場合、OpenMP プラグマが認識され、その結果プログラムが並列化されますが、最適化は行われません。このサブオプションは、プリプロセッサマクロ _OPENMP も定義します。

none

OpenMP プラグマの認識を有効にせず、プログラムの最適化レベルへの変更は行わず、プリプロセッサマクロを定義しません。-xopenmp が指定されない場合は、これがデフォルトになります。

-xopenmp を指定するけれどもサブオプションキーワードを指定しない場合、コンパイラは -xopenmp=parallel であると見なします。-xopenmp を一切指定しない場合、コンパイラは -xopenmp=none であると見なします。

parallel および noopt のサブオプションは、自動的に -stackvar を呼び出します。

dbx を指定して OpenMP プログラムをデバッグする場合、-g -xopenmp=noopt を指定してコンパイルすれば、並列化部分にブレークポイントを設定して変数の内容を表示できます。

-xopenmp のデフォルトは、将来のリリースで変更される可能性があります。警告メッセージを出力しないようにするには、適切な最適化レベルを明示的に指定します。

OpenMP プログラムを実行するときに使用するスレッドの数を指定するには、OMP_NUM_THREADS 環境変数を使用します。OMP_NUM_THREADS が設定されていない場合、並列領域の実行に使用されるスレッドのデフォルトの数は、マシンで利用できるコアの数になりますが、上限は 32 です。別のスレッド数を指定するには、OMP_NUM_THREADS 環境変数を設定するか、omp_set_num_threads() OpenMP 実行時ルーチンを呼び出すか、並列領域ディレクティブの num_threads 節を使用します。最高のパフォーマンスを得るため、並列領域の実行に使用するスレッドの数が、マシン上で使用できるハードウェアスレッド (仮想プロセッサ) の数を超えないようにしてください。Oracle Solaris システムでは、psrinfo(1M) コマンドを使用すると、この数を特定できます。Linux システムでは、ファイル /proc/cpuinfo を調べることでこの数を特定できます。詳細は、『OpenMP API ユーザーズガイド』を参照してください。

入れ子並列は、デフォルトでは無効です。入れ子並列を有効にするには、OMP_NESTED 環境変数を TRUE に設定する必要があります。詳細は、『OpenMP API ユーザーズガイド』を参照してください。

コンパイルとリンクを別々に実行する場合は、コンパイル手順とリンク手順の両方に -xopenmp を指定してください。リンク手順とともに使用した場合、-xopenmp オプションは、OpenMP 実行時サポートライブラリ libmtsk.so とリンクします。

最新の機能と最適なパフォーマンスを得るために、OpenMP 実行時ライブラリの最新のパッチ、libmtsk.so がシステムにインストールされていることを確認してください。

マルチスレッド対応アプリケーションを構築するための OpenMP Fortran 95、C および C++ アプリケーションプログラムインタフェース (API) の詳細は、『Oracle Solaris Studio OpenMP ユーザーガイド』を参照してください。

OpenMP の C の実装に固有の情報については、『Oracle Solaris Studio C ユーザーガイド』を参照してください。

-xpad

-pad と同義です。

-xpagesize=n

スタックとヒープの優先ページサイズを設定します。

n の値は次のいずれかである必要があります。

SPARC の場合: 8K64K512K4M32M256M2G16G、または default

x86 の場合: 4K2M4M1G、または default

ターゲットプラットフォームの Oracle Solaris OS に対して有効なページサイズを指定する必要があります。有効なページサイズを指定しないと、要求は実行時に暗黙的に無視されます。

ページ内のバイト数を判断するには、pagesize(1) Oracle Solaris コマンドを使用します。オペレーティングシステムでは、ページサイズ要求に従うという保証はありません。ただし、適切なセグメントの整合を使用して、要求されたページサイズを取得できる可能性を高められます。セグメントの整合の設定方法は、-xsegment_align オプションを参照してください。ターゲットプラットフォームのページサイズを判断するには、pmap(1) または meminfo(2) を使用します。

-xpagesize=default を指定する場合、フラグは無視されます。引数を指定せずに -xpagesize を使用すると、-xpagesize=default と同等になります。

このオプションは -xpagesize_heap=n -xpagesize_stack=n のマクロです。これらの 2 つのオプションは -xpagesize と同じ次の引数を使用します。両方に同じ値を設定するには -xpagesize=n を指定します。別々の値を指定するには個々に指定します。

このフラグを指定してコンパイルすることは、LD_PRELOAD 環境変数を同等のオプションで mpss.so.1 に設定するか、またはプログラムを実行する前に同等のオプションを指定して Oracle Solaris コマンド ppgsz(1) を実行することと同じ効果を持ちます。詳細は、Oracle Solaris OS の各マニュアルページを参照してください。

-xpagesize_heap=n

ヒープのメモリー内のページサイズを設定します。

n は、-xpagesize の説明と同じです。

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

-xpagesize_stack=n

スタックのメモリー内のページサイズを設定します。

n は、-xpagesize の説明と同じです。

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

-xpatchpadding[={fix|patch|size}]

各関数を開始する前に、メモリー領域を予約します。fix を指定した場合、コンパイラは fix で必要となる領域を予約して続行します。これはデフォルト値です。patch を指定した場合、または値を指定しない場合、コンパイラはプラットフォーム固有のデフォルト値で予約します。値 -xpatchpadding=0 は 0 バイトの領域を予約します。size の最大値は、x86 では 127 バイト、および SPARC では 2048 バイトです。

-xpec[={yes|no}]

PEC (Portable Executable Code) バイナリを生成します。

このオプションは、プログラム中間表現をオブジェクトファイルとバイナリに入れます。このバイナリは、あとでチューニングやトラブルシューティングのために、使用される場合があります。

-xpec を使用して構築したバイナリは、-xpec を使用しないで構築したバイナリの通常 5 - 10 倍の大きさになります。

デフォルトは -xpec=no です。引数がない場合、-xpec-xpec=yes と同義です。

-xpentium

(x86) -xtarget=pentium と同じです。

-xpg

-pg と同義です。

-xpp={fpp|cpp}

.F.F95、および .F03 ファイルで使用するソースファイルプリプロセッサを選択します。

デフォルトは fpp であり、これは Fortran に適しています。コンパイラの以前のバージョンでは、C 言語の標準プリプロセッサである cpp を使用していました。cpp を選択するには、-xpp=cpp と指定します。

-xprefetch[=a[,a]]

先読みをサポートするアーキテクチャーで先読み命令を有効にしたり、調整したりします。最適化レベル -xO3 以上のコンパイルを必要とします。

a は、次の値のいずれかである必要があります。

auto

先読み命令の自動生成を有効にします。

no%auto

自動生成を無効にします。

explicit

明示的な先読みディレクティブを有効にします。

no%explicit

明示的な先読み指令を無効にします。

latx:factor

(SPARC) 指定の係数により、コンパイラの先読みからロード、および先読みからストアまでの待機時間を調整します。係数には必ず正の浮動小数点または整数を指定します。

先読みの応答時間とは、先読み命令を実行してから先読みされたデータがキャッシュで利用可能となるまでのハードウェアの遅延のことです。

コンパイラは、先読み命令と先読みされたデータを使用するロードまたはストア命令の距離を決定する際に先読み応答時間の値を想定します。注 -- 先読みからロードまでの想定待機時間は、先読みからストアまでの想定待機時間と同じでない場合があります。

コンパイラは、幅広いマシンとアプリケーションで最適なパフォーマンスを得られるように先読みメカニズムを調整します。しかし、コンパイラの調整作業が必ずしも最適であるとはかぎりません。メモリーに負担のかかるアプリケーション、特に大型のマルチプロセッサでの実行を意図したアプリケーションの場合、先読みの応答時間の値を引き上げることにより、パフォーマンスを向上できる場合があります。この値を増やすには、1 よりも大きい factor を使用します。.52.0 の間の値は、おそらく最高のパフォーマンスを提供します。

外部キャッシュの中に完全に常駐するデータセットを持つアプリケーションの場合は、先読み待機時間の値を減らすことでパフォーマンスを向上できる場合があります。値を小さくするには、1 よりも小さな factor を使用します。

latx:factor サブオプションを使用するには、1.0 程度の factor から順にアプリケーションの性能テストを実行します。そのあと、テストの結果に応じて係数を増減し、パフォーマンステストを再実行します。係数の調整を継続し、最適なパフォーマンスに到達するまでパフォーマンステストを実行します。係数を小刻みに増減すると、しばらくはパフォーマンスに変化がなく、突然変化し、再び平常に戻ります。

yes

-xprefetch=auto,explicit と同じです。ほかのサブオプションは指定できません。

no

-xprefetch=no%auto,no%explicit と同じです。ほかのサブオプションは指定できません。

-xprefetch-xprefetch=auto、および -xprefetch=yes を指定すると、コンパイラは生成したコードに自由に先読み命令を挿入します。その結果、先読みをサポートするアーキテクチャーでパフォーマンスが向上します。

デフォルト:

-xprefetch を指定しないと、-xprefetch=auto,explicit が使用されます。

-xprefetch だけを指定すると、-xprefetch=auto,explicit が使用されます。

-xprefetch または -xprefetch=yes などで自動先読みを有効にしても、待機時間係数を指定しないと、latx:1.0 が使用されます。

相互の関連性:

-xprefetch=explicit を指定すると、コンパイラは次の指令を認識します。

 
!$PRAGMA SUN_PREFETCH_READ_ONCE (address)
!$PRAGMA SUN_PREFETCH_READ_MANY (address)
!$PRAGMA SUN_PREFETCH_WRITE_ONCE (address)
!$PRAGMA SUN_PREFETCH_WRITE_MANY (address)

-xchip 設定は、想定待機時間の決定、つまり latx:factor 設定の結果に影響を与えます。

latx:factor サブオプションは、自動先読みが有効になっている場合にのみ有効です。つまり、auto とともに使用しないかぎり、latx:factor は無視されます。

警告:

明示的な先読みは、測定値によってサポートされた特殊な環境でのみ使用すべきです。

コンパイラは広範囲なマシンやアプリケーションにわたって最適なパフォーマンスが得られるように先読みメカニズムを調整するため、latx:factor サブオプションは、パフォーマンステストによって明確な利点があることが示されている場合にのみ使用するようにしてください。想定される先読みの応答時間は、リリースごとに変更される可能性があります。したがって、別のリリースに切り替えたら、その都度応答時間係数の影響を再テストすることを推奨します。

-xprefetch_auto_type=[no%]indirect_array_access

間接的にアクセスされるデータ配列の間接先読みを生成します。

[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

先読み命令の挿入程度を制御します。

このオプションは、-xprefetch=auto を使用して、3 以上の最適化レベル (-xO3) で、かつ先読みをサポートするプラットフォーム上でコンパイルする場合にのみ有効です。

n には 1、2、または 3 を指定できます。

-xprefetch=auto のデフォルトはレベル 2 です。

先読みレベル 2 は、レベル 1 よりも多くの先読み命令の機会を見つけます。先読みレベル 3 は、レベル 2 よりも多くの先読み命令を見つけます。

先読みレベル 2 および 3 は、旧バージョンの SPARC および x86 プラットフォームでは無効な場合があります。

-xprofile=p

プロファイルのデータを収集、または最適化のためにプロファイルを使用します。

p には collect[:profdir]、use[:profdir]、または tcov[:profdir] を指定する必要があります

このオプションを指定すると、実行頻度のデータが収集されて実行中に保存されます。このデータを以降の実行で使用すると、パフォーマンスを向上させることができます。プロファイルの収集は、マルチスレッド対応のアプリケーションにとって安全です。すなわち、独自のマルチタスク (-mt) を実行するプログラムをプロファイリングすることで、正確な結果が得られます。このオプションは、最適化レベルを -xO2 かそれ以上に指定するときにのみ有効になります。

コンパイルとリンクを別々の手順で実行する場合は、コンパイル手順とリンク手順の両方で同じ -xprofile オプションを指定する必要があります。

collect[:profdir]

実行頻度のデータを集めて保存します。のちに -xprofile=use を指定した場合にオプティマイザがこれを使用します。コンパイラによって文の実行頻度を測定するためのコードが生成されます。

-xMerge-ztext、および -xprofile=collect を一緒に使用しないでください。-xMerge を指定すると、静的に初期化されたデータを読み取り専用記憶領域に強制的に配置します。 -ztext を指定すると、位置に依存するシンボルを読み取り専用記憶領域内で再配置することを禁止します。-xprofile=collect を指定すると、書き込み可能記憶領域内で、静的に初期化された、位置に依存するシンボルの再配置を生成します。

プロファイルディレクトリ名として profdir を指定すると、この名前が、プロファイル化されたオブジェクトコードを含むプログラムまたは共有ライブラリの実行時にプロファイルデータが保存されるディレクトリのパス名になります。パス名が絶対パスではない場合、プログラムがオプション -xprofile=use:profdir でコンパイルされるときの現在の作業用ディレクトリの相対パスと見なされます。

-xprofile=collect:prof_dir または -xprofile=tcov:prof_dir でプロファイルディレクトリ名を指定しない場合、プロファイルデータは実行時に、program.profile という名前のディレクトリに保存されます (program はプロファイリングされたプロセスのメインプログラムのベース名)。この場合は、環境変数 SUN_PROFDATA および SUN_PROFDATA_DIR を使用して、実行時にプロファイルデータが保存される場所を制御できます。設定する場合、プロファイルデータは $SUN_PROFDATA_DIR/$SUN_PROFDATA で指定されたディレクトリに書き込まれます。

プロファイルディレクトリ名がコンパイル時に指定されても、実行時に SUN_PROFDATA_DIR および SUN_PROFDATA の効果はありません。これらの環境変数は、tcov で書き込まれるプロファイルデータファイルのパスと名前を同様に制御します。tcov(1) のマニュアルページを参照してください。

これらの環境変数が設定されていない場合、プロファイルデータは現在のディレクトリ内のディレクトリ profdir.profile に書き込まれます (profdir は実行可能ファイルの名前または -xprofile=collect:profdir フラグで指定される名前)。profdir がすでに .profile で終わっている場合、-xprofile は .profile を profdir に追加しません。プログラムを複数回実行すると、実行頻度データは profdir.profile ディレクトリに蓄積されていくので、以前の実行頻度データは失われません。

Example[1]: プログラムが構築されたディレクトリと同じディレクトリ内にある myprof.profile ディレクトリ内のプロファイルデータを収集して使用するには、次の手順に従います。

 
f95 -xprofile=collect:myprof.profile -xO5 prog.f95 -o prog
  ./prog
f95 -xprofile=use:myprof.profile -xO5 prog.f95 -o prog

Example[2]: /bench/myprof.profile ディレクトリ内のプロファイルデータを収集し、収集したプロファイルデータをあとでフィードバックコンパイルで最適化レベル -xO5 で使用するには、次の手順に従います。

f95 -xprofile=collect:/bench/myprof.profile -xO5 prog.f95 \
     -o prog
  ...run prog from multiple locations...
f95 -xprofile=use:/bench/myprof.profile -xO5 prog.f95 -o prog

別々の手順でコンパイルしてリンクする場合は、-xprofile=collect を指定してコンパイルしたオブジェクトファイルは、リンクでも必ず -xprofile=collect を指定してください。

非同期のプロファイル収集を制御する環境変数の説明については、このマニュアルページの「環境変数」のセクションも参照してください。

use[:profdir]

-xprofile=collect[:profdir] または -xprofile=tcov[:profdir] でコンパイルされたコードから収集された実行頻度データを使用して、プロファイル化されたコードが実行されたときに実行された作業用に最適化します。profdir は、-xprofile=collect[:profdir] または -xprofile=tcov[:profdir] でコンパイルされたプログラムを実行して収集されたプロファイルデータを含むディレクトリのパス名です。

tcov と -xprofile=use[:profdir] の両方で使用できるデータを生成するには、-xprofile=tcov[:profdir] オプションを使用して、コンパイル時に同じプロファイルディレクトリを指定する必要があります。混乱を最小限に抑えるには、profdir を絶対パス名として指定します。

profdir はオプションです。profdir が指定されていない場合、実行可能バイナリの名前が使用されます。-o が指定されていない場合、a.out が使用されます。profdir が指定されていない場合、コンパイラは、profdir.profile/feedback、または a.out.profile/feedback を探します。例:

f95 -xprofile=collect -o myexe prog.f95
f95 -xprofile=use:myexe -xO5 -o myexe prog.f95

-xprofile=collect オプションを付けてコンパイルしたときに生成され、プログラムの前の実行で作成されたフィードバックファイルに保存された実行頻度データを使用して、プログラムが最適化されます。

-xprofile オプションを除き、ソースファイルおよびコンパイラのほかのオプションは、フィードバックファイルを生成したコンパイル済みプログラムのコンパイルに使用したものと完全に同一のものを指定する必要があります。同じバージョンのコンパイラは、収集構築と使用構築の両方に使用する必要があります。

-xprofile=collect:profdir を付けてコンパイルした場合は、-xprofile=use: profdir のコンパイルの最適化に同じプロファイルディレクトリ名 profdir を使用する必要があります。

収集 (collect) 段階と使用 (use) 段階の間のコンパイル速度を高める方法については、-xprofile_ircache も参照してください。

tcov[:profdir]

tcov(1) を使用する基本のブロックカバレッジ分析用の命令オブジェクトファイル。

オプションの :profdir 引数を指定した場合、コンパイラは指定された場所にプロファイルディレクトリを作成します。プロファイルディレクトリに格納したデータは、tcov (1)、または -xprofile=use:profdir を指定したコンパイラで使用できます。

オプションの :profdir 引数を省略すると、プロファイル化されたプログラムの実行時にプロファイルディレクトリが作成されます。プロファイルディレクトリに保存されたデータは、tcov(1) でのみ使用できます。プロファイルディレクトリの場所は、環境変数 SUN_PROFDATA および SUN_PROFDATA_DIR を使用して指定できます。下記の「環境変数」を参照してください。

:profdir で指定されている場所が絶対パス名でない場合、その場所は、プログラムがコンパイルされるときの現在の作業ディレクトリを基準にして解釈されます。

いずれかのオブジェクトファイルに対して :profdir が指定されている場合は、同じプログラム内のすべてのオブジェクトファイルに対して同じ場所を指定する必要があります。場所が :profdir で指定されているディレクトリには、プロファイル化されたプログラムを実行するときにすべてのマシンからアクセスできる必要があります。プロファイルディレクトリはその内容が必要なくなるまで削除できません。コンパイラでプロファイルディレクトリに保存されたデータは、再コンパイルする以外復元できません。

例 1: 1 つ以上のプログラムのオブジェクトファイルが -xprofile=tcov:/test/profdata でコンパイルされる場合、/test/profdata.profile という名前のディレクトリがコンパイラによって作成されて、プロファイル化されたオブジェクトファイルを表すデータの保存に使用されます。実行時に同じディレクトリを使用して、プロファイル化されたオブジェクトファイルに関連付けられた実行データを保存できます。

例 2: 「myprog」という名前のプログラムが -xprofile=tcov でコンパイルされ、ディレクトリ /home/joe で実行されると、実行時にディレクトリ /home/joe/myprog.profile が作成されて、実行時プロファイルデータの保存に使用されます。

-xprofile_ircache[=path]

(SPARC) プロファイルの収集段階と使用段階の間、コンパイルデータを保存および再利用します。

collect 段階で保存したコンパイルデータを再利用することによって use 段階のコンパイル時間を短縮するには、-xprofile=collect|use とともに使用します。

指定すると、path はキャッシュファイルが保存されているディレクトリをオーバーライドします。デフォルトでは、これらのファイルはオブジェクトファイルと同じディレクトリに保存されます。収集段階と使用段階が 2 つの別のディレクトリで実行される場合は、パスを指定しておくと便利です。

一般的なコマンドシーケンスを次に示します。

 
f95 -xO5 -xprofile=collect -xprofile_ircache t1.f95 t2.f95
a.out // run collects feedback data
f95 -xO5 -xprofile=use -xprofile_ircache t1.f95 t2.f95

大きなプログラムでは、中間データが保存されるため、使用段階のコンパイル時間を大幅に向上させることができます。ただし、データを保存するために必要なディスク容量が増大します。

-xprofile_pathmap=collect_prefix:use_prefix

(SPARC) プロファイルデータファイルのパスマッピングを設定します。

-xprofile_pathmap オプションは -xprofile=use オプションとともに使用します。

コンパイラが -xprofile=use でコンパイルされたオブジェクトファイルのプロファイルデータを見つけられず、次の点に該当する場合は、-xprofile_pathmap を使用します。

  • 前回 -xprofile=collect でコンパイルしたときに使用されたディレクトリとは異なるディレクトリで、-xprofile=use を指定してコンパイルしています。

  • オブジェクトファイルはプロファイル内で共通ベース名を共有しているが、異なるディレクトリのそれらの場所で相互に識別されている。

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

-reduction と同義です。

-xregs=r[,r...]

生成されたコードのレジスタの使用法を指定します。

r には、applfloat、frameptr サブオプションのいずれか 1 つ以上をコンマで区切って指定します。

サブオプションの前に no% を付けるとそのサブオプションは無効になります。

例: -xregs=appl,no%float

-xregs サブオプションは、特定のハードウェアプラットフォームでしか使用できません。

appl (SPARC)

コンパイラがアプリケーションレジスタをスクラッチレジスタとして使用してコードを生成することを許可します。アプリケーションレジスタは、32 ビットプラットフォームでは g2g3、および g4、64 ビットプラットフォームでは g2 および g3 です。

すべてのシステムソフトウェアおよびライブラリは、-xregs=no%appl を指定してコンパイルすることをお勧めします。システムソフトウェア (共有ライブラリを含む) は、アプリケーション用のレジスタの値を保持する必要があります。これらの値は、コンパイルシステムによって制御されるもので、アプリケーション全体で整合性が確保されている必要があります。

SPARC ABI では、これらのレジスタはアプリケーションレジスタと記述されています。これらのレジスタを使用すると必要なロードおよびストア命令が少なくてすむため、パフォーマンスが向上します。ただし、アセンブリコードで記述された古いライブラリプログラムとの間で衝突が起きることがあります。

SPARC 命令セットの詳細は、-xarch を参照してください。

float (SPARC)

コンパイラが浮動小数点レジスタを整数値用のスクラッチレジスタとして使用してコードを生成することを許可します。浮動小数点値を使用する場合は、このオプションとは関係なくこれらのレジスタを使用します。浮動小数点レジスタに対するすべての参照を排除したバイナリコードを生成するには、-xregs=no%float を使用するとともに、決して浮動小数点型をソースコードで使わないようにします。

frameptr (x86)

フレームポインタレジスタ (IA32 の場合 %ebp、x86 の 64 ビットプラットフォームの場合 %rbp) をコンパイラが汎用レジスタとして使用することを許可します。

デフォルトは -xregs=no%frameptr です。

-features=no%except によって例外も無効になっている場合を除いて、C++ コンパイラは -xregs=frameptr を無視します。-xregs=frameptr-fast の一部ですが、-features=no%except も同時に指定されないかぎり C++ コンパイラによって無視されます。

-xregs=frameptr を使用すると、コンパイラは浮動小数点レジスタを自由に使用できるので、プログラムのパフォーマンスが向上します。ただし、デバッガおよびパフォーマンス測定ツールの一部の機能が制限される場合があります。スタックトレース、デバッガ、およびパフォーマンスアナライザは、—xregs=frameptr を使用してコンパイルされた機能についてレポートできません。

また、Posix pthread_cancel() への C++ の呼び出しは、クリーンアップハンドラを見つけようとして失敗します。

C、Fortran、C++ が混在しているコードで、C または Fortran 関数から直接または間接的に呼び出された C++ 関数が例外をスローする可能性がある場合、このコードは -xregs=frameptr でコンパイルしないようにしてください。このような言語が混在するソースコードを -fast でコンパイルする場合は、コマンド行の -fast オプションのあとに -xregs=no%frameptr を追加します。

64 ビットのプラットフォームでは利用できるレジスタが多いため、—xregs=frameptr でコンパイルすると、64 ビットコードよりも 32 ビットコードのパフォーマンスが向上する可能性が高くなります。

注: -xpg も指定した場合は、コンパイラは -xregs=frameptr を無視して警告を発行します。また、-xkeepframe-xregs=frameptr をオーバーライドします。

SPARC のデフォルトは -xregs=appl,float です。x86 のデフォルトは -xregs=no%frameptr です。x86 での -fast の展開に含まれる場合は -xregs=frameptr です。

アプリケーションにリンクする共有ライブラリ用のコードは、-xregs=no%appl,float を指定してコンパイルすることをお勧めします。少なくとも、共有ライブラリとリンクするアプリケーションがこれらのレジスタの割り当てを認識するように、共有ライブラリがアプリケーションレジスタを使用する方法を明示的に示す必要があります。

たとえば、大局的な方法で (重要なデータ構造体を示すためにレジスタを使用するなど) レジスタを使用するアプリケーションは、ライブラリと確実にリンクするため、-xregs=no%appl なしでコンパイルされたコードを含むライブラリがアプリケーションレジスタをどのように使用するかを正確に特定する必要があります。

-xs[={yes|no}]

(Oracle Solaris) オブジェクトファイルからのデバッグ情報を実行可能ファイルにリンクします。

-xs-xs=yes と同じです。-xdebugformat=dwarf のデフォルトは -xs=yes と同じです。-xdebugformat=stabs のデフォルトは -xs=no と同じです。

このオプションは、実行可能ファイルのサイズ、およびデバッグのためにオブジェクトファイルを保持する必要性のトレードオフを制御します。dwarf の場合は、-xs=no を使用して実行可能ファイルを小さくしますが、オブジェクトファイルに依存しています。stabs の場合は、-xs または -xs=yes を使用してオブジェクトファイルに依存しないようにしますが、実行可能ファイルが大きくなります。このオプションは、dbx のパフォーマンスやプログラムの実行時パフォーマンスにはほとんど影響しません。

コンパイルコマンドがリンクを強制した (つまり、-c を指定しない) 場合、オブジェクトファイルはなく、デバッグ情報を実行可能ファイルに含める必要があります。この場合、-xs=no (暗黙的または明示的) は無視されます。

この機能は、コンパイラが生成されるオブジェクトファイル内のセクションフラグおよびセクション名を調整し、リンカーにそのオブジェクトファイルのデバッグ情報に関する処理を指示することによって実装されます。このため、これはコンパイラオプションであり、リンカーオプションではありません。一部のオブジェクトファイルが -xs=yes でコンパイルされ、ほかのオブジェクトファイルが -xs=no でコンパイルされた実行可能ファイルを作成することが可能です。

Linux コンパイラは -xs を受け入れますが無視します。Linux コンパイラは -xs={yes|no} を受け入れません。

-xsafe=mem

(SPARC) コンパイラは、メモリー保護の違反が発生していないことを想定できます。

このオプションを使用すると、コンパイラでは SPARC V6 アーキテクチャーで違反のないロード命令を使用できます。

警告:

アドレスの位置合わせが合わない、またはセグメンテーション侵害などの違反が発生した場合は違反のないロードはトラップを引き起こさないので、このオプションはこのような違反が起こる可能性のないプログラムでしか使用しないでください。ほとんどのプログラムではメモリーに関するトラップは起こらないので、大多数のプログラムでこのオプションを安全に使用できます。例外条件の処理にメモリーベースのトラップを明示的に使用するプログラムでは、このオプションは使用しないでください。

相互の関連性:

このオプションは、最適化レベルの -xO5 と、次のいずれかの値の -xarch を組み合わせた場合にだけ有効です。-m32-m64 の両方で sparcsparcvissparcvis2、または sparcvis3

-xsegment_align=n

(Oracle Solaris) このオプションを指定すると、ドライバはリンク行で特殊なマップファイルをインクルードします。マップファイルはテキスト、データ、および bss セグメントを、n で指定された値に整列します。非常に大きなページを使用する場合は、ヒープセグメントおよびスタックセグメントが適切な境界に整列されることが重要です。これらのセグメントが整列されない場合、次の境界まで小さなページが使用され、この結果、パフォーマンスが低下することがあります。マップファイルにより、セグメントは確実に適切な境界上に整列されます。

n の値は次のいずれかである必要があります。

SPARC: 有効な値は、8K64K512K2M4M32M256M1G、および none です。

x86: 有効な値は、4K8K64K512K2M4M32M256M1G、および none です。

SPARC と x86 のデフォルトはどちらも none です。

推奨の使用法は次のとおりです。

SPARC 32-bit compilation: -xsegment_align=64K
SPARC 64-bit compilation: -xsegment_align=4M

x86 32-bit compilation: -xsegment_align=8K
x86 64-bit compilation: -xsegment_align=4M

ドライバは適切なマップファイルをインクルードします。たとえば、ユーザーが -xsegment_align=4M と指定した場合、ドライバは -Minstall-directory/lib/compilers/mapfiles/map.4M.align をリンク行に追加します。install-directory はインストールディレクトリです。前述のセグメントは、4M 境界上に整列されます。

-xspace

コードサイズを大きくしないでください。

コードサイズが増加する場合は、最適化を行いません。例: ループを展開しないでください。

-xtarget=t

命令セットと最適化の対象とするシステムを指定します。

t には、nativenative64genericgeneric64platform-name のいずれかを指定する必要があります。

-xtarget オプションは、実際のシステムで発生する、-xarch-xchip、および -xcache の組み合わせをすばやく、簡単に指定できます。-xtarget の意味は = のあとに指定した値を展開したものにあります。

-xtarget 値は次のとおりです。

native

ホストシステム (32 ビットアーキテクチャー) で最高のパフォーマンスが得られるようにします。-m32 -xarch=native -xchip=native -xcache=native に展開します。

native64

廃止されました。代わりに、-xtarget=native -m64 を使用してください。

generic

ほとんどの 32 ビットプラットフォームで最高のパフォーマンスが得られるようにします。これがデフォルトで、-m32 -xarch=generic -xchip=generic -xcache=generic のように展開します。

generic64

廃止されました。代わりに -xtarget=generic -m64 を使用してください。

platform-name

指定するシステムで最高のパフォーマンスが得られます。

有効な SPARC プラットフォーム名は、ultraultra2ultra2iultra1/140ultra1/170ultra1/200ultra2/1170ultra2/1200ultra2/1300ultra2/2170ultra2/2200ultra2/2300ultra2eultra3ultra3cuultra3iultra4ultra4plusultraT1ultraT2ultraT2plusT3T4T5M5sparc64visparc64viisparc64viiplussparc64xsparc64xplus です。

注: 次の SPARC プラットフォーム名は廃止されており、将来のリリースで削除される可能性があります。ultraultra2ultra2eultra2iultra3ultra3cuultra3iultra4、および ultra4plus

UltraSPARC V9 プラットフォームでの 64 ビット Oracle Solaris OS 向けのコンパイルは、-m64 フラグで指示します。-xtarget を指定する場合、次のように -m64 オプションも指定する必要があります。

-xtarget=ultra2 ... -m64

それ以外の場合は、32 ビットメモリーモデルが使用されます。

x86 システムでは、有効なプラットフォームは、genericnativepentiumpentium_propentium3pentium4woodcrestpenrynnehalemsandybridgeivybridgehaswellwestmerebarcelona、および opteron です。

64 ビット x86 AMD Opteron プラットフォームで 64 ビット Oracle Solaris OS をコンパイルする場合は、次のように -m64 フラグで示されます。

-xtarget=opteron -m64

それ以外の場合は、32 ビット x86 用のコンパイルに戻ります。

プラットフォーム名ごとに使用する実際の -xarch -xchip -xarch 値を示す -xtarget 展開については、『Fortran ユーザーズガイド』を参照してください。

このオプションはマクロです。-xtarget の特定の各値は、-xarch-xchip、および -xcache オプションの特定の一連の値に展開されます。たとえば、-xtarget=ultra4 は、-xarch=sparcvis -xcache=64/32/4:8192/128/2 -xchip=ultra4 と同等です。

実行中のシステムで -xtarget プラットフォーム名の展開を調べるには、次のコマンドを実行します。

f95 -xtarget=platform_name -dryrun |& grep ###

例:

 
f95 -dryrun -xtarget=ultra4 |& grep ###
###     command line files and options (expanded):
### -dryrun -xarch=sparcvis -xcache=64/32/4:8192/128/2 -xchip=ultra4

特定のホストプラットフォームの -xtarget は、そのプラットフォームでコンパイルするときに、-xtarget=native と同じ -xarch-xchip、または -xcache 設定に展開しない場合があります。

-xtemp=path

-temp=path と同等です。

-xthroughput[={yes|no}]

-xthroughput オプションは、システム上で多数のプロセスが同時に実行されている状況でアプリケーションが実行されることをコンパイラに示します。

-xthroughput=yes を指定すると、コンパイラは、単一のプロセスのパフォーマンスは若干低下するが、システム上のすべてのプロセスによって実行される作業量が増加するように最適化を行います。たとえば、コンパイラがデータの先読みの積極性を下げることを選択する可能性があります。そのように選択すると、そのプロセスによって消費されるメモリー帯域幅が減少し、プロセスの実行が遅くなることがありますが、ほかのプロセスが共有するメモリー帯域幅が増加します。

デフォルトは -xthroughput=no です。

-xtime

-time と同義です。

-xtypemap= spec

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

このオプションを使用すると、デフォルトのデータ型のバイトサイズを柔軟に指定できます。

文字列 spec の構文は次のとおりです。

type:bits,type:bits,...

使用できるデータ型は、REALDOUBLEINTEGER です。使用できるデータサイズは、163264、および 128 です。

このオプションは、REAL XYZ のように、バイトサイズを明示せずに宣言されたすべての変数に適用されます。

使用できる組み合わせは次のとおりです。

real:32
real:64
double:64
double:128
integer:16
integer:32
integer:64

次のマッピングが役立ちます。

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

これは、REAL および DOUBLE を 8 バイトにマッピングしますが、DOUBLE PRECISIONQUAD PRECISION に変換しません。

また、INTEGER および LOGICAL は同じに扱われ、COMPLEX は 2 つの REAL データ要素としてマップされます。また、DOUBLE COMPLEXDOUBLE がマップされる方法で扱われます。詳細は、『Fortran ユーザーズガイド』を参照してください。

-xunboundsym={yes|no}

動的に結合されているシンボルへの参照がプログラムに含まれているかどうかを指定します。

-xunboundsym=yes は、動的に結合されたシンボルへの参照がプログラムに含まれていることを意味します。

-xunboundsym=no は、動的に結合されているシンボルへの参照がプログラムに含まれていないことを意味します。

デフォルトは -xunboundsym=no です。

-xunroll=n

-unroll=n と同義です。

-xvector[=a]

ベクトルライブラリの呼び出しの自動生成、または SIMD (Single Instruction Multiple Data) をサポートする x86 プロセッサ上での SIMD 命令の生成、あるいはその両方を有効にします。このオプションを使用するときは -fround=nearest を指定することによって、デフォルトの丸めモードを使用する必要があります。

-xvector オプションを指定するには、最適化レベルが -xO3 かそれ以上に設定されていることが必要です。最適化レベルが指定されていない場合や —xO3 よりも低い場合はコンパイルは続行されず、メッセージが表示されます。

a は次と同等です。

[no%]lib

(Oracle Solaris) コンパイラは可能な場合はループ内の数学ライブラリへの呼び出しを、同等のベクトル数学ルーチンへの単一の呼び出しに変換します。大きなループカウントを持つループでは、これによりパフォーマンスが向上します。このオプションを無効にするには no%lib を使用します。

[no%]simd

(SPARC) -xarch=sparcace-xarch=sparcaceplus の場合、特定のループのパフォーマンスを改善するために、浮動小数点および整数の SIMD 命令を使用するようにコンパイラに指示します。ほかの SPARC プラットフォームの場合とは反対に、-xvector=simd は、-xvector=none および -xvector=no%simd を除き、任意の -xvector オプションを指定した -xarch=sparcace および -xarch=sparcaceplus のもとで常に有効です。さらに、-xvector=simd には 3 よりも大きい -O が必要であり、それ以外の場合はスキップされ、警告は発行されません。

ほかのすべての -xarch 値の場合、特定のループのパフォーマンスを改善するために Visual Instruction Set [VIS1、VIS2、ViS3 など] SIMD 命令を使用するようにコンパイラに指示します。基本的に -xvector=simd オプションを明示的に使用すると、コンパイラは、ループ繰り返し数を減らすためにループ変換を実行して、特殊なベクトル化した SIMD 命令の生成を有効にします。-xvector=simd オプションは、-O が 3 より大きく -xarchsparcvis3 以上である場合にのみ有効です。それ以外の場合、-xvector=simd はスキップされ、警告は発行されません。

[no%]simd

(x86) コンパイラにネイティブ x86 SSE SIMD 命令を使用して特定のループのパフォーマンスを向上させるよう指示します。ストリーミング拡張機能は、x86 で最適化レベルが 3 かそれ以上に設定されている場合にデフォルトで使用されます。このオプションを無効にするには、no%simd を使用します。

コンパイラは、ストリーミング拡張機能がターゲットのアーキテクチャーに存在する場合、つまりターゲットの ISA が SSE2 以上である場合にのみ SIMD を使用します。たとえば、最新のプラットフォームで -xtarget=woodcrest、-xarch=generic64、-xarch=sse2、-xarch=sse3、または -fast を指定して使用できます。ターゲットの ISA にストリーミング拡張機能がない場合、このサブオプションは無効です。

%none

このオプションを完全に無効にします。

yes

このオプションは非推奨です。代わりに、-xvector=lib を指定します。

no

このオプションは非推奨です。代わりに、-xvector=%none を指定します。

デフォルトは、x86 では -xvector=simd で、SPARC プラットフォームでは -xvector=%none です。サブオプションなしで -xvector を指定する場合、コンパイラは、x86 Oracle Solaris では -xvector=simd,lib、SPARC Oracle Solaris では -xvector=lib、Linux プラットフォームでは -xvector=simd を想定します。

このオプションは、以前のインスタンスをオーバーライドするため、-xvector=%none は以前に指定された -xvector=lib を取り消します。

コンパイラは、リンク時にlibmvecライブラリを取り込みます。コンパイル時に -xvector を指定した場合は、リンク時にも指定する必要があります。

-xvpara

-vpara と同義です。

-ztext

再配置を使用してライブラリを作成しません。

再配置が残っている場合は、ライブラリを作成しないでください。-ztext の通常の目的は、生成されたライブラリが純粋なテキストであるかを検証することです。命令はすべて位置独立コードになります。したがって、通常は -G および -pic とともに使用します。

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

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

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

-ztext および -xprofile=collect は一緒に使用しないでください。-ztext を指定すると、位置に依存するシンボルを読み取り専用ストレージ内で再配置することを禁止します。-xprofile=collect を指定すると、書き込み可能記憶領域内で、静的に初期化された、位置に依存するシンボルの再配置を生成します。

そのほかの引数は、リンカーオプション引数か、f95 互換オブジェクトプログラムの名前のどちらかとみなされ、通常は以前の実行によって、または f95 互換であるルーチンのライブラリによって生成されます。これらのプログラムは、指定されたすべてのコンパイルの結果とともに指定の順序でリンクされ、-o オプションで指定されたファイル内に、または -o オプションが指定されていない場合は a.out という名前のファイル内に実行可能プログラムを生成します。

ファイル接尾辞

ファイル接尾辞

次の接尾辞のファイルがコンパイラコマンド行に表示される場合があります。通常、接尾辞によってファイルの種類がわかり、コンパイラが処理する方法が決まります。

.f .for

固定形式の Fortran ソースファイル。

.f90 .f95 .f03

自由形式の Fortran 90、Fortran 95、または Fortran 2003 ソースファイル。

.F

プリプロセッサ指令を含む固定形式の Fortran ソース。これらのファイルは、コンパイルされる前に、fpp(1) で事前処理されます。(-xpp= オプションも参照してください)。

.F90 .F95 .F03

プリプロセッサ指令を含む自由形式の Fortran 95 ソース。これらのファイルは、コンパイルされる前に、fpp(1) で事前処理されます。(-xpp= オプションも参照してください)。

.s

アセンブラソースファイル。

.il

インラインアセンブラ拡張コードテンプレートファイル。選択したルーチンへの呼び出しをインラインコードに展開するためにコンパイラで使用されます。インラインテンプレートファイルに関する詳細は、inline(1) マニュアルページと -inline オプションフラグを参照してください。

.o

リンカーに渡されるオブジェクトファイル。

.so

リンカーに渡される共有オブジェクトファイルまたはライブラリ。

.a

リンカーに渡される、または MODULE 副プログラムを検索したライブラリファイル (-M オプションフラグを参照)。

.mod

プリコンパイル済み MODULE プログラムユニットを含むファイル。これらはコンパイラによって生成されます。-M オプションフラグを参照してください。

ディレクティブ

ディレクティブ

一般的なディレクティブ

f95 では、C$PRAGMA (固定形式のみ) または !$PRAGMA で始まる一般的なコンパイラディレクティブ行を使用でき、大文字と小文字を使用できます。

 
!$PRAGMA C(list_of_subprogram_names)
!$PRAGMA SUN UNROLL n
!$PRAGMA WEAK function_name
!$PRAGMA SUN OPT=n
!$PRAGMA PIPELOOP=n
!$PRAGMA SUN_PREFETCH_READ_ONCE (name)
!$PRAGMA SUN_PREFETCH_READ_MANY (name)
!$PRAGMA SUN_PREFETCH_WRITE_ONCE (name)
!$PRAGMA SUN_PREFETCH_WRITE_MANY (name)
!$PRAGMA IGNORE_TKR list
!$PRAGMA ASSUME (expression [, probability])

並列化のディレクティブ

f95 は、OpenMP API 並列化ディレクティブを認識します。OpenMP は、すべての Oracle Solaris Studio コンパイラの明示的な並列化に推奨のモデルです。

このリリースでは、f95 コンパイラはバージョン 2.5 の OpenMP Fortran 95 API を受け入れます。これらには !OMP のセンチネルが付いています。

Oracle Solaris Studio OpenMP 実装の詳細は、『OpenMP API ユーザーズガイド』を参照してください。

環境変数

次に示すパスでは、Oracle Solaris Studio ソフトウェアインストールのルートが、<install-directory> で示されていると想定しています。実際のパスを調べるには、システム管理者に連絡してください。

PATH

f95 を使用するには、検索パスの先頭に次の要素を追加します。

<install-directory>/bin/
MANPATH

f95 マニュアルページにアクセスするには、MANPATH 環境変数に次の要素を追加します。

<install-directory>/man/
MODDIR

コンパイラが .mod モジュールファイルを書き込むディレクトリへのパスを指定します。-moddir も参照してください。これは MODDIR 環境変数の設定に優先します。

LD_LIBRARY_PATH

通常、LD_LIBRARY_PATH を設定する必要はありません。設定する必要がある場合は、インストールで何らかの不一致があるか、何らかの実行可能ファイルが間違って構築されている可能性があります。

LD_LIBRARY_PATH 環境変数を次のように設定します。

<install-directory>/lib/
LD_LIBRARY_PATH_64

LD_LIBRARY_PATH 環境変数と同様に、LD_LIBRARY_PATH_64 は 64 ビットライブラリを検索するパスを設定します。

64 ビット対応の Oracle Solaris OS で実行し、32 ビットモードでリンクする場合、LD_LIBRARY_PATH_64 は無視されます。LD_LIBRARY_PATH だけが定義されている場合、32 ビットと 64 ビットの両方のリンクに使用されます。LD_LIBRARY_PATHLD_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 環境変数に値 (キロバイト単位) を指定することで設定できます。

% setenv STACKSIZE 8192

この例は、各スレーブスレッドのスタックサイズを 8M バイトに設定します。

32 ビットシステムでのデフォルトのスタックサイズは 4M バイトです。64 ビットシステムでは 8M バイトです。

STACKSIZE 環境変数は、接尾辞 BKM、または G の付いた数値も受け付けます。これらの接尾辞はそれぞれ、バイト、キロバイト、メガバイト、ギガバイトを表します。デフォルトはキロバイトです。("キロバイト" は実際には 1024 バイトを意味します)。

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

SUNW_MP_WARN

OpenMP 実行時ライブラリによって発行される警告メッセージを制御します。TRUE に設定した場合、ライブラリは警告メッセージを stderr に発行します。FALSE に設定すると、警告は無効になります。デフォルトは FALSE です。

SUNW_MP_THR_IDLE

各ヘルパースレッドのタスク終了ステータスを制御し、SPIN または SLEEP ns に設定できます。デフォルトは SLEEP です。これらおよびそのほかの OpenMP 環境変数の詳細は、『OpenMP API ユーザーズガイド』を参照してください。

OMP_NUM_THREADS

アプリケーション実行中に使用するスレッド数を設定します。これらおよびそのほかの OpenMP 環境変数の詳細は、『OpenMP API ユーザーズガイド』を参照してください。

TMPDIR

コンパイラは、通常、一時ファイルを /tmp ディレクトリに作成します。環境変数 TMPDIR を選択したディレクトリに設定することにより、別のディレクトリを指定できます。(TMPDIR が有効なディレクトリでない場合、コンパイラは /tmp を使用します)。-temp オプションと TMPDIR 環境変数に優先します。

SUN_PROFDATA=profdir

設定すると、-xprofile=collect を指定してコンパイルされたプログラムから収集されたプロファイルデータが、プログラムが実行された時点での現在の作業ディレクトリ内の profdir という名前のディレクトリに格納されます。コンパイル時に、オプションの引数 :profdir-xprofile=collect[:profdir] に指定した場合、SUN_PROFDATA は無効になります。

SUN_PROFDATA_DIR=dirname

設定すると、-xprofile=collect を指定してコンパイルしたプログラムから収集されたプロファイルデータが、UNIX のディレクトリ名が dirname であるディレクトリに格納されます。dirname が絶対パスでない場合は、プログラムが実行された時点での現在の作業用ディレクトリの相対パスであると解釈されます。コンパイル時に、オプションの引数 :profdir-xprofile=collect[:profdir] に指定した場合、SUN_PROFDATA_DIR は無効になります。

SUN_PROFDATA_ASYNC_INTERVAL=async_interval

非同期のプロファイル収集を有効にするには、この環境変数を設定します。非同期のプロファイル収集では、プロファイルデータは実行されているプロセスから一定の間隔 (秒単位で指定) で収集されます。

環境変数 LD_AUDIT、LD_AUDIT_32、または LD_AUDIT_64 のいずれかに /usr/lib/{,64}/libxprof_audit.so.1 が設定されていない場合、SUN_PROFDATA_ASYNC_INTERVAL は無効です。

非同期のプロファイル収集では、MT セーフの mmap ベースのメモリーアロケータ (UMEM_OPTIONSbackend=mmap に設定することによって mmap ベースの割り当てが指定されている libumem (3LIB) など) が必要となります。

例: 64 ビットのプロセスからの 1 分間隔の非同期のプロファイル収集を有効にするには、次の環境変数を指定します。

 
$ env LD_AUDIT_64=/usr/lib/64/libxprof_audit.so.1 \
  SUN_PROFDATA_ASYNC_INTERVAL=60 UMEM_OPTIONS=backend=mmap \
  64-bit-program [program-args]
SUN_PROFDATA_ASYNC_VERBOSE=verbose

ゼロ以外を設定すると、非同期コレクタから標準エラー出力に詳細なメッセージが出力されます。非同期のプロファイル収集が有効ではない場合、SUN_PROFDATA_ASYNC_VERBOSE は無効です。

SUN_PROFDATA_CLEANUP_AFTER_EXIT=[0|1]

1 を設定すると、プロセスが exit() を呼び出した時間とプロセスの終了が完了した時間の間に、プロファイラがデータ構造体をクリーンアップします。0 を設定すると、アプリケーションが exit() を呼び出す前に終了していなかったアプリケーションスレッドによるプロファイル収集への有害な干渉が防止されます。詳細は、exit(3C) を参照してください。デフォルト設定は SUN_PROFDATA_CLEANUP_AFTER_EXIT=0 です。

SUN_PROFDATA_REPLACE={objfile,program,all}

SUN_PROFDATA_REPLACE は、オブジェクトファイルの変更されたバージョンが実行時に検出されたときにリセットされるプロファイルデータのスコープを示します。SUN_PROFDATA_REPLACE は、指定されたプログラムの範囲のユニット内にあるプロファイルされたプログラムとプロファイルデータの整合性を保つために使用します。

SUN_PROFDATA_REPLACE の値とその意味を次に示します。

objfile

変更されたオブジェクトファイルのプロファイルデータをリセットします。

program

変更されたオブジェクトファイルが含まれているプログラムのすべてのオブジェクトファイルのプロファイルデータをリセットします。

all

オブジェクトファイルが変更された場合、プロファイルディレクトリのすべてのコンテンツをリセットします。

SUN_PROFDATA_REPLACE のデフォルト設定は SUN_PROFDATA_REPLACE=objfile です。

例:

 
% setenv SUN_PROFDATA_REPLACE program (csh)
$ export SUN_PROFDATA_REPLACE=program (ksh)

この設定で、変更されたオブジェクトファイルが含まれているプログラムが実行されると、そのプログラムのすべてのオブジェクトファイルのプロファイルデータがリセットされます。関連するオプションには、-xOn および -xipo=n があります。

ファイル

コンパイラコマンド行に指定できる名前の接尾辞によって識別されるファイルについては、上記の「ファイル接尾辞」のセクションを参照してください。

さらに、コンパイラは次のファイルを使用します。

/usr/lib/libc.so

標準 C システムライブラリ

/usr/lib/libm.so

標準システム数学ライブラリ

/tmp/*

コンパイラ一時ファイル

mon.out

prof(1) によって解析用に作成されるファイル

gmon.out

gprof(1) によって解析用に作成されるファイル

<install-directory> で示されるように、次のディレクトリが Oracle Solaris Studio インストールディレクトリ内に存在します。

<install-directory>/bin/fpp

Fortran プリプロセッサ

<install-directory>/bin/cpp

C プリプロセッサ

<install-directory>/prod/include/f95/

f95 INCLUDE 文の検索対象のパス

<install-directory>/prod/include/f95/floatingpoint.h

f95 IEEE 演算型の定義

次のライブラリが、.so および .a の両方のバージョンに存在する場合があります。注: 静的および共有 Fortran 実行時ライブラリを混在させないでください。必ず最新の共有 Fortran ライブラリとリンクさせてください。

libfsu

f95 サポート組み込み関数

libfui

f95 - UNIX インタフェース

libfio

Fortran 95 I/O

libf*ai

Fortran 95 配列組み込み関数ライブラリ

libifai

Fortran 95 区間配列組み込み関数ライブラリ

libf77compat

f77 Fortran 77 互換性ライブラリ

libsunmath

Oracle Solaris Studio 数学ライブラリ

libsunimath

Oracle Solaris Studio 区間数学ライブラリ

xprof_fini.o

-xprofile=collect を指定してコンパイルされたプログラムの初期化ハンドラおよびファイナライズハンドラ

Solaris release 10 の場合、-xprofile オプションを使用するために、新しい共有ライブラリ libxprof.so.1libxprof_audit.so.1、および libtdf.so.1 をインストールする必要があります。これらのライブラリは、最新の Oracle Solaris リリースでは事前にインストールされます。

関連項目

このリリースに関する完全な Oracle Solaris Studio ドキュメントは、Oracle Technical Network の Web サイト http://www.oracle.com/technetwork/server-storage/solarisstudio/documentation/index.html で入手できます。

詳細は、次のマニュアルページを参照してください。asa(1)、cc(1)、dbx(1)、fpp(1)、fpr(1)、fsplit(1)、gprof(1)、ld(1)、perror(3F)、prof(1)、tcov(1)。

詳細は、次のマニュアルを参照してください。

Fortran ユーザーズガイド

Fortran プログラミングガイド

OpenMP API ユーザーガイド

数値計算ガイド

Studio パフォーマンスアナライザ

Fortran ライブラリリファレンス

Oracle Solaris OS の『リンカーとライブラリガイド』

dbx コマンドによるデバッグ

Sun Performance Library User's Guide』: この Oracle Solaris Studio リリースには、線形代数やフーリエ変換の演算用のサブルーチンおよび関数を含む Sun パフォーマンスライブラリが含まれています。

詳細は、Oracle Solaris Studio Web サイトを参照してください。

http://www.oracle.com/technetwork/server-storage/solarisstudio

診断

f95 自体によって生成される診断は、読めば理解できるようになっています。リンカーで不定期のメッセージを生成できます。