マニュアルページ CC.1




名前

     CC - C++ コンパイラ


形式

     CC   [-386] [-486] [-a] [-B{dynamic|static|symbolic}] [-c]
          [-cg{89|92}] [-compat[={4|5}]] [+d] [-Dname[=def]]
          [-d{y|n}] [-dalign] [-dryrun] [-E] [+e{0|1}]
          [-erroff[=t[,t...]]]  [-errtags[=a]]
          [-errwarn[=t[,t...]]]  [-fast] [-features=a[,a...]]
          [-filt[=filter[,filter...]]  [-flags]
          [-fma[={none|fused}]] [-fnonstd] [-fns[={yes|no}]]
          [-fprecision=a] [-fround=a] [-fsimple[=n]] [-fstore]
          [-ftrap=a[,a...]]  [-G] [-g] [-g0] [-H] [-h[ ]lname]
          [-help] [-Ipathname] [-I-] [-i] [-inline]
          [-instances=i] [-instlib=file] [-KPIC] [-Kpic]
          [-keeptmp] [-Lpath] [-llib] [-libmieee] [-libmil]
          [-library=lib[,lib...]]  [-m32|-m64] [-mc] [-migration]
          [-misalign] [-mr[,string]] [-mt] [-native] [-noex]
          [-nofstore] [-nolib] [-nolibmil] [-noqueue] [-norun-
          path] [-O[n]] [-O[level]] [-o file] [+p] [-P] [-p]
          [-pentium] [-pg] [-PIC] [-pic] [-pta] [-ptipath] [-pto]
          [-ptrpath] [-ptv]
          [{-Qoption|-qoption}phase[,option...]]
          [{-Qproduce|-qproduce}type] [-qp] [-Rpath[:path...]]
          [-readme] [-S] [-s] [-sb] [-sbfast]
          [-staticlib=l[,l...]]  [-sync_stdio=[yes|no]]
          [-temp=path] [-template=a[,a...]]  [-time] [-Uname]
          [-unroll=n] [-V] [-v] [-vdelx] [-verbose=a[,a...]]
          [+w] [+w2] [-w] [-Xm] [-xa] [-xalias_level[=n]] [-xar]
          [-xarch=isa] [-xautopar] [-xbinopt={a}]
          [-xbuiltin[={%all|%none}]] [-xcache=c] [-xcg{89|92}]
          [-xchar[=o]] [-xcheck[=n]] [-xchip=c] [-xcode=v]
          [-xcrossfile[=n]] [-xdebugformat=[stabs|dwarf]]
          [-xdepend[={yes|no}]] [-xdumpmacros[=value[,value...]]
          [-xe] [-xF[=v]] [-xhelp={flags|readme}]
          [-xhwcprof[={enable|disable}]] [-xia]
          [-xinline[=func_spec[,func_spec...]]
          [-xinstrument=[no%]datarace] [-xipo[={0|1|2}]
          [-xipo_archive[=a]] [-xjobs=n]
          [-xlang=language[,language]] [-xldscope=[v]] [-xlib-
          mieee] [-xlibmil] [-xlibmopt] [-xlic_lib=sunperf]
          [-xlicinfo] [-xlinkopt[=level]] [-xloopinfo] [-xM]
          [-xM1] [-xMerge] [-xmaxopt[=v]] [-xmemalign=ab]
          [-xmodel=[a]] [-xnolib] [-xnolibmil] [-xnolibmopt]
          [-xOn] [-xopenmp] [-xpagesize=n] [-xpagesize_heap=n]
          [-xpagesize_stack=n] [-xpch=v] [-xpchstop] [-xpg]
          [-xport64[=v]] [-xprefetch[=a[,a]]
          [-xprefetch_auto_type=[a] [-xprefetch_level[=l]]
          [-xprofile=p] [-xprofile_ircache[=path]]
          [-xprofile_pathmap=collect_prefix:use_prefix] [-xreduc-
          tion] [-xregs=r[,r...]]  [-xrestrict[=f]] [-xs]
          [-xsafe=mem] [-xsb] [-xsbfast] [-xspace] [-xtarget=t]
          [-xthreadvar[=o]] [-xtime] [-xtrigraphs[={yes|no}]]
          [-xunroll=n] [-xustr={ascii_utf16_ushort|no}]
          [-xvector[=a]] [-xvis] [-xwe] [-Yc,path] [-z arg]
          [file] ...


Sun Studio 12: C++ 5.9 コンパイラ

     マニュアルページは、クイックリファレンスです。C++ コンパイラ
     とそのオプションの詳細情報については、C++ 
     を参照してください。

     プラットフォーム、環境、新機能、およびソフトウェアの修正の最
     新情報については、次のコマンドを実行して表示されるオンライン
     Readme ファイルを参照してください。
        CC -xhelp=readme

     Readme ファイル、ユーザーズガイド、リファレンスマニュアルを
     含むすべてのインストール済み Sun コンパイラおよびツールのマ
     ニュアルには、HTML ブラウザで次の URL を指定してアクセスでき
     ます。
        file:/opt/SUNWspro/docs/index.html

     注 - Sun コンパイラおよびツールが、デフォルトの
      /opt 以外のディレクトリにインストールされている場合は、シス
     テム管理者に実際のパスをお尋ねください。


64 ビットプラットフォーム向けコンパイル:

     このリリースでは、32 ビットまたは 64 ビットバイナリのコンパ
     イルの指定方法が変更されています。-xarch オプションは、暗黙
     のメモリーモデル、32 ビットILP32 または 64 ビット LP64 とそ
     の定義の指示には使用されなくなりました。このリリースからは、
     ターゲットプロセッサの命令セットの指定にのみ使用されます。

     ターゲットコンパイルのメモリーモデルの指定には、新しいオプ
     ション -m32 および -m64 を使用します。

     ILP32 モデルでは、C 言語の int、long、およびポインタデータ型
     のすべてを 32 ビット幅に指定します。LP64 モデルでは、long お
     よびポインタデータ型のすべてを 64 ビット幅に指定します。
     Solaris および Linux OS は LP64 メモリーモデルでの大規模ファ
     イルおよび大規模配列もサポートします。

     -m64 を指定してコンパイルすると、生成される実行可能ファイル
     は、64 ビットカーネルが動作する Solaris OS または Linux OS
     の 64ビット UltraSPARC(R) または x86 プロセッサでのみ動作し
     ます。64 ビットオブジェクトのコンパイル、リンク、および実行
     は、64 ビット実行をサポートする Solaris または Linux OS での
     み行うことができます。


x86 に関する特記事項

     x86 Solaris プラットフォーム向けにコンパイルする際に知ってお
     くべき重要事項があります。

     x86では、従来の Sun 形式の並列化プラグマは使用できません。代
     わりに OpenMP を使用してください。従来の並列化指令の OpenMP
     への変換については、『OpenMP API 』を参照し
     てください。

     -xarch を sse、sse2、sse2a、または sse3 のいずれかに設定して
     コンパイルしたプログラムは、それらの拡張および機能を提供する
     プラットフォームでのみ実行してください。

     Pentium 4 互換プラットフォームでは、Solaris 9 4/04 以降の OS
     リリースは SSE/SSE2 に対応しています。これ以前のバージョンの
     Solaris OS は SSE/SSE2 に対応していません。-xarch によって選
     択された命令セットが実行中の Solaris OS で非対応の場合、コン
     パイラはその命令セット用のコードを生成したり、リンクしたりで
     きません。

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

     x86 では浮動小数点レジスタが 80 ビットのため、x86 と SPARC
     とで数値結果が異なることがあります。こうした違いを最小限にす
     るためには、-fstore オプションを使用するか、ハードウェアが
     SSE2 をサポートしている場合は、コンパイルで -xarch=sse2 オプ
     ションを使用します。

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

     バイナリ互換性の検証
     Sun Studio 11 以降および Solaris 10 OS 以降で、これらの特化
     された -xarch ハードウェアフラグを使用してコンパイルし、構築
     されたプログラムバイナリは、適切なプラットフォームで動作する
     かどうか検証されるようになっています。

     Solaris 10 より前のシステムでは、検証が行われず、それらのフ
     ラグを使用して構築されたオブジェクトの適切なハードウェアへの
     配備はユーザーの責任で行うことになっていました。

     適切な機能または命令セット拡張を持たない非対応のプラット
     フォームで、-xarch オプションを指定してコンパイルされたプロ
     グラムを実行すると、明確な警告メッセージなしにセグメント例外
     や不正な結果が発生することがあります。

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


Sun Studio 12 の新機能

     この節では、Sun Studio 12 の C++ 5.9 コンパイラで導入された
     新機能および変更された機能について説明します。新機能のより詳
     しい説明は、Sun Studio 12『C++ 』を参照して
     ください。

     この節では、Sun Studio 12 の C 5.9 コンパイラで導入された新
     機能および変更された機能について説明します。新機能のより詳し
     い説明は、Sun Studio 12 の『C 』を参照してく
     ださい。

          o 次の Linux ディストリビューション (x86 および x64) で
            C++ コンパイラを使用できるようになりました。

            o SuSE Linux Enterprise Server 9、Service Pack 3 以
            降。

            o Red Hat Enterprise Linux 4。

            o 2.6 カーネルを使用するその他の Linux ディストリ
            ビューション。ただし、正式にはサポートされていませ
            ん。

          o 64 ビット実行可能ファイルおよび共有ライブラリを作成す
            るための -m64 の採用。

          o -xarch の廃止フラグに代わる新しいフラグの追加。

          o -xtarget および -xchip の新しい値で、UltraSPARC T2 お
            よび SPARC64vi プロセッサ用のコード生成を提供。

          o 対応するプロセッサでの fused multiply-add 命令の生成
            を可能にする新しいフラグ -fma=fused。

          o x86 での -fast への -xregs=frameptr の追加。

          o Solaris x86 プラットフォームでの -xarch=sse2 -xia オ
            プションによる区間演算のサポート。

          o SPARC プラットフォームと同様に x86 プラットフォームで
            も受け付けられる、明示的な先読み命令マクロ (-
            xprefetch=explicit)。


C++ コンパイラの概要

     CC は、C++ とアセンブラのソースファイルをオブジェクトファイ
     ルに変換し、生成されたオブジェクトファイルとライブラリを実行
     可能プログラムにリンクします。

     C++ オブジェクトを含むプログラムは必ず、CC でリンクする必要
     があります。

     CC は、.c、.C、.cc、.cxx、.c++、.cpp、.i のいずれかで終わる
     引数を C++ ソースプログラムとして受け付けます。.s で終わる引
     数は、アセンブリ言語のソースファイルと見なされます。.o で終
     わる引数は、オブジェクトファイルと見なされます。

     上記の接尾辞を持たないファイルはオブジェクトプログラムまたは
     ライブラリと見なされ、リンカーに渡されます。 -c、 -S、 -E、
     -P のいずれかが指定されていないかぎり、これらのプログラムお
     よびライブラリは、指定された任意のコンパイルまたはアセンブル
     の結果とともに指定された順序でリンクされ、 a.out という名前
     の実行ファイルが生成されます。実行ファイルの名前は -o オプ
     ションを使用して指定できます。

     1 つのファイルのコンパイルとリンクをすべて一度に行うときに
     は、中間ファイルは削除されます。

     CC コマンドを使用する前に、C++ コンパイルシステムのインス
     トール場所として選んだディレクトリの名前を検索パスに追加して
     ください。検索パスの設定方法については csh(1) または sh(1)
     マニュアルページを参照してください。





オプション

     マクロオプション (ほかのオプションを含むオプション) を選択的
     に無効にするため、コンパイラオプションは一般に、左から右にか
     けて処理されます (例外として、 -U オプションはすべての -D オ
     プションのあとに処理されます)。この規則は、リンカーオプショ
     ンには当てはまりません。

     C++ コンパイラオプションについての詳細な説明は、『C++ ユー
     ザーズガイド』を参照してください。

     CC は次のオプションを受け付けます。

     -386      (x86 ) -xtarget=386 を使用しま
               す。

     -486      (x86 ) -xtarget=486 を使用しま
               す。

     -a        -xa を使用します

               tcov(1) のマニュアルページも参照してください。

     -Bbinding ライブラリのリンク方法を指定します。リンクをシンボ
               リック、動的 (共有、-Bdynamic) または静的 (非共
               有、-Bstatic) のいずれで行うかを指定します。
               デフォルトでは動的リンクが行われます。このオプショ
               ンはコマンド行の中で繰り返し指定できます。

               -Bbinding についての詳細は、 ld(1) のマニュアル
               ページおよび Solaris のマニュアルを参照してくださ
               い。


               -Bdynamic このオプションを指定すると、 liblib.so
               ファイルを検索するようにリンカーに指示します。リン
               クのライブラリ束縛を共有にしたい場合は、 -Bdynamic
               オプションを指定します。 liblib.so ファイルが見つ
               からないと、 liblib.a ファイルを検索します。

               libC を静的にリンクしたい場合は、 -staticlib=libC
               オプションを使用してください。

               -Bstatic このオプションを指定すると、リンカーは
               liblib.a ファイルだけを検索します。接尾辞 .a は、
               ファイルが静的、つまり非共有であることを示します。
               リンクのライブラリ束縛を非共有にしたい場合は、この
               オプションを指定します。

               -Bsymbolic は、シンボルがほかで定義済みであって
               も、可能であれば共用ライブラリ内でシンボルを解決し
               ます。-Bsymbolic の説明については、ld(1) のマニュ
               アルページを参照してください。

               このオプションと引数は ld リンカーに渡されます。コ
               ンパイルとリンクを別々の工程で行ない、 -Bbinding
               オプションを使用する場合は、リンク工程で -Bbinding
               オプションを指定しなければなりません。

               警告:

               C++ コードを含むプログラムには -Bsymbolic を使用し
               ないで、代わりにリンカースコープを使用してくださ
               い。リンカースコープについては、『C++ ユーザーズガ
               イド』を参照してください。 -xldscope オプションも
               参照してください。

               -Bsymbolic を使用すると、異なるモジュール内の参照
               を、1 つの広域オブジェクトとみなされるターゲットの
               別のコピーにバインドできます。

               例外メカニズムは、アドレス比較に依存します。何らか
               のコピーが 2 つある場合、そのアドレスが同一でない
               と、例外メカニズムは一意とみなされるアドレスの比較
               に依存するため、例外メカニズムが失敗することがあり
               ます。

     -c        ld(1) によるリンクを抑止し、ソースファイルごとに
               .o ファイルを作成します。ファイルを 1 つだけコンパ
               イルする場合は、 -o オプションによってオジェクト
               ファイルの名前を指定できます。次に例を示します。

               o    次のように入力すると、オブジェクトファイル
                    x.o が生成されます。

                    % CC -c x.cc

               o    次のように入力すると、オブジェクトファイル
                    y.o が生成されます。

                    % CC -c x.cc -o y.o

               警告:

               コンパイラは、入力ファイル (たとえば、.cc、.c、お
               よび .i) のオブジェクトコードを生成するときに、常
               に作業用ディレクトリに .o ファイルを作成します。リ
               ンク工程を抑止する場合には、 .o ファイルは削除され
               ません。

               関連項目:

               -o filename

     -cg{89|92}
               -xcg{89|92} を使用します。
               -xtarget=native も参照してください。

     -compat[={4|5}]
               コンパイラの主要なリリースの互換モードを設定しま
               す。このオプションにより、プリプロセッサ記号の
               __cplusplus と __SUNPRO_CC_COMPAT が制御されます。

               C++ コンパイラには 2 つの主要モードがあります。互
               換モードは、4.2 コンパイラ (-compat[=4]) で定義さ
               れる Annotated C++ Reference Manual (ARM) 意味論と
               言語を受け付けます。標準モードは、ANSI/ISO 標準
               -compat=5) に準拠した言語構造を受け付けます。
               ANSI/ISO 標準と C++ 4.0.1、4.1、4.2 の間には、名前
               の符号化、vtable の位置、ABI の細部について多数の
               相違点があるため、これら 2 つのモードはお互いに互
               換性がありません。2 つのモードは、次の表に示すよう
               に、 -compat オプションで区別します。

               値               意味

               -compat[=4]    (互換モード) 言語およびバイナリ互換
                              を 4.0.1、4.1、および 4.2 のコンパ
                              イラに設定します。 __cplusplus プリ
                              プロセッサマクロを 1 に
                              __SUNPRO_CC_COMPAT プリプロセッサマ
                              クロを 4 に設定します。

               -compat=5      (標準モード) 言語およびバイナリ互換
                              を ANSI/ISO 標準モードに設定しま
                              す。(__cplusplus プリプロセッサマク
                              ロを 199711Lに __SUNPRO_CC_COMPAT
                              プリプロセッサマクロを 5 に設定する
                              )。

               デフォルト:

               -compat オプションを指定しない場合は、 -compat=5
               が設定されます。 -compat だけを指定すると、 -com-
               pat=4 が設定されます。

               相互の関連性:

               互換モード (-compat[=4]) で標準ライブラリを使用す
               ることはできません。

               -compat[=4] と次のオプションは併用できません。

                 o -Bsymbolic
                 o -features=[no%]strictdestrorder
                 o -features=[no%]tmplife
                 o -library=[no%]iostream
                 o -library=[no%]Cstd
                 o -library=[no%]Crun
                 o -library=[no%]rwtools7_std
                 o -xarch=v9
                 o -xarch=v9a
                 o -xarch=v9b

               -compat=5 と次のオプションは併用できません。

                o -Bsymbolic
                o +e
                o -features=[no%]arraynew
                o -features=[no%]explicit
                o -features=[no%]namespace
                o -features=[no%]rtti
                o -library=[no%]complex
                o -library=[no%]libC
                o -vdelx

               警告:

               共有ライブラリの構築では、-Bsymbolic を使わないで
               ください。

     +d        コンパイラによる C++ インライン関数の展開を抑止し
               ます。

               C++ 言語の規則では、C++ インライン関数とは次の文の
               どれかが当てはまる関数です。


               o 関数はインラインキーワードを使用して定義されま
               す。

               o 関数はクラス定義の中で定義されます (宣言ではあり
               ません)。

               o 関数は、コンパイラが生成したクラスメンバー関数で
               す。

               C++ 言語の規則では、実際にインライン関数の呼び出し
               をインライン化するかどうかコンパイラが選択できま
               す。次を除いて、C++ コンパイラはインライン関数の呼
               び出しをインライン化します。

               o 関数が複雑すぎます。

               o +d オプションが選択されています。

               o -g オプションが選択されています。

               相互の関連性:

               このオプションは、デバッグオプション -g を指定すれ
               ば、自動的に有効になります。

               -g0 オプションを指定すると +d は有効になりません。

               +d オプションは -x04 または -x05 を使用した場合に
               実行される自動インライン化には影響しません。


     -Dname[=def]
               マクロシンボル namedef と定義します。これは、
               ソースファイルの先頭に #define 指令を指定するのと
               同義です。 -D オプションは、コマンド行で複数回指定
               することができます。

               次の値が事前に定義されています。

               SPARC  x86 :

               __ARRAYNEW「配列」形式の演算子 new および演算子
               delete を有効にするかどうかを指定します。
               ("-features=[no%]arraynew" を参照)
               __BUILTIN_VA_ARG_INCR
               __DATE__
               __FILE__
               __LINE__
               __STDC__ = 0
               __SUNPRO_CC = 0x590
               __SUNPRO_CC_COMPAT = 4 または 5
               __TIME__
               __cplusplus
               __`uname -s`_`uname -r` (無効な文字列は下線に置き
               換えられます。例: -D__SunOS_5_8, -D__SunOS_5_9)
               __unix
               _BOOL bool 型が有効な場合 (「-features=[no%]bool」
               を参照)
               _WCHAR_T
               unix

               (SPARC )
               sparc
               sun
               __SUN_PREFETCH = 1
               __SunOS_OSversion _OSversion
               __SVR4
               __sun
               __sparc

               (SPARC V9 )
               __sparcv9 (64 ビット用のコンパイルのみ)

               (x86 )
               i386
               linux
               __amd64
               __gnu__linux__
               __i386
               __linux
               __linux__
               __x86_64

               デフォルト:

               [=def] を使用しない場合は、 name は 1 として定義さ
               れます。

               相互の関連性:

               +p を使用すると、 sun、 unix、 sparc、 i386 は定義
               されません。

     -d{y|n}   実行可能ファイルすべてに対する動的ライブラリの使用
               を許可 [禁止] します。

               -dy では、リンカーは動的リンクを行います。これはデ
               フォルトです。

               -dn では、リンカーは静的リンクを行います。

               このオプションと引数は、 ld に渡されます。

               相互の関連性:

               このオプションは、動的ライブラリとの組み合わせで使
               用すると致命的エラーを発生させます。ほとんどのシス
               テムライブラリは動的ライブラリとしてのみ使用可能で
               す。

     -dalign   (SPARC) -dalign (SPARC) -dalign は -xmemalign=8s
               と同じです。詳細については -xmemalign をご覧くださ
               い。

     -dryrun   コンパイラによって生成されたコマンドの表示のみを行
               い、実際の実行は行わないように CC に指示します。

     -E        CC ドライバに、C++ ソースファイルに対して前処理の
               みを行い、結果を標準出力に送るように指示します。コ
               ンパイルは行われず .o ファイルも生成されません。

               このオプションを使用すると、プリプロセッサの行番号
               付け情報も出力に含まれます

               テンプレートが使用されている場合は、このオプション
               による出力を C++ コンパイラへの入力として使用する
               ことはできません。

     +e{0|1}   互換モード (-compat[=4]) では仮想関数のクラスに対
               する仮想テーブルの生成を制御します。標準モード (デ
               フォルトモード) では無効であり無視されます。

               値:

               o +e0 仮想テーブルの生成を抑止し、必要とされている
                 テーブルへの外部参照を生成します。

               o +e1 仮想関数が定義されたすべてのクラスに対して仮
                 想テーブルを生成します。

                 相互の関連性:

                 このオプションでコンパイルする場合は、
                 -features=no%except も使用してください。それ以外
                 は、コンパイラは例外処理で使用される内部型用に仮
                 想テーブルを生成します。

                 テンプレートクラスに仮想関数がある場合、コンパイ
                 ラがすべての必要な仮想テーブルを生成するが、テー
                 ブルが重複しないことを確認できない可能性がありま
                 す。

     -erroff[=t[,t...] ]
               コンパイラの警告メッセージを抑止しますが、エラー
               メッセージには影響しません。このオプションは、
               -errwarn によって、ゼロ以外の終了状態を生成するよ
               うに指定されているかどうかに関係なく、すべての警告
               メッセージに適用されます。

               値:
               -erroff の値は、次のいずれか 1 つまたは複数を含む
               コンマで区切ったリストのメンバーです。

               tag      この tag で指定された警告メッセージを抑止
                        します。 -errtags=yes オプションを使用す
                        れば、メッセージのタグを表示できます。

               no%tag   この tag で指定された警告メッセージを有効
                        にします。

               %all     すべての警告メッセージを抑止します。

               %none    すべての警告メッセージを有効にします。こ
                        れはデフォルトです。

               指定の順序は重要です。たとえば、 %all,no%tagtag を除くすべての警告メッセージを抑止します。

               デフォルト:

               デフォルトは -erroff=%none です。 -erroff を指定す
               ることは、 -erroff=%all を指定することと同じです。

               警告:

               -erroff オプションで抑止できるのは、 -errtags オプ
               ションが使用されたときにタグが表示される、C++ コン
               パイラのフロントエンドからの警告メッセージだけで
               す。

     -errtags [ = a]
               -erroff オプションで抑止できる、あるいは -errwarn
               オプションで重大なエラーとすることのできる、C++ コ
               ンパイラのフロントエンドからの警告メッセージすべて
               のメッセージタグを表示します。C++ コンパイラドライ
               バや、C++ コンパイルシステムのその他のコンポーネン
               トからのメッセージにはエラータグがなく、 -erroff
               で抑止したり、 -errwarn で重大なエラーにすることは
               できません。

               値とデフォルト:

               a は「yes」か「no」です。デフォルトは -errtags=no
               です。 -errtags を指定することは -errtags=yes を指
               定することと同じです。

     -errwarn [ = t[,t...]]
               このオプションを使用すると、指定した警告メッセージ
               が発生した場合に、C++ コンパイラがエラーステータス
               で終了します。

               値:
               ttag、no%tag、%all, %none のいずれか 1 つ、ま
               たは複数を含むコンマで区切ったリストです。指定の順
               序は重要です。たとえば %all,no%tag と指定した場
               合、このタグ以外のなんらかの警告が発せられると、
               C++ コンパイラは重大エラーのステータスで終了しま
               す。

               次は -errwarn の値についての詳しい説明です。

               tag      tag で指定されたメッセージが発行される
                        と、 CC は重大エラーのステータスで終了し
                        ます。tag が出力されない場合には影響はあ
                        りません。

               no%tag   tag で指定されたメッセージが警告メッセー
                        ジとしてだけ出色された場合に、 CC が重大
                        エラーのステータスで終了するのを回避しま
                        す。tag が出色されない場合には影響はあり
                        ません。以前、このオプションにtag または
                        %all を指定して行なった、該当のメッセージ
                        が警告メッセージとして出力された場合に CC
                        が重大エラーのステータスで終了するという
                        指定を元に戻すには、このオプションを使用
                        します。

               %all     なんらかの警告メッセージが発せられた場合
                        に、 CC が重大エラーのステータスで終了し
                        ます。%all に続けて no%tag を指定すると、
                        特定の警告メッセージについてこの処理を回
                        避させることができます。

               %none    どのような警告タグが出力されたとしても、
                        そのメッセージが原因で CC が重大エラーで
                        終了するのを回避します。

               デフォルト:

               デフォルトは -errwarn=%none です。-errwarn とだけ
               指定した場合には、-errwarn=%all と同じ意味になりま
               す。

               警告:

               C++ コンパイラから出される警告メッセージは、リリー
               スによって異なります。これはコンパイラのエラー
               チェックの向上や、機能追加によるものです。
               -errwarn=%all を使用してコンパイルした結果、エラー
               が発生しなかったものが、次のリリースのコンパイラで
               はエラーが発生してしまう場合もあります。

               -errtags オプションの指定時にタグが表示される、C++
               コンパイラフロントエンドからの警告メッセージについ
               てのみ、 -errwarn の指定によって C++ コンパイラを
               エラーステータスで終了させることができます。

               See Also:

               -erroff、-errtags

     -fast     このオプションは、最高の実行時性能が得られるように
               実行可能ファイルをチューニングするための最初の手段
               として効果的に利用できるマクロです。-fast の展開内
               容はコンパイラのリリースのたびに変更される可能性が
               あり、ターゲットのプラットフォーム固有のオプション
               に展開されます。実行可能ファイルのチューニング過程
               で、-# または -dryrun オプションを使って-fast の展
               開内容を確認し、-fast の適切なオプションを反映させ
               ることを推奨します。

               -fast オプションの展開内容に -xlibmopt オプション
               が新しく含まれるようになっています。このオプション
               は、コンパイラが最適化された数学ルーチンを使用する
               ことを可能にします。詳細は、このマニュアルページの
               -xlibmopt の説明を参照してください。このオプション
               を指定すると、次のオプションが展開され、ほとんどの
               アプリケーションで最高に近いパフォーマンスが得られ
               ます。

               -fns (SPARCx86)

               -fsimple=2 (SPARCx86)

               -nofstore (x86)

               -xarch (SPARCx86)

               -xbuiltin=%all (SPARCx86)

               -xcache (SPARCx86)

               -xchip (SPARCx86)

               -xdepend (SPARCx86)

               -xlibmil (SPARC, x86)

               -xlibmopt (SPARC)

               -xmemalign (SPARC)

               -xO5 (SPARCx86)

               -xregs=frameptr (x86)

               -xtarget=native (SPARCx86)


               このコンポーネントオプションフラグの選択は、コンパ
               イラのリリースごとに変更されることがあります。
               -fast によって設定されるオプションの詳細は、『C++
               』を参照してください。

               実行システムでの -fast の展開内容を知るには、CC
               -fast -dryrun |& grep ### コマンドを実行してくださ
               い。

               相互の関連性:

               コード生成オプション、最適化レベル、組み込み関数の
               最適化、インラインテンプレートファイルの使用を指定
               しても、そのあとで指定したフラグの方が優先されま
               す。たとえば、-fast だけを使用した場合、最適化レベ
               ルは -xO5 となりますが、-fast , -xO3 と指定すると
               -xO3 の最適化レベルが使用されます。すでに設定され
               ている最適化レベルは、新たに指定した最適化レベルに
               置き換えられます。

               -fast マクロはコンパイルオプションまで展開します
               が、これは指定されたほかのオプションに影響を及ぼす
               ことがあります。たとえば次のコマンドで、-fast マク
               ロの展開は -xtarget=native を含み、これは 32 ビッ
               トアーキテクチャーオプションの 1 つに -xarch を復
               帰させます。

               無効:
               example% CC -xarch=v9 -fast test.cc

               有効:
               example% CC -fast -xarch=v9 test.cc

               相互の関連性については、各オプションの説明を参照し
               てください。

               警告:

               -fast オプションでコンパイルした場合、そのコードに
               は移植性がありません。たとえば、UltraSPARC-III シ
               ステム上で次のコマンドを使用してコードをコンパイル
               した場合、生成されるバイナリは UltraSPARC-II シス
               テム上では実行できません。

               example% CC -fast test.cc

               IEEE 標準浮動小数点例外処理に依存するプログラムで
               は、このオプションを使用しないでください。異なる数
               値結果になったり、プログラムが処理の途中で終了した
               り、予期しない SIGFPE シグナルが発生する可能性があ
               ります。

               The -fast オプションには、 -fns -ftrap=%none が含
               まれています。つまり、すべてのトラップをオフにしま
               す。

               以前の SPARC リリースでは、-fast マクロに -fnonstd
               が含まれていましたが、現在は含まれていません。

               以前の SPARC リリースでは、 -fast マクロは -fsim-
               ple=1 に展開されていました。現在は -fsimple=2 に展
               開されます。

               以前の SPARC リリースでは、 -fast マクロは -xO4 に
               展開されていました。現在は -xO5 に展開されます。

               『数値計算ガイド』、 ieee_sun(3M) も参照してくださ
               い。

     -features=a
               C++ 言語の機能の一部を有効または無効にします。

               別途指定がある場合を除き、次のフラグは標準モード (
               デフォルト) と互換モード (-compat[=4]) の両方で有
               効です。

               値               意味

               %all           所定のモード (互換モードか標準モー
                              ド) で有効なすべての -feature オプ
                              ション。

               %none          所定のモード (互換モードか標準モー
                              ド) でオフに切り替えることができる
                              すべての機能をオフに切り替えます。

               [no%]altspell  トークンの代わりのスペルを認識しま
                              す [認識しません] (例、 && の代わり
                              に and)。デフォルトは、互換モードで
                              no%altspell、標準モードで altspell
                              です。

               [no%]anachronisms
                              旧形式の構文を許可 [禁止] します。
                              無効な場合
                              (-feature=no%anachronisms)、旧形式
                              の構文は許可されません。デフォルト
                              は anachronisms です。

               [no%]arraynew  (互換モードのみ) operator new と
                              operator delete の配列形式を認識し
                              ます [認識しません] (例、 operator
                              new[] (void*) )。有効にすると、マク
                              ロ __ARRAYNEW = 1 が定義されます。
                              有効にしない場合は、マクロは定義さ
                              れません。デフォルトは no%arraynew
                              です。このフラグを使用する方法につ
                              いては、『C++ 移行ガイド』を参照し
                              てください。

               [no%]bool      bool 型とリテラルを許可 [禁止] しま
                              す。有効にする場合は、マクロ _BOOL
                              = 1 が定義されます。有効にしない場
                              合は、マクロは定義されません。デ
                              フォルトは、互換モードで no%bool、
                              標準モードで bool です。

               [no%]conststrings
                              読み取り専用メモリー中にリテラル文
                              字列を置きます [置きません]。デフォ
                              ルトは、互換モードで
                              no%conststrings、標準モードで
                              conststrings です。

               [no%]except    C++ 例外を許可 [禁止] します。C++
                              例外が無効 (-features=no%except) の
                              とき、関数の throw 指定が受け付けら
                              れますが、無視されます。コンパイラ
                              は例外コードを生成しません。try、
                              throw、および catch キーワードは常
                              に保持されます。デフォルトは except
                              です。

               [no%]explicit  (互換モードのみ) キーワード expli-
                              cit を認識します [認識しません]。デ
                              フォルトは、no%explicit です。

               [no%]export    キーワード export を認識します [認
                              識しません]。デフォルトは互換モード
                              で no%export、標準モードで export
                              です。

               [no%]extensions
                              その他の C++ コンパイラで一般的に受
                              け付けられる非標準コードを許可 [禁
                              止] します。-features=extensions オ
                              プションを使用する際にコンパイラが
                              受け付ける無効なコードに関する説明
                              は、C++ の第 4 章を
                              参照してください。デフォルトは
                              -features=no%extentions です。

               [no%]iddollar  $ を非初期識別文字として許可 [禁止]
                              します。デフォルトは  no%iddollar
                              です。

               [no%]localfor  for 文に対して、新しい「局所的ス
                              コープの規則」を適用します [適用し
                              ません]。デフォルトは互換モードで
                              no%localfor、標準モードで localfor
                              です。

               [no%]mutable   キーワード mutable を認識します [認
                              識しません]。デフォルトは、互換モー
                              ドで  no%mutable、標準モードで mut-
                              able です。

               [no%]namespace (互換モードのみ) キーワード
                              namespace と using を認識します [認
                              識しません]。デフォルトは
                              no%namespace です。

                              -features=namespace の目的は、コー
                              ドの標準モードへの変換をサポートす
                              ることです。これらのキーワードを識
                              別子として使用している場合、このオ
                              プションを有効にするとエラーメッ
                              セージが出力されます。このキーワー
                              ド認識オプションを使用すると、標準
                              モードでコンパイルすることなく、追
                              加キーワードの使用を検出できます。

               [no%]nestedaccess
                              (標準モードのみ) 入れ子の包含するク
                              ラスの private メンバーに入れ子のク
                              ラスがアクセスすることを許可 [禁止]
                              します。

               [no%]rtti      実行時の型識別 (RTTI) を許可 [禁止]
                              します。dynamic_cast<> および
                              typeid 演算子を使用するには、RTTI
                              が使用できる必要があります。-com-
                              pat=4 モードでは、デフォルトは
                              no%rtti です。これ以外のモードで
                              は、デフォルトは -features=rtti
                              で、-features=no%rtti は使用できま
                              せん。

               [no%]split_init
                              ローカルでない静的オブジェクトの初
                              期設定子を各関数に設定します [しま
                              せん]。 -features=no%split_init を
                              使用する場合、コンパイラによりすべ
                              ての初期設定子が一つの関数に設定さ
                              れます。-features=no%split_init を
                              使用すると、可能なコンパイル時間で
                              コードの大きさを最小化します。デ
                              フォルトは split_init です。

               [no%]strictdestrorder
                              (標準モードのみ) 静的な記憶期間を持
                              つオブジェクトを破壊する順番につい
                              て、C++ 標準に従います [従いません
                              ]。デフォルトは strictdestrorder で
                              す。

               [no%]tmplife   (標準モードのみ) ANSI/ISO C++ 標準
                              規格で定義されているように、ある式
                              によって生成された一時オブジェクト
                              を、式全体が終わる時点で消去します
                              [しません] ( -features=no%tmplife
                              が指定されている場合は、ほとんどの
                              一時オブジェクトは、そのブロックの
                              最後で消去されます)。デフォルトは
                              tmplife です。

               [no%]tmplrefstatic
                              関数テンプレートが、従属静的関数ま
                              たは静的関数テンプレートを参照する
                              ことを許可します [しません]。デフォ
                              ルトは、規格どおり no%tmplrefstatic
                              です。

               [no%]transitions
                              標準 C++ で問題となり、予期できない
                              動作をしたり、将来のコンパイラで動
                              作しない可能性のある ARM 言語構成を
                              許可 [禁止] します。
                              -features=no%transitions, を使用す
                              る場合、コンパイラはエラーメッセー
                              ジの代わりにこれらの構成に関する警
                              告を出力します。互換モード (-com-
                              pate[=4]) で -features=transitions
                              を使用した場合は、 +w または -w2 が
                              指定された場合のみ、コンパイラはこ
                              れらの構成に関する警告を表示しま
                              す。次の構成は移行エラーと考えら
                              れ、使用後にテンプレートを再定義
                              し、 typename がテンプレート定義に
                              必要な場合に省略し、型 int を暗黙に
                              宣言します。移行エラーの設定は将来
                              のリリースでは変更される可能性があ
                              ります。デフォルトは transitions で
                              す。

               デフォルト:

               -features を指定しない場合、互換モード (-com-
               pat[=4]) では
               -features=%none,anachronisms,except,split_init,transitions
               が仮定されます。

               -features を指定しない場合、標準モード (デフォルト
               モード) には
               -features=%all,no%iddollar,no%extensions,no%tmplife
               が仮定されます。

               相互の関連性:

               このオプションは上書きされずに累積されます。

               標準モード (デフォルト) で次のいずれかを使用する
               と、標準ライブラリおよび標準ヘッダーとの互換性がな
               くなります。

                 o no%bool
                 o no%except
                 o no%mutable
                 o no%explicit

               警告:

               -features=%all や -features=%none を使用するときは
               注意してください。機能の組み合わせ内容そのものが、
               コンパイラのリリースのたびに、またパッチのたびに変
               更され、予期しない動作を起こす可能性があります。

               -features=tmplife を使用すると、プログラムの動作が
               変わる可能性があります。 -features=tmplife オプ
               ションがプログラムの正しい動作に影響を及ぼすかどう
               かを調べることは、プログラムの移植性を検査すること
               にもなります。

               compat (-compt=4) モードの場合、デフォルトではコン
               パイラは、 -features=split_init を使用します。その
               場合、-features=%none オプションを使ってほかの機能
               を無効にするよりも、代わりに
               -features=%none,split_init を使用して、初期化子の
               個別関数への分割を有効にしなおした方が望ましいこと
               があります。

     -filt[=filter[,filter...]
               通常 CC がリンカーからのエラーメッセージに対して行
               う、フィルタ処理を抑止します。

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

               [no%]errors    リンカーからのエラーメッセージに関
                              する、C++ の説明を表示します [しま
                              せん]。説明を抑止すると、リンカーの
                              診断が別のツールに直接渡される場合
                              に役立ちます。

               [no%]names     C++ の符号化されたリンカー名を復号
                              化します [しません]。

               [no%]returns   関数の戻り型を符号化します [しませ
                              ん]。符号化を抑止すると、関数名をよ
                              り簡単に特定できます。ただし、仮想
                              関数の場合、関数名は同じで戻り型の
                              みが異なる関数があるため、注意が必
                              要です。

               [ no% ] stdlib リンカーおよびコンパイラ双方のエ
                              ラーメッセージに含まれる、標準ライ
                              ブラリの名前を簡素化します[しません
                              ]。これにより、標準ライブラリ関数の
                              名前を容易に認識できるようになりま
                              す。

               %all           -filt=errors,names,returns,stdlib
                              を指定することと同じです。これは、
                              デフォルトの動作です。

               -filt=no%errors,no%names,no%returns,no%stdlib
                              と指定することと同じです。

               デフォルト:

               -filt オプションを使用しない場合、または -filt を
               値なしで指定した場合は、コンパイラは
               -filt=errors,names,returns,stdlib が指定されたもの
               と仮定します。

               相互の関連性:

               [no%]returns no%names と一緒に使用された場合は無効
               です。つまり、次のオプションはすべて同じ意味を持ち
               ます。

                 -filt=no%names
                 -filt=no%names,no%returns
                 -filt=no%names,returns

               c++filt(1) も参照してください。

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

     -fma [= { none|fused}]
               (SPARC) 浮動小数点fused multiply-add 命令の自動生
               成を許可します。 -fma=none は、そうした命令の生成
               を無効にします。 -fma=fused は、コンパイラが、浮動
               小数点 fused multiply-add 命令を使用する機会を見つ
               けることによって、コードのパフォーマンスの向上を図
               ることを可能にします。

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

               コンパイラが fused multiply-add 命令を生成するに
               は、最小要件は -xarch=sparcfmaf と、最適化レベルを
               少なくとも -xO2 にする必要があります。fused
               multiply-add 命令が生成された場合、コンパイラは、
               生成するバイナリプログラムが非対応のプラットフォー
               ムで実行されることのないようプログラムに印を付けま
               す。

     -fnonstd
               このオプションによって、浮動小数点オーバーフロー、
               ゼロによる除算、無効な演算例外によるハードウェアト
               ラップが可能になります。

               これらのトラップは SIGFPE シグナルに変換され、プロ
               グラムに SIGFPE ハンドラがない場合は、メモリーダン
               プを残して終了します (コアダンプのサイズをゼロに限
               定していない場合)。

               SPARC: さらに、 -fnonstd は SPARC 非標準浮動小数点
               を選択します。

               デフォルト:

               -fnonstd を指定しない場合、IEEE 754 浮動小数点演算
               例外はプログラムを中断せず、アンダーフローは段階的
               になります。

               拡張:

               x86:  -fnonstd は -ftrap=common に拡張されます。

               SPARC:  -fnonstd は -fns -ftrap=common に拡張され
               ます。

               詳細については、-fns と -ftrap=common ならびに『数
               値計算ガイド』を参照してください。

     -fns[={no|yes}]

               SPARC の場合、このオプションを指定すると、プログラ
               ムが実行を開始するときに、非標準浮動小数点モードが
               有効になります。

               x86 の場合は、SSE flush-to-zero モードが選択され、
               利用可能な場合には、denormals-are-zero モードが選
               択されます。x86 の場合は、このオプションによって、
               非正規数の結果がゼロに切り捨てられます。また、利用
               可能な場合には、非正規数の演算対象もゼロと見なされ
               ます。このオプションは、SSE や SSE2 命令セットを利
               用しない従来の x86 浮動小数点演算には影響しませ
               ん。

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

               ハードウェアで段階的アンダーフローと非正規数がサ
               ポートされていない SPARC プラットフォームでは、こ
               のオプションを使用すると、プログラムによってはパ
               フォーマンスが飛躍的に上がることがあります。

               -fast などのマクロは、-fns を含む複数のオプション
               に展開されます。マクロ中の -fns オプションの設定だ
               けを変更したい場合は、マクロの指定のあとに -fns オ
               プションを =yes または =no 付きで指定してくださ
               い。この指定内容は、マクロに含まれるものよりも優先
               されます。

               -fns は -fns=yes と同義です。
               -fns=yes と指定すると、非標準の浮動小数点が使用さ
               れます。-fns=no と指定すると、標準の浮動小数点が使
               用されます。

               デフォルト:

               このフラグを指定しない場合、非標準の浮動小数点モー
               ドは自動的に有効になりません。代わりに、標準 IEEE
               754 浮動小数点演算が行われます。つまり、アンダーフ
               ローは段階的になります。

               -fns だけを指定した場合、 -fns=yes が仮定されま
               す。

               警告:

               非標準の浮動小数点が使用される場合は、浮動小数点算
               術演算の結果が、IEEE 754 標準に準拠しないことがあ
               ります。

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

               -fns を使用してルーチンを 1 つコンパイルした場合、
               プログラム中のその他すべてのルーチンも同じ -fns オ
               プションを使用してコンパイルしてください。そうしな
               いと、予想外の結果が生じることがあります。

     -fprecision=a
               (x86 ) 浮動小数点の丸め精度モード
               を設定します。a には、 single、 double、 extended
               のいずれかを指定します。

               -fprecision フラグは、浮動小数点制御ワード中の丸め
               精度モードのビットを設定します。これらのビットは、
               基本算術演算 (加算、減算、乗算、除算、平方根) の結
               果を丸める精度を制御します。

               次に、a の値と意味を示します。

               値          意味

               single    IEEE 単精度値に丸めます。

               double    IEEE 倍精度値に丸めます。

               extended  最大精度値に丸めます。

               a を single または double にすると、プログラムが実
               行を開始するときに、丸め精度モードがそれぞれ単精度
               または倍精度に設定されます。 a を extended にする
               か、 -fprecision フラグを使用しないときは、丸め精
               度モードは拡張精度のままになります。

               single 精度の丸めモードでは、結果が 24 ビットの有
               効桁に丸められます。また、 double 精度の丸めモード
               では、53 ビットの有効桁に丸められます。デフォルト
               の extended 精度のモードでは、64 ビットの有効桁に
               丸められます。このモードは、レジスタ中の結果を丸め
               るときの精度だけを制御します。レジスタの値には影響
               がありません。レジスタ中の結果はすべて、拡張倍精度
               形式のすべての範囲を使用して丸められます。メモリー
               中に格納される結果は、指定した形式の範囲と精度を使
               用して丸められています。

               float 型の公称精度は、 single です。 long double
               型の公称精度は、 extended です。

               デフォルト:

               -fprecision フラグが指定されていない場合、デフォル
               トの丸め精度モードは extended になります。

               警告:

               このオプションは、x86 プラットフォームで、メインプ
               ログラムのコンパイル時に使用された場合にのみ有効で
               す。SPARC プラットフォームでは、このオプションは無
               視されます。

     -fround=a IEEE 丸めモードを起動時に有効に設定します。

               a には、 nearest、tozero、negative、positive のい
               ずれかを指定してください。

                値         意味

               nearest   もっとも近い値の方向に丸め、中間値の場合
                         は偶数にします。

               tozero    ゼロの方向に丸めます。

               negative  負の無限の方向に丸めます。

               positive  正の無限の方向に丸めます。

               このオプションで設定される IEEE 754 丸めモードは次
               のものです。

               o 定数式を評価するときにコンパイラが使用できる。

               o プログラム初期化中の実行時に設定される。

               これは、ieee_flags サブルーチンと同義で、実行時の
               モード変更に使用できます。

               デフォルト:

               -fround オプションを指定しないとき、丸めモードはデ
               フォルトで -fround=nearest になります。

               警告:

               このオプションを使用してルーチンを 1 つコンパイル
               したら、プログラム中のその他のすべてのルーチンも
               -fround=a を使用してコンパイルしてください。そうし
               ないと、予想外の結果が生じることがあります。このオ
               プションは、メインプログラムをコンパイルするときに
               使用する場合だけ有効です。

     -fsimple[=n]
               浮動小数点の最適化を簡素化するために、仮定の設定レ
               ベルを選択します。

               n を指定する場合は、0、1、2 のいずれかを指定しま
               す。

               次に、 -fsimple の値と意味を示します。

               値     意味
               0         仮定の設定を許可しません。IEEE 754 基準
                         に厳密に準拠します。

               1         安全な簡素化を許可します。生成されるコー
                         ドは IEEE 754 に厳密には準拠していません
                         が、プログラムの数値演算の結果は、ほとん
                         どの場合変わりません。

                         -fsimple=1 を指定すると、オプティマイザ
                         は丸めや例外を完全に無視して最適化を行う
                         ことはできません。特に、浮動小数点演算の
                         場合で、実行時に適用される丸めモードで異
                         なる値を生成する演算には置き換えることは
                         できません。

                         With -fsimple=1, を指定すると、オプティ
                         マイザは次の事柄を仮定して最適化を行いま
                         す。

                         o プロセスを初期化したあとでも、IEEE 754
                           のデフォルトの丸めモードおよびトラップ
                           モードは変化しません。

                         o 潜在的な浮動小数点例外を除き、目に見え
                           る結果が生成されない演算は、削除される
                           可能性があります。

                         o オペランドとして無限大または非数 (NaN)
                           を使用した演算は、演算結果に NaN を反
                           映させる必要はありません。たとえば、
                           x*0 は 0 に置き換えられます。

                         o 演算は、ゼロの符号には依存しません。

               2         -fsimple=1 のすべての機能を含めます。ま
                         た、-xvector=simd が有効の場合、SIMD 命
                         令を使用して縮約計算を行うことを許可しま
                         す。

                         また、丸め方法を変更して積極的な最適化を
                         行うので、生成される数値結果が異なるプロ
                         グラムが多くなります。たとえば、x/y が
                         ループ中で必ず 1 回以上評価され、 z=1/y
                         および y と z の値はループの実行中には定
                         数値をとることが保証されている場合には、
                         オプティマイザがそのループ中にある x/y
                         という計算をすべて x*z に置き換えること
                         を許可します。

               デフォルト:

               -fsimple を指定しない場合、コンパイラは -fsimple=0
               を使用します。

               -fsimple を指定するが、 n に値を指定しない場合、コ
               ンパイラは -fsimple=1 を使用します。

               警告:

               このオプションは IEEE 754 に準拠しない場合がありま
               す。

               関連項目:

               最適化が精度に与える影響の詳細は、Rajat Garg、Ilya
               Sharapov 共著の Techniques for Optimizing Applica-
               tions: High Performance Computing をお読みくださ
               い。

     -fstore   (x86 プラットフォーム) 強制的に浮動小数点式の精度
               を使用します。

               浮動小数点式または浮動小数点関数が変数に代入された
               場合、または浮動小数点式がより短い浮動小数点型に
               キャストされた場合に、レジスタに値をそのまま残さず
               に、式または関数の値を代入式の左辺の型に変換しま
               す。

               このオプションを無効にするには、 -nofstore オプ
               ションを使用してください。

               警告:

               四捨五入や切り上げによって、結果がレジスタの値と異
               なることがあります。

     -ftrap=a[,a...]
               IEEE トラップモードを設定しますが、 SIGFPE ハンド
               ラは組み込まれません。ieee_handler(3M) または
               fex_set_handling(3M) を使用するとトラップを有効に
               すると同時に SIGFPE ハンドラも組み込むことができま
               す。複数の値を指定すると、リストは左から右の順番に
               処理されます。

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

               値               意味

               [no%]division  ゼロによる除算時にトラップします [
                              しません]。

               [no%]inexact   不正確な結果時にトラップします [し
                              ません]。

               [no%]invalid   無効な演算時にトラップします [しま
                              せん]。

               [no%]overflow  オーバーフロー時にトラップします [
                              しません]。

               [no%]underflow アンダーフロー時にトラップします [
                              しません]。

               %all           上記すべての場合にトラップします。

               %none          上記のいずれの場合にもトラップしま
                              せん。

               common         無効な演算、ゼロによる除算、および
                              オーバーフロー時にトラップします。

               このオプションの [no%] の形式は、 %all または com-
               mon の値の意味を変更する場合に限って使用してくださ
               い。例に示すとおり、必ずこれらいずれかの値とともに
               使用する必要があります。 [no%] の形式だけでは、特
               定のトラップが明示的に無効になることはありません。

               IEEE トラップを有効にするには、 -ftrap=common を設
               定することをお勧めします。

               デフォルト:

               -ftrap を指定しない場合、コンパイラは
                -ftrap=%none と仮定します。

               例:  -ftrap=%all、no%inexact は、 inexact 以外のす
               べてのトラップを設定することになります。

               警告:

               -ftrap を使用してルーチンを 1 つコンパイルした場
               合、プログラムのすべてのルーチンも同じ -ftrap オプ
               ションを使用してコンパイルしてください。そうしない
               と、予想外の結果が生じることがあります。

               -ftrap=inexact を使用してトラップすると、浮動小数
               点値が正確に表現できない場合でもトラップが行われる
               ため、注意が必要です。たとえば、次の文でこの状態が
               発生します。

               x = 1.0 / 3.0;

     -G        実行可能ファイルでなく、動的共有ライブラリを構築し
               ます。 ld(1) のマニュアルページおよび『C++ ユー
               ザーズガイド』を参照してください。コマンド行で指定
               するソースファイルはすべてデフォルトで -xcode=pic1
               でコンパイルされます。

               テンプレートを使用する共有ライブラリを構築すると
               き、ほとんどの場合、テンプレートデータベースにイン
               スタンス化されているテンプレート関数は共有ライブラ
               リに取り込む必要があります。このオプションを使用す
               ると、これらのテンプレートが必要に応じて自動的に共
               有ライブラリに追加されます。

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

               -xcode の項目で説明しているように、共有オブジェク
               トを作成する場合、-xarch=v9 を指定してコンパイルす
               るすべてのオブジェクトファイルには、 -xcode 値も明
               示的に指定する必要があります。

               -c が指定されていなければ、オプション -dy 、 -G 、
               -R が ld に渡されます。

               共用ライブラリの構築には、ld -G を使用しないで、CC
               -G を使用してください。CC ドライバは C++ に必要な
               ld に対していくつかのオプションを自動的に渡しま
               す。

               -G オプションを使用する場合、コンパイラはデフォル
               トの -l オプションを ld に渡しません。共用ライブラ
               リがその他の共用ライブラリに依存性を持つようにする
               には、必要な -l オプションをコマンド行に渡す必要が
               あります。例えば、共用ライブラリが libCrun に依存
               するようにするには、 -lCrun をコマンド行に渡す必要
               があります。

     -g        コンパイラとリンカーに、デバッグで使用するファイル
               とプログラムを用意するように指示します。これには、
               次の処理が含まれています。

               o オブジェクトファイルと実行可能ファイルのシンボル
                 テーブル内に、詳細情報 (スタブ) を生成します。

               o 「支援関数」を生成します。デバッガはこれを呼び出
                 して、デバッガの機能のいくつかを実装します。

               o 関数のインライン化を不可にします。つまり、 +d オ
                 プションを指定したことになります。

               o 特定のレベルの最適化を無効にします。

                 相互の関連性:
                 このオプションを -xO[level] 、あるいは、それと等
                 価なオプション ( -O など) と併用する場合、デバッ
                 グ情報が制限されます。詳細は -xO の項目を参照し
                 てください。

                 最適化レベル -xO3 かまたはそれ以下で、 -g0 を指
                 定する場合、コンパイラはほとんど完全な最適化とと
                 もに最善のシンボリック情報を提供します。末尾呼び
                 出し最適化およびバックエンドのインライン化は無効
                 になります。

                 最適化レベル -xO4 かそれ以上で、このオプションを
                 使用する場合、コンパイラはほとんど完全な最適化と
                 ともに最善のシンボリック情報を提供します。

                 このオプションを指定すると、 +d オプションは自動
                 的に指定されます。

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

               -g で生成されたコメントメッセージは、プログラムを
               コンパイルする際にコンパイラが生成する最適化と変換
               について記述します。ソースコードでインタリーブされ
               たメッセージを表示するには、 er_src(1)、コマンドを
               使用してください。

               警告

               プログラムのコンパイルとリンクを別々のステップで行
               う場合、一方のステップで -g オプションを含め、他方
               のステップで含めなくても、プログラムの正しさに影響
               はありませんが、プログラムのデバッグ機能に影響が出
               ます。-g (または
                -g0) を付けずにコンパイルして、リンクで -g (また
               は -g0) を付けなかった場合、どのモジュールもデバッ
               グできるように正しく作成されません。通常、関数
               main を含むモジュールをデバッグするには、 -g (また
               は -g0) を付けてコンパイルする必要があります。

               関連項目:

               ld(1) のマニュアルページのほかに、 -g0、-xs、およ
               び +d の項目も参照してください。

     -g0       デバッガ用のシンボルテーブル情報を生成します。ただ
               し、C++ のインライン展開は可能なままです。このオプ
               ションは、 +d が無効になることと
                dbx がインライン関数にステップインできないことを
               除いて、 -g と同義です。

               +d も参照してください。

     -H        標準エラー出力 ( stderr ) に、現在のコンパイルで対
               象となる各 #include ファイルのパス名が 1 行ずつ出
               力されます。

     -h[ ]lname
               生成される共有動的ライブラリに名前 lname を割り当
               てます。

               これはローダー用のオプションで、 ld に渡されます。
               -h のあとに指定する名前は、 -o オプションで指定し
               たファイル名と同一にします。 -h と lname の間に
               は、空白を入れても入れなくてもかまいません。

               コンパイル時のローダーは、指定された lname を作成
               中の動的共有ライブラリに割り当て、その lname をそ
               のライブラリのイントリンシック名としてライブラリの
               中に記録します。 -hlname オプションを指定しない場
               合には、イントリンシック名はライブラリファイルに記
               録されません。

               実行可能ファイルはすべて、必要な共有ライブラリファ
               イルのリストを持っています。実行時のリンカーは、ラ
               イブラリを実行可能ファイルにリンクするとき、ライブ
               ラリのイントリンシック名をこの共有ライブラリファイ
               ルのリストの中にコピーします。共有ライブラリにイン
               トリンシック名がないと、リンカーは代わりにその共有
               ライブラリファイルのパス名をコピーします。次に例を
               示します。

               % CC -G -o libx.so.1 -h libx.so.1 a.o b.o c.o

               相互の関連性:

               このオプションは上書きされずに累積されます。

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

     -i        LD_LIBRARY_PATH の設定を無視するようにリンカー
               ld(1) に伝えます。

     -Ipathname
               相対ファイル名 (先頭が / でないファイル名) で指定
               されたインクルードファイルの検索ディレクトリのリス
               トに pathname を追加します。コンパイラは、二重引用
               符で囲まれたインクルードファイル (例: #include
               "foo.h") を次の順序で検索します。

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

               2.   -I オプションで指定されたつディレクトリ (もし
                    あれば)

               3.   コンパイラが提供する C++ ヘッダーファイル、
                    ANSI C ヘッダーファイル、および特殊ファイルの
                    ための include ディレクトリ

               4.   /usr/include

               コンパイラは、山括弧で囲まれたインクルードファイル
               (例: #include <foo.h>) を次の順序で検索します。

               1.   -I オプションで指定された名前を持つディレクト
                    リ (もしあれば) ソースファイルを含むディレク
                    トリ

               2.   コンパイラが提供する C++ ヘッダーファイル、
                    ANSI C ヘッダーファイル、および特殊ファイルの
                    ための include ディレクトリ

               3.   /usr/include

               注 - ファイル名が標準ヘッダーのファイル名と重なっ
               てしまった場合は、『C++ ユーザーズガイド』の「標準
               ヘッダーの実装」を参照してください。

               相互の関連性:

               このオプションは上書きされずに累積されます。

               -I- オプションを使用すると、デフォルトの検索規則を
               変更できます。

               -library=no%Cstd を指定した場合、コンパイラが提供
               する Cstd ヘッダーファイルは検索されません。

               注 - -ptipath オプションが使用されていない場合、コ
               ンパイラは -Ipathname 中のテンプレートファイルを探
               します。 -ptipath オプションではなく、 -Ipathname
               オプションを使用することをお勧めします。

               警告

               検索ディレクトリとしてコンパイラのインストール場
               所、/usr/include、/lib、および /usr/lib を指定しな
               いでください。

     -I-       インクルードファイルの検索規則を次のように変更しま
               す。

               o    #include "foo.h" という形式のインクルードファ
                    イルの場合は、次の順序でディレクトリを検索し
                    ます。

                    1.   -I オプションで ( -I- の前と後の両方で)
                         指定されたディレクトリ

                    2.   コンパイラが提供する C++ ヘッダーファイ
                         ル、ANSI C ヘッダーファイル、および特殊
                         ファイルのためのディレクトリ

                    3.   /usr/include

               o    #include <foo.h> という形式のインクルードファ
                    イルの場合は、次の順序でディレクトリを検索し
                    ます。

                    1.   -I オプションで ( -I- の前と後の両方で)
                         指定されたディレクトリ

                    2.   コンパイラが提供する C++ ヘッダーファイ
                         ル、ANSI C ヘッダーファイル、および特殊
                         ファイルのためのディレクトリ

                    3.   /usr/include

               警告

               検索ディレクトリとしてコンパイラのインストール場
               所、/usr/include、/lib、および /usr/lib を指定しな
               いでください。

               -I- オプションは、コマンド行 1 行につき 1 度しか使
               用できません。

     -i        すべての LD_LIBRARY_PATH 設定を無視するようリン
               カー ld(1) に伝えます。

     -inline   -xinline と同じです。

     -instances=a
               テンプレートのインスタンスの配置とリンクを制御しま
               す。次に a の値と意味を示します。

               値          意味

               extern    必要なすべてのインスタンスを comdat セク
                         ションに配置し、大域的なリンケージを与え
                         ます (リポジトリ内のインスタンスが古い場
                         合は、再インスタンス化が行われます)。
                         注: コンパイルとリンクを別々のステップで
                         行なうときに、コンパイルのステップで
                         -instance=extern を指定すると、同じよう
                         にリンクのステップでも指定しなければなり
                         ません。

               explicit  明示的にインスタンス化されたインスタンス
                         を comdat セクション内の現在のオブジェク
                         トファイルに配置し、大域リンケージを与え
                         ます。必要なその他のインスタンスは生成し
                         ません。

               global    すべての必要なインスタンスを comdat セク
                         ション内の現在のオブジェクトファイルに配
                         置し、大域リンケージを与えます。

               semiexplicit
                         明示的にインスタンス化されたインスタンス
                         とすべての必要なインスタンスを comdat セ
                         クション内の現在のオブジェクトファイルに
                         配置し、大域リンケージを与えます。

               static    注: -instances=static は旧式なものとなり
                         ました。-instances=global が static の利
                         点を備えながら欠点をなくしたため、
                         -instances=static を使う理由はなくなりま
                         した。このオプションは古いコンパイラで発
                         生する問題を克服するために提供されていま
                         したが、こうした問題はコンパイラのこの
                         バージョンには存在しません。
                         すべての必要なインスタンスを現在のオブ
                         ジェクトファイルに配置し、静的リンケージ
                         を与えます。

               デフォルト:

               -instances を指定しない場合、 -instances=global が
               仮定されます。

               警告:

               値として static および semiexplicit を指定すると、
               無効な結果になることがあります。詳細は『C++ ユー
               ザーズガイド』を参照してください。

     -instlib=file

               このオプションを使用すると、静的ライブラリ、共有ラ
               イブラリ、または現在のオブジェクトの中で、重複する
               テンプレートインスタンスの生成を禁止できます。一般
               に、ライブラリを使用するプログラムが多数のインスタ
               ンスを共有する場合、-instlib=file を指定してコンパ
               イル時間の短縮を試みることができます。

               値:

               file 引数を使って、既存のテンプレートインスタンス
               が含まれていることがわかっているライブラリを指定し
               ます。ファイル名の引数にはスラッシュ(「/」) が入っ
               ていなければなりません。現在のディレクトリへの相対
               パスとしては、ドットとスラッシュ(「./」)を使いま
               す。

               デフォルト:

               -instlib=file オプションにはデフォルトはなく、指定
               した場合にのみ働きます。このオプションは複数指定で
               き、指定内容は追加されていきます。

               例:

               libfoo.a ライブラリと libbar.so ライブラリが、ソー
               スファイル a.cc と共有する多数のテンプレートインス
               タンスをインスタンス化するとします。 -instlib=file
               を追加してライブラリを指定すると、冗長性が回避さ
               れ、コンパイル時間の削減に役立ちます。

               example% CC -c -instlib=./libfoo.a
               -instlib=./libbar.so a.cc

               相互の関連性:

               -g を使ってコンパイルするとき、-instlib=file で指
               定されたライブラリが -g でコンパイルされていない
               と、そのテンプレートインスタンスはデバッグできるよ
               うになりません。対処方法は、-g を使うときには
               -instlib=file を避けるようにすることです。

               file の検索に、-L のパスは調べられません。

               警告

               -instlib でライブラリを指定する場合は、リンク時に
               そのライブラリを使用しなければなりません。

               関連項目:

               -template 、-instances 、-pti

     -KPIC     (SPARC)  廃止。このオプションを使用しないでくださ
               い。代わりに -xcode=pic32 を使用してください。

               (x86) x86 アーキテクチャーでの -Kpic と同じです。

     -Kpic     (SPARC)  廃止。このオプションを使用しないでくださ
               い。代わりに -xcode=pic13 を使用してください。

               (SPARC プラットフォーム) -xcode=pic13 と同義です。

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

     -keeptmp  コンパイル中に作成された一時ファイルをすべて保持し
               ます。このオプションを -verbose=diags と一緒に使用
               すると、デバッグに便利です。

     -Lpath    ライブラリ検索パスに path を追加します。

               このオプションは ld に渡されます。リンカーは path
               で指定されたディレクトリを検索してから、コンパイラ
               が提供するディレクトリを検索します。

               相互の関連性:

               このオプションは上書きされずに累積されます。

               警告

               検索ディレクトリとして /usr/include、/lib、
               /usr/lib、およびコンパイラのインストール場所を指定
               しないでください。

     -llib     リンカーのライブラリ検索用のリストにライブラリ
               liblib.a または liblib.so を追加します。

               このオプションは ld に渡されます。通常のライブラリ
               は、 liblib.a または liblib.so ( lib と .a または
               .so の部分は必須) という名前を持っています。このオ
               プションでは、 lib の部分を指定できます。1 行のコ
               マンド行に希望する数だけのライブラリを指定できま
               す。これらのライブラリは、 -Lpath で指定した順序で
               検索されます。

               このオプションは、オブジェクトファイル名のあとに指
               定してください。

               相互の関連性:

               このオプションは上書きされずに累積されます。

               警告:
               マルチスレッドアプリケーションを構築したり、マルチ
               スレッドライブラリにアプリケーションをリンクする場
               合には、 -lthread を使ってアプリケーションを直接的
               にリンクする代わりに、 -mt オプションを使ってプロ
               グラムをコンパイルし、リンクしなければなりません。

               関連項目:

               -mt

     -libmieee -xlibmieee を使用します。

     -libmil   -xlibmil を使用します。

     -library=lib[,lib...]
               指定した CC 提供ライブラリをコンパイルとリンクに組
               み込みます。

               オプションを使って CC 提供ライブラリを指定した場
               合、コンパイル時に適切な -I パスが設定され、リンク
               時には適切な -L, -Y, -P, および -R パスと -l オプ
               ションが設定されます。

               値:


               次に lib の値と意味を示します。

               互換モード (-compat[=4]) の場合:

               値                    意味

               [no%]f77            推奨しません。使用しないでくだ
                                   さい。 -xlang=f77 を使用してく
                                   ださい。

               [no%]f90            推奨しません。使用しないでくだ
                                   さい。 -xlang=f90 を使用してく
                                   ださい。

               [no%]f95             推奨しません。使用しないでく
                                    ださい。 -xlang=f95 を使用し
                                    てください。

               [no%]rwtools7       従来の iostreams Tools.h++
                                   バージョン 7 を使用します [し
                                   ません]。

               [no%]rwtools7_dbg   デバッグが有効な Tools.h++
                                   バージョン 7 を使用します [し
                                   ません]。

               [no%]complex        libcomplex (複素数演算) を使用
                                   します [しません]。

               [no%]interval       推奨しません。使用しないでくだ
                                   さい。 -xia を使用してくださ
                                   い。

               [no%]libC           libC (C++ サポートライブラリ)
                                   を使用します [しません]。

               [no%]gc             libgc (ガベージコレクション)
                                   を使用します [しません]。

               [no%]sunperf        Sun Performance Library(TM) を
                                   使用します [しません]。

               %none               libC を除いたいずれの C++ ライ
                                   ブラリも使用しません。

               標準モード (デフォルトモード) の場合:

               値                    意味

               [no%]f77            推奨しません。使用しないでくだ
                                   さい。 -xlang=f77 を使用してく
                                   ださい。

               [no%]f90            推奨しません。使用しないでくだ
                                   さい。 -xlang=f90 を使用してく
                                   ださい。

               [no%]f95             推奨しません。使用しないでく
                                    ださい。 -xlang=f95 を使用し
                                    てください。

               [no%]rwtools7       従来の iostreams Tools.h++
                                   バージョン 7 を使用します [し
                                   ません]。

               [no%]rwtools7_dbg   デバッグが有効な Tools.h++
                                   バージョン 7 を使用します [し
                                   ません]。

               [no%]rwtools7_std   標準 iostreams Tools.h++ バー
                                   ジョン 7 を使用します [しませ
                                   ん]。

               [no%]rwtools7_std_dbg
                                   デバッグが有効な標準 iostreams
                                   Tools.h++ バージョン 7 を使用
                                   します [しません]。

               [no%]interval       推奨しません。使用しないでくだ
                                   さい。 -xia を使用してくださ
                                   い。

               [no%]iostream       libiostream (従来の iostream
                                   ライブラリ) を使用します [しま
                                   せん]。

               [no%]Cstd           libCstd (C++ 標準ライブラリ)
                                   を使用します [しません]。コン
                                   パイラが提供する Cstd ヘッダー
                                   ファイルをインクルードします [
                                   インクルードしません]。

               [no%]stlport4       標準ライブラリのSTL ポートの実
                                   装を使用します [しません]。
                                   -library=stlport4 を指定する
                                   と、コマンドは
                                   -library=no%Cstd,stlport4 に拡
                                   張されます。

               [no%]stlport4_dbg   STLport のデバッグが有効なライ
                                   ブラリを使用します[しません]。

               [no%]Crun           libCrun (C++ 実行時ライブラリ)
                                   を使用します [しません]。

               [no%]gc             libgc (ガベージコレクション)
                                   を使用します [しません]。

               [ no% ]sunperf      Sun Performance Library (TM)
                                   を使用します [しません]。

               %none               libC run 以外のいずれの C++ ラ
                                   イブラリも使用しません。

               デフォルト:

               互換モード (-compat[=4]) で -library が指定されな
               い場合、 -library=libC が指定されます。

               libC ライブラリは -library=no%libC を使用して特別
               に除外されないかぎり、常にインクルードされます。

               標準モード (デフォルトモード) の場合、
               -library=%none か -library=no%Cstd、
               -library=stlport4 のどれかを使って明示的に除外され
               ないかぎり、libCstd ライブラリが必ずインクルードさ
               れます。

               また、libm および libcライブラリは、標準または互換
               モードのどちらであるかに関係なく、-library=%none
               が指定されたとしても、必ずインクルードされます。標
               準モードでは、libCrun が必ずインクルードされます。

               例:

               C++ ライブラリ (libCrun を除く) なしで標準モード (
               デフォルトモード) でリンクするには、次のコマンドを
               使用します。

               example% CC -library=%none

               標準モードで従来の iostreams Rogue Wave tools.h++
               ライブラリを取り込むには、次のコマンドを使用しま
               す。

               example% CC -library=rwtools7,iostream

               標準モードで標準 iostreams Rogue Wave tools.h++ ラ
               イブラリを取り込むには、次のコマンドを使用します。

               example% CC -library=rwtools7_std

               互換モードで従来の iostreams Rogue Wave tools.h++
               ライブラリを取り込むには、次のコマンドを使用しま
               す。

               example% CC -compat -library=rwtools7

               標準モード (デフォルトモード) で従来の iostreams
               Rogue Wave tools ライブラリを取り込む場合、libios-
               tream も含める必要があります (詳細は『C++ 移行ガイ
               ド』を参照)。標準 iostreams Rogue Wave tools ライ
               ブラリは、標準モードでのみ使用できます。次のコマン
               ド例は、Rogue Wave tools.h++ ライブラリオプション
               の有効な使用法と無効な使用法を示しています。

               有効:
               example% CC -compat -library=rwtools7 foo.cc
               無効:
               example% CC -compat -library=rwtools7_std foo.cc

               有効 (従来の iostreams)
               example% CC -library=rwtools7,iostream foo.cc
               無効
               example% CC -library=rwtools7 foo.cc

               有効 (標準 iostreams)
               example% CC -library=rwtools7_std foo.cc
               無効
               example% CC -library=rwtools7_std,iostream foo.cc

               libCstd と libiostream を両方含める場合、同じファ
               イルにアクセスするためにプログラム内で古い形式と新
               しい形式の iostreams (たとえば cout と std::cout)
               を混在しないように気を付けてください。同一プログラ
               ム内に標準 iostreams とクラシック iostreams が混在
               する場合、従来のものと標準 iostream コードから同じ
               ファイルにアクセスがあると問題が発生する恐れがあり
               ます。

               libC にも libCrun にもリンクしないプログラムは、
               C++ 言語のすべての機能を使用できないことがありま
               す。

               -xnolib が指定されると、-library は無視されます。

               相互の関連性:

               -library を使用してライブラリを指定すると、コンパ
               イル時に適切な -I パスが設定されます。リンク時には
               適切な -L、-Y、-P、-R パスおよび -I オプションが設
               定されます。

               このオプションは上書きされずに累積されます。

               rwtool ライブラリは一度に 1 つだけ使用できます。
               -library=stlport4 では rwtool ライブラリを使用でき
               ません。

               -library=stlport4 および -library=Cstd は同じコマ
               ンド行では使用できません。

               -library=stlport4 および -library=Cstd は同じコマ
               ンド行では使用できません。

               -library=sunperf および -xlic_lib=sunperf は、同じ
               コマンド行では使用できません。

               -library オプションを使用すると、指定ライブラリに
               対する -l オプションが必ず適切な順序で出力されま
               す。たとえば -library=rwtools7,iostream および
               -library=iostream,rwtools7 の両方の場合、-l オプ
               ションが -lrwtool -liostream の順序で ld に渡され
               ます。

               区間演算ライブラリを使用する場合は、 libCstd、
               libC、 libiostreams のいずれかのライブラリを使用し
               なければなりません。

               指定したライブラリは、システムサポートライブラリが
               リンクされる前にリンクされます。

               警告:

               STLport、Rogue Wave、Sun Microsystems の C++ ライ
               ブラリの構成マクロはいずれも再定義したり変更したり
               しないでください。これらのライブラリは C++ コンパ
               イラとともに動作するように構成および構築されていま
               す。libCstd と Tool.h++ は相互に働き合うように構成
               されているので、その構成マクロを変更すると、プログ
               ラムがコンパイル、リンクされなかったり、あるいは正
               しく実行されなかったりします。

               コンパイルとリンクを別々の手順で実行する場合、コン
               パイルコマンドの -library オプションで指定した内容
               は、リンクコマンドでも指定される必要があります。

               一連のライブラリ群は恒久的なものではないため、リ
               リースごとに変更される可能性があります。

               stlport4、Cstd、iostream の各ライブラリにはそれぞ
               れの入出力ストリームの実装が存在します。-library
               オプションでこれらの中から複数を指定すると、結果と
               して、プログラムが予測できない動作をする可能性があ
               ります。

               関連項目:

               -I、 -l、 -R、 -staticlib、 -xia、 -xlang、 -xno-
               lib
               『C++ 移行ガイド』、『C++ Interval Arithmetic Pro-
               gramming Reference』『Tools.h++ ユーザーズガイ
               ド』、『Tools.h++ クラスライブラリ・リファレンスマ
               ニュアル』、『Standard C++ Class Library Refer-
               ence』

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

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

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

               -m32 を使用してコンパイルされたオブジェクトファイ
               ルやライブラリを、 -m64 を使用してコンパイルされた
               オブジェクトファイルやライブラリとリンクすることは
               できません。

               -m64 を使用して大量の静的データを持つアプリケー
               ションをコンパイルする場合、-xmodel=medium も必要
               になることがあります。一部の Linux プラットフォー
               ムは、medium モデルをサポートしていないことに注意
               してください。

               以前のコンパイラのリリースでは、-xarch での命令
               セットの選択により暗黙でメモリーモデル ILP32 また
               は LP64 が指示されました。Sun Studio 12 以降のコン
               パイラでは、これは当てはまりません。大部分のプラッ
               トフォームでは、コマンド行に -m64 を追加するだけで
               64 ビットオブジェクトを作成できます。

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

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

     -mc       オブジェクトファイルの .comment セクションから重複
               している文字列を削除します。文字列が空白文字を含む
               場合、その文字列を引用符で囲む必要があります。mc
               オプションを使用すると、 -mcs -c コマンドが呼び出
               されます。

     -migration
               以前のバージョンのコンパイラ用に構築されたソース
               コードの移行についての情報が置かれている場所につい
               て記述しています。

               注 - このオプションは次のリリースで廃止される予定
               です

     -misalign (SPARC ) メモリー中に境界整列の
               誤ったデータが存在することを許可します。このオプ
               ションを指定しないと、境界列の正しくないデータに対
               してエラーが生成されます。

               このオプションは、プログラム内のデータが正しく整合
               されていないことをコンパイラに通知します。したがっ
               て、正しく整合されない可能性のあるデータについて
               は、読み込みと保存を抑えなければなりません (具体的
               には一度に 1 バイト)。このオプションを使用すると、
               実行時の性能が大幅に低下することがあります。この性
               能低下の度合いは、アプリケーションによって異なりま
               す。

               コンパイルとリンクを別の工程で行ない、 -misalign
               オプションを使用する場合は、両方の工程で  -
               misalign オプションを指定しなければなりません。
               可能な場合は、プログラム中の境界整列の正しい部分と
               正しくない部分を互いにリンクしないようにしてくださ
               い。

               相互の関連性:

               o SPARC プラットフォームで #pragma pack を使ってタ
                 イプのデフォルト整列よりも濃密なパックを実行する
                 ときは、アプリケーションのコンパイルとリンクの両
                 方で -misalign オプションを指定しなければなりま
                 せん。

               o 不整合データは、実行時に ld から供給されるトラッ
                 プ機構によって処理されます。 -misalign オプショ
                 ンとともに最適化フラグ (-xO{1|2|3|4|5} かそれと
                 同等のフラグ) を使用する場合には、不整合データの
                 整合に要求される追加の命令はオブジェクトファイル
                 の中に挿入され、実行時不整合トラップは生成しませ
                 ん。

     -mr[,string]
               オブジェクトファイルの .comment セクションからすべ
               ての文字列を削除し、string が指定された場合は、そ
               のセクションに string を配置します。文字列が空白文
               字を含む場合、その文字列を引用符で囲む必要がありま
               す。このオプションを使用すると、コマンドmcs -d [-a
               string] が呼び出されます。

               相互の関連性:

               このオプションは -S、-xsbfast、-sbfast のどれかが
               指定されている場合は、有効ではありません。

     -mt       マルチスレッド化されたコード用のコンパイルおよびリ
               ンクを行います。

               このオプションは -D_REENTRANT をプリプロセッサに渡
               し、適切な順序で -lthread を ld に渡します。

               -mt オプションは、アプリケーションやライブラリがマ
               ルチスレッド化されている場合に必要です。

               警告:

               適切なライブラリのリンクの順序を確認するために、
               -lthread ではなく、このオプションを使用して lib-
               thread でリンクしてください。

               POSIX スレッドを使用する場合には -mt -lpthread オ
               プションを使ってリンクしなければなりません。マルチ
               スレッドアプリケーションでは、 libC
                (互換モード) と libCrun (標準モード) に libthread

               が必要なので、 -mt オプションが必要です。

               別々のステップでコンパイルとリンクを行い、-mt でコ
               ンパイルした場合、予期しない結果になる可能性があり
               ます。-mt で一つの翻訳単位をコンパイルする場合、プ
               ログラムのすべての単位を -mt でコンパイルしてくだ
               さい。

               並列 Fortran オブジェクトと C++ オブジェクトを混在
               させる場合は、リンク行に -mt フラグを指定しなけれ
               ばなりません。

               互換モード (-compat=4) では C99 サポートは利用でき
               ません。

               関連項目:

               -xnolib

     -native   -xtarget=native を使用します。

     -noex     -features=no%except を使用します。

     -nofstore (x86 ) 式の精度を強制しません。

               このオプションでは、浮動小数点の式または関数の値
               が、代入式の左辺の型に強制的に変換されることはあり
               ません。また、浮動小数点の式または関数を変数に割り
               当てたり、短い浮動小数点型に変換しても、レジスタ中
               の値は保持されます。

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

     -nolib    -xnolib を使用します。

     -nolibmil -xnolibmil を使用します。

     -noqueue  ライセンスを待ち行列に入れません。ライセンスを取得
               できないと、コンパイラは要求を待ち行列に入れたり、
               コンパイルを行わずに終了します。メイクファイルのテ
               ストでは、ゼロ以外の状態が返されます。

     -norunpath
               共有ライブラリ用のパスを実行可能ファイル中に構築し
               ません。

               実行可能ファイルが共有ライブラリを使用している場
               合、コンパイラは通常、実行時リンカーに共有ライブラ
               リの場所を伝えるために、構築を行なったパスを知らせ
               ます。具体的には、コンパイラが -R オプションを ld
               に渡します。このパスは、コンパイラのインストール先
               ディレクトリによって決まります。
               製品用の実行可能ファイルを構築する場合で、その製品
               のユーザーが共有ライブラリのパスとして、プログラム
               で使用されるパスとは異なるパスを使用する可能性があ
               るときに、このオプションを使用することをお勧めしま
               す。

               相互の関連性:

               コンパイラがインストールされた場所 (デフォルトは
               /opt/SUNWspro/lib) でいずれかの共有ライブラリを使
               用し、同時に -norunpath も使用する場合は、リンク時
               に -R を指定するか、実行時に LD_LIBRARY_PATH 環境
               変数を設定して共有ライブラリの位置を指定する必要が
               あります。これによって、実行時リンカーが共有ライブ
               ラリを検索できるようになります。

     -O        The -O マクロは、-xO2 ではなく、-xO3 に展開される
               ようになりました。このデフォルトの変更によって、実
               行時の性能が向上します。ただし、あらゆる変数を自動
               的に volatile と見なすことを前提にするプログラムの
               場合、-xO3 は不適切になることがあります。このこと
               を前提とする代表的なプログラムとしては、専用の同期
               方式を実装するデバイスドライバや古いマルチスレッド
               アプリケーションがあります。回避策は、<TT>-o</TT>
               ではなく、 -xO2 を使ってコンパイルすることです。

     -O [ level ]
               -xO level を使用します。

     -ofilename
               コンパイラが生成するバイナリファイル (接尾時 .o )
               または実行可能ファイルの名前 filename を指定しま
               す。

               注 - コンパイラは、テンプレートインスタンスを格納
               する必要がある場合に、出力ファイルのディレクトリに
               あるテンプレートリポジトリにテンプレートインスタン
               スを格納します。

               警告:

               filename (ファイル名) には、コンパイルが作成する
               ファイルの種類を示す適切な接尾辞を付けてください (
               「ファイル」の項目を参照)。また、 CC このオプショ
               ンは上書きされずに累積されます。 filename とソース
               ファイルを同じにしないでください。

     +p        非標準プリプロセッサ断定を無視します。

               デフォルト:

               +p が存在しない場合、コンパイラは非標準プリプロ
               セッサ表明を認識します

               相互の関連性:

               +p を使用する場合は、 sun, unix, sparc, および
               i386 マクロは定義されません。

     -P        ソースの前処理だけを行います。コンパイルは行いませ
               ん ( .i という接尾辞の付いたファイルが生成されます
               )。

               このオプションでは、プリプロセッサが出力するような
               行番号はファイルに出力されません。

     -p        廃止 -xpg を参照してください。

     -pentium  (x86 ) -xtarget=pentium を使用しま
               す。

     -pg       -xpg を使用します。SPARC:  -xcode=pic32 と同じで
               す。

               x86:  -KPIC と同じです。

     -pic      SPARC:  -xcode=pic13 と同じです。

               x86:  -Kpic と同じです。

     -pta      -template=wholeclass を使用します。

     -ptipath  テンプレートソースの検索対象ディレクトリを指定しま
               す。

               これは、 -Ipathname で設定した通常の検索パスに代わ
               るオプションです。 -ptipath フラグを使用すると、コ
               ンパイラはこのパス上でテンプレート定義ファイルを探
               し、 -Ipathname フラグを無視します。

               -ptipath の代わりに、 -Ipathname フラグを使用する
               と、混乱が起きにくくなります。

               相互の関連性:

               このオプションは上書きされずに累積されます。

     -pto      -instances=static を使用します。

     -ptrpath  このオプションは廃止されており、コンパイラによって
               無視されます。

               警告:

               -ptr オプションは無視されますが、今後のリリース
               で、異なる扱いで再利用される可能性があるので、すべ
               てのコンパイルコマンドから削除する必要があります。

     -ptv      -verbose=template を使用します。

     -Qoptionphase[,option...]
               オプション option をコンパイル段階に渡します。
               phase.

               複数のオプションを渡すには、コンマで区切って指定し
               ます。 -Q を使ってコンポーネントに渡すオプション
               は、順序を変更することができます。ドライバが認識す
               るオプションは、正しい順序に保持されます。ドライバ
               がすでに認識しているオプションに -Q は使用しないで
               ください。たとえば C++ コンパイラは、リンカー(ld)
               に対する -z オプションを認識します。たとえば次のよ
               うなコマンドを発行した場合、

               CC -G -zallextract mylib.a -zdefaultextract ...//
               正しい

               -z オプションは正しい順序でリンカーに渡されます。
               しかし、次のようなコマンドが発行された場合、

               CC -G -Qoption ld -zallextract mylib.a -Qoption ld
               -zdefaultextract ...// 誤り

               -zオプションの順序が変更され、間違った結果になるこ
               とがあります。

               コンパイル段階 phase に指定するオプションは、次の
               とおりです。


               SPARC             x86

               ccfe              ccfe

               iropt             cg386

               cg                codegen

               CClink            CClink

               ld                ld

               例:

               ld が CC ドライバから起動されたとき、 -Qoption は
                -i オプションを ld に渡します。

               example% CC -Qoption ld -i test.cc

               警告:

               意図しない結果を防ぐために注意してください。次はそ
               の例です。

               -Qoption ccfe -features=bool,iddollar

               これは次のように解釈されます。

               -Qoption ccfe -features=bool -Qoption ccfe iddol-
               lar

               正しい用法は次のとおりです。

               -Qoption ccfe -features=bool,-features=iddollar

     -qoption phase option
               -Qoption を使用します。

     -qp       -p と同義です。

     -Qproduce sourcetype
               CC ドライバに sourcetype に指定した種類のソース
               コードを生成するよう指示します。次に、ソースコード
               の種類を示します。

               値               意味

               .i             ccfe が作成する前処理済みの C++ の
                              ソースコード

               .o             コード生成プログラムが作成するオブ
                              ジェクトファイル

               .s             コード生成プログラムが作成するアセ
                              ンブラソース

     -qproduce sourcetype
               -Qproduce を使用します。

     -Rpath[:path...]
               動的ライブラリの検索パスを実行可能ファイルに構築し
               ます。

               このオプションは、 ld に渡されます。

               デフォルト:

               -R オプションが存在しない場合、ライブラリは出力オ
               ブジェクトに記録されたパスを検索し、 -xarch オプ
               ション ( -xarch が連結されていない場合は、
               -xarch-generic が仮定されます) により指定された
               ターゲットアーキテクチャー命令に依存する実行時リン
               カーに渡されます。


               -xarch=v9 、 -xarch=v9a、または -xarch=v9b:

                   <install-directory>/SUNWspro/lib/v9

               その他の -xarch 値:

                   <install-directory>/SUNWspro/lib

               標準インストールでは、<install-directory> は /opt
               になります。

               相互の関連性:

               このオプションは上書きされずに累積されます。

               環境変数 LD_RUN_PATH と -R オプションの両方を指定
               すると、 -R オプションで指定したパスが検索され、
               LD_RUN_PATH で指定されたパスは無視されます。

               関連項目:

               -norunpath

     -readme   -xhelp=readme と同義です。

     -S        アセンブリコードのコンパイルと生成だけを行います。
               CC ドライバはプログラムをコンパイルして、アセンブ
               リソースファイルを作成しますが、プログラムのアセン
               ブルは行いません。このアセンブリソースファイル名に
               は、 .s という接尾辞が付きます。プログラムのアセン
               ブルは行いませんが、接尾辞 .s の付いたアセンブリ
               ソースファイルを生成します。

     -s        実行可能ファイルからシンボルテーブルを削除します。
               出力される実行可能ファイルからすべてのシンボル情報
               が削除されます。このオプションは ld に渡されます。

     -sb       非推奨。使用しないでください。ソースブラウザ機能は
               廃止されています。

     -sbfast   非推奨。使用しないでください。ソースブラウザ機能は
               廃止されています。

     -staticlib=l[,l...]
               -library オプション、 -xlangオプション、および
               -xia で指定されたライブラリ (-library の場合はデ
               フォルトも含む) を静的にリンクするよう指示します。

               値:

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

               値               意味

               [no%]library   library に静的にリンクします [しま
                              せん]。library に有効な値は、すべて
                              -library に有効な値 ( %all および
                              %none を除く) および -xlang に有効
                              な値、および interval ( -xia と連結
                              して使用) です。

               %all           -library オプションにより指定された
                              すべてのライブラリ、 -xlang オプ
                              ションに指定されたすべてのライブラ
                              リ、 -xia が指定された場合は区間ラ
                              イブラリを静的にリンクします。

               %none          -library オプションおよび -xlang オ
                              プションに指定されたライブラリに静
                              的にリンクしません。 -xia がコマン
                              ド行に指定された場合、区間ライブラ
                              リを静的にリンクしません。

               デフォルト:

               -staticlib を指定しないときは、 -staticlib=%none
               が仮定されます。

               相互の関連性:

               このオプションは上書きされずに累積されます。

               -staticlib オプションは、-xia オプション、-xlang
               オプション、および -library オプションで明示的に選
               択された C++ ライブラリ、または、デフォルトで暗黙
               的に選択された C++ ライブラリだけに機能します。互
               換モード (-compat=[4]) では、 libC がデフォルトで
               選択されます。標準モード (デフォルトのモード) で
               は、 Cstd と Crun がデフォルトで選択されます。

               例:

               次のコマンドは、 Crun が -library のデフォルト値で
               あるため、 libCrun を静的にリンクします。

               ()
               example% CC -staticlib=Crun test.cc

               ただし、 libgc は -library オプションで明示的に指
               定されないかぎりリンクされないので、次のコマンドは
               libgc をリンクしません。

               ()
               example% CC -staticlib=gc test.cc

               次のコマンドは、librwtool ライブラリを動的にリンク
               します。librwtool はデフォルトのライブラリでもな
               く、-library オプションでも選択されていないため、
               -staticlib の影響はありません。

               ()
               example% CC -lrwtool -library=iostream \
               -staticlib=rwtools7

               次のコマンドは、Tools.h++ ライブラリを静的にリンク
               します。

               ()
               example% CC -library=rwtools7,iostream \
               -staticlib=rwtools7

               警告:

               使用できるライブラリの値は安定しておらず、リリース
               ごとに変わることがあります。

               -xarch=v9 、 -xarch=v9a 、または -xarch=v9b (また
               は同じ意味の 64 ビットアーキテクチャーオプション)
               を使用するときには、一部のライブラリは静的ライブラ
               リとして使用できません。

               64 ビット Solaris x86 プラットフォームでは、
               -staticlib=Crun および -staticlib=Cstd オプション
               は機能しません。どのプラットフォームであれ、これら
               のライブラリを静的にリンクすることは推奨しません。
               静的リンクすることによって、プログラムが機能しなく
               なることがあります。

     -sync_stdio=[yes|no]
               C++ の入出力ストリームと C の stdio の間の同期が原
               因で実行時性能が低下する場合は、このオプションを使
               用してください。同期が必要なのは、同一プログラム内
               で cout への書き込みに入出力ストリーム、stdout へ
               の書き込みに stdio を使用する場合だけです。C++ 規
               格では、この同期は必須で、デフォルトでは、C++ コン
               パイラは、同期を有効にします。しかしながら、しばし
               ば、アプリケーションの性能は、同期なしの方がずっと
               良くなります。プログラムが cout と stdout の両方に
               書き込みを行うのでなければ、この -sync_stdio=no オ
               プションを使って同期を無効にできます。
               デフォルト:

               -sync_stdio が指定されなかった場合は、
               -sync_stdio=yes に設定されます。

               例:

               次の例を考えてみてください。

               #include <stdio.h>
               #include <iostream>
               int main()
               {
                     std::cout << "\nHello ";
                     printf("beautiful ");
                     std::cout << "world!";
                     printf("\n");
               }

               同期が有効の場合、このプログラムは、次の 1 行をを
               出力するだけです。

                    Hello beautiful world!

               同期が無効の場合、出力は競合してしまいます。

               警告:

               このオプションは、ライブラリではなく、実行可能ファ
               イルのリンクの場合にのみ有効です。

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

               コンパイル中に生成される一時ファイル用のディレクト
               リとして path を指定します。

               -keeptmp を参照してください。

     -template=a[,a...]
               各種のテンプレートオプションを有効または無効にしま
               す。

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

               値             意味

               [no%]extdef         別のソースファイル中のテンプ
                                   レート定義を検索します [しませ
                                   ん]。

               [no%]geninlinefuncs 明示的にインスタンス化されたク
                                   ラステンプレートのインラインメ
                                   ンバー関数をインスタンス化しま
                                   す [しません]。

               [no%]wholeclass     使用されている関数だけではな
                                   く、テンプレートクラス全体をイ
                                   ンスタンス化します [しません
                                   ]。少なくともクラス中の一つの
                                   メンバーを参照する必要がありま
                                   す。それ以外は、コンパイラはク
                                   ラスのいずれのメンバーもインス
                                   タンス化しません。

               デフォルト:

               -template=no%wholeclass,extdef,no%geninlinefuncs

     -time     -xtime を使用します。

     -Uname    プリプロセッサシンボル name の初期定義を削除しま
               す。このオプションは -D が同じコマンド行で作成した
               マクロシンボル name の初期定義を削除します。これに
               は、コマンド行ドライバにより暗黙的に置かれたものも
               含まれます。

               その他のソースファイル中で使用される事前定義された
               マクロやマクロ定義に影響はありません。

               コマンド行ドライバによりコマンド行に置かれた -D オ
               プションを参照するには、コマンド行に -dryrun オプ
               ションを追加してください。

               -U オプションは、1 行のコマンド行で複数回指定でき
               ます。

               例:

               次のコマンドは事前定義されたシンボル __sun を未定
               義にします。 #ifdef(__sun) のような test.cc 中のプ
               リプロセッサ文は、シンボルが未定義であることを意味
               しています。

               example% CC -U__sun test.cc

               相互の関連性:

               このオプションは上書きされずに累積されます。

               すべての -U オプションは、存在するすべての -D オプ
               ションのあとで処理されます。

     -unroll=n -xunroll=n と同義です。
     -V        -verbose=version と同義です。

     -v        -verbose=diags と同義です。

     -vdelx    非推奨。使わないでください。このフラグは互換モード
               (-compat[=4]) だけで利用できます。

               delete[] を使用する式では、このオプションにより、
               _vector_delete_ への呼び出しではなく、実行時ライブ
               ラリ関数 _vector_deletex_ への呼び出しが生成されま
               す。

               関数  vector_delete_ は 2 つの引数をとります。1 つ
               目の引数は削除されるポインタで、2 つ目の引数は各配
               列要素のサイズです。

               関数 _vector_deletex_ は、3 つ目の引数をとります
               が、それ以外  vector_delete と同じように動作しま
               す。3 つ目の引数はクラスのデストラクタのアドレスで
               す。この 3 つ目の引数は関数では使用されませんが、
               サン以外のベンダー用に用意されています。

               デフォルト:
               -vdelx を指定しない場合、コンパイラは、 delete[]
               を使用する式に対して、 _vector_delete_ への呼び出
               しを生成します。

               警告:

               将来、廃止予定の旧式のオプションです。他社製のソフ
               トウェアを導入しており、そのソフトウェアの提供元が
               このオプションの使用を推奨しているのでないかぎり
               は、使わないでください。

     -verbose=a[,a...]
               コンパイラの冗長性を制御します。

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


               値          意味

               [no%]template       テンプレートをインスタンス化す
                                   る冗長モード (検証モードとも言
                                   います) をオンにします [しませ
                                   ん]。冗長モードでは、コンパイ
                                   ル中に行われるインスタンス化の
                                   各段階が表示されます。

               [no%]diags          コンパイル段階ごとにコマンド行
                                   に出力します [しません]。

               [no%]version        CC ドライバは、起動されるプロ
                                   グラムの名前とバージョン番号を
                                   出力します
                                    [しません]。

               %all                上記のすべてを行います。

               %none               上記のいずれも行いません。

               デフォルト:

               -verbose が指定されていない場合、コンパイラは
               -verbose=%none を仮定します。

               相互の関連性:

               このオプションは上書きされずに累積されます。

     +w        意図しない結果を生じる可能性のあるコードを識別しま
               す。+w オプションは、関数が大きすぎてインライン化
               できなかったり、宣言されたプログラム要素が使用され
               ない場合は、警告を出力しなくなりました。これらの警
               告は、ソース上の実際の問題を識別しないので、開発環
               境によっては不適切でした。このような環境では、これ
               らの警告を +w から削除することによって、より広範に
               +w を使用できます。これらの警告は、+w2 オプション
               で使用可能です。

               o    移植性がない

               o    誤りである可能性がある

               o    効率が悪い

               デフォルト:

               +w を指定しない場合、コンパイラは、ほぼ間違いなく
               誤りである構造についてのみ警告を出力します。

               相互の関連性:

               C++ 標準ヘッダーの中には、 +w 付きでコンパイルする
               と警告を出力するものがあります。

     +w2       +w で報告される警告に加えて、技術的な違反について
               の警告を報告します。 +w2 で報告される警告は、危険
               性はないが、プログラムの移植性を損なう可能性がある
               ものです。

               +w2 オプションは、システムヘッダーファイルにおける
               実装依存構造の使用についての警告を出力しなくなりま
               した。システムヘッダーファイルは実装なので、この警
               告は不適切です。これらの警告を +w2 から削除するこ
               とによって、より広範にこのオプションを使用できま
               す。

               警告:

               Solaris ソフトウェアおよび C++ の標準ヘッダーファ
               イルの中には、 +w2 を指定してコンパイルすると警告
               を出力するものがあります。

     -w        警告メッセージを抑止します。

               このオプションにより、コンパイラから警告メッセージ
               が出力されなくなります。ただし警告メッセージの中に
               は、廃止された内容に対する警告など、抑止できないも
               のもあります。

     -Xm       -features=iddollar を使ってください。

     -xa       プロファイル用のコードを生成します。

               コンパイル時にこのオプションが設定された場合、カバ
               レージ (.d) ファイルが存在するディレクトリは、
               TCOVDIR 環境変数によって指定されます。この TCOVDIR
               が設定されていない場合、カバレージ (.d) ファイルは
               同じディレクトリにソースファイルとして残ります。

               このオプションは、古いカバレージファイルとの下位互
               換性のためだけに使用してください。プロファイルの新
               しいスタイルについては、 -xprofile=tcov を参照して
               ください。詳細は、 tcov(1) のマニュアルページと
               『プログラムのパフォーマンス解析』を参照してくださ
               い。

               相互の関連性:

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

               -xa には、 -g との互換性はありません。

               警告:

               コンパイルとリンクを別の段階で行う場合、コンパイル
               時には、リンクの段階で使用したものと同じ -xa オプ
               ションを使用しなければなりません。そうしないと、予
               想外の結果が生じることがまれにあります。

     -xalias_level[= n]
               コンパイラが、型に基づいた別名解析を実行します。

               デフォルト:

               n は any、simple、compatible のいずれかです。

               o -xalias_level

                 -xalias_level を指定しない場合、コンパイラにより
                  -xalias_level=any が設定されます。-xalias_level
                 を値なしで指定する場合、コンパイラにより
                  -xalias_level=compatible が設定されます。

               o -xalias_level=any

                 この解析レベルでは、コンパイラはどの型もほかの任
                 意の型の別名になるとみなします。ただし、このよう
                 に仮定しても、一部の最適化は可能です。

               o -xalias_level=simple

                 コンパイラは、基本型は別名にならないとみなしま
                 す。特に、次のいずれかの基本型の動的な型を持つ記
                 憶オブジェクトは、特定の型の lvalues からのみア
                 クセスされます。

                   * char、signed char、および unsigned char
                   * wchar_t
                   * short int、unsigned short int
                   * int、unsigned int
                   * long int、unsigned long int
                   * long long int、unsigned long long int
                   * float、double、long double
                   * 列挙型
                   * データポインタ型
                   * 関数ポインタ型
                   * データメンバーポインタ型
                   * 関数メンバーポインタ型

                 この場合の lvalues の型は次のとおりです。

                   * オブジェクトの動的な型

                   * オブジェクトの動的な型を
                     constant および volatile で修飾したもの

                   * オブジェクトの動的な型の
                     符号付き、または符号なしの型

                   * オブジェクトの動的な型を
                     constant および volatile で修飾したもの
                     符号付き、または符号なしの型

                   * 上記の型の 1 つをメンバーに含む
                      (副集合体または含まれる共用体
                     のメンバーを再帰的に含む) 集合
                     体型または共用体型

                   * 文字型または無符号文字型

               o -xalias_level=compatible

                 コンパイラは、レイアウト非互換型は別名にならない
                 とみなします。記憶オブジェクトは次の型の lvalues
                 からのみアクセスされます。

                 * オブジェクト型の動的な型

                 * オブジェクト型の動的な型を
                   constant および volatile で修飾したも

                 * オブジェクトの動的な型の
                   符号付き、または符号なしの型

                 * オブジェクトの動的な型を
                   constant および volatile で修飾したもの
                   符号付き、または符号なしの型

                 * 上記の型の 1 つをメンバーに含む
                    (副集合体または含まれる共用体の
                   メンバーを再帰的に含む) 集合体型
                   または共用体型

                 * 動的オブジェクト型の (場合によって
                   は定数またはvolatile修飾) 基本クラス型

                 * 文字型または無符号文字型

                 コンパイラは、すべての参照の型は、対応する動的記
                 憶オブジェクト型とレイアウト互換性があるとみなし
                 ます。2 つの型は、次の条件でレイアウト互換型とな
                 ります。

                 * 2 つの型が同じ型であれば、この
                   2 つは配置互換です。

                 * 2 つの型が constant および volatile 修飾かの
                   点のみが異なる場合、この 2 つは
                   配置互換です。

                 * 符号付の整数型について、対応する
                    (ただし異なる) 符合なしの整数型が
                   存在する場合、これらの対応型は
                   配置互換です。

                 * 2 つの列挙型は、基本型が同じで
                   あれば配置互換です。

                 * 2 つの Plain Old Data (POD) 構造
                   体型は、メンバー数が同じで、対応
                   するメンバーが (順番に) 配置互換で
                   ある場合は、配置互換です。

                 * 2 つの POD 共用体型は、メンバー数
                   が同じで、対応するメンバーが (任意
                   の順序で) 配置互換である場合は、
                   配置互換型です。

                 参照は、動的記憶オブジェクト型とレイアウト非互換
                 になることがありますが、次の状況に制限されます。

                 * POD 共用体が、共通の初期シーケンス
                   を共有する 2 つ以上の POD 構造体を
                   持ち、POD 共用体オブジェクトが現在
                   これらの POD 構造体の 1 つを含んで
                   いる場合、構造体の共通初期部分を調
                   べることができます。2 つの POD 構造
                   体は、対応するメンバーが配置互換で
                   あり、ビットフィールドが該当する場合は、
                    つまたは複数の初期メンバーの
                   シーケンスについて幅が同じであるとき、
                   共通初期シーケンスを共有します。

                 * POD 構造体オブジェクトへのポインタは、
                   reinterpret_cast を使用して適切に変換
                   され、初期メンバーを指します。そのメン
                   バーがビットフィールドの場合は、ビット
                   フィールドが属すユニットを指します。

               相互の関連性:

               コンパイラは、最適化レベル -x02 次では型に基づく別
               名解析を行いません。

     -xar      アーカイブライブラリを作成します。

               テンプレートを使用する C++ のアーカイブをコンパイ
               ルするときには通常、あとでインスタンス化されてテン
               プレートリポジトリに入れられる可能性のあるテンプ
               レート関数をアーカイブの中にあらかじめ入れておく必
               要があります。このオプションは自動的にそれらのテン
               プレートを必要に応じてアーカイブに追加します。

               値:

               -xar を指定して ar -c-r を起動し、スクラッチから
               アーカイブを作成します。

               例:

               次のように実行すると、ライブラリおよびオブジェクト
               ファイルに含まれているテンプレート関数をアーカイブ
               します。

               example% CC -xar -o libmain.a a.o b.o c.o

               警告:

               コマンド行では、テンプレートリポジトリの .o ファイ
               ルは追加しないでください。

               アーカイブを作成するときに、 ar コマンドを直接使用
               することはできません。 CC -xar を使用して、テンプ
               レートのインスタンス化がアーカイブの中に自動的に取
               り込まれるようにする必要があります。

               関連項目:

               ar(1)

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

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

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

               値 (すべてのプラットフォーム):


               値      意味

               generic   このオプションは、大部分のプロセッサに共
                         通する命令セットを使用します。

               generic64 大部分の 64 ビットプラットフォームで良好
                         なパフォーマンスが得られるようにコンパイ
                         ルします (Solaris のみ)。

                         次のオプションはこのオプションと同義で
                         す。
                         -m64 -xarch=generic
                         このオプションは、以前のリリースとの互換
                         性を維持するために提供されています。64
                         ビットコンパイルを指定するには、
                         -xarch=generic64 ではなく -m64 を指定し
                         てください。


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

                         コンパイラは、自身が実行されているシステ
                         ムプロセッサに合った適切な設定を選択しま
                         す。


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

                         このオプションは
                         -m64 -xarch=native と同等で、以前のリ
                         リースとの互換性を維持するために提供され
                         ています。

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

               sparc     SPARC-V9 ISA 向けにコンパイルします。

                         Visual Instruction Set (VIS) およびその
                         他の実装に固有の ISA 拡張のない V9 ISA
                         向けにコンパイルします。このオプションに
                         より、V9 ISA で良好なパフォーマンスを得
                         るためのコードを生成できます。


               sparcvis  VIS を持つ SPARC-V9 ISA 向けにコンパイル
                         します。

                         Visual Instruction Set (VIS) version 1.0
                         および UltraSPARC 拡張を持つ SPARC-V9
                         向けにコンパイルします。このオプションに
                         よって、UltraSPARC アーキテクチャーで良
                         好なパフォーマンスを得るためのコードを生
                         成できます。

               sparcvis2 UltraSPARC III 拡張を持つ SPARC-V9 ISA
                         向けにコンパイルします。

                         このオプションにより、Visual Instruction
                         Set (VIS) version 2.0 と UltraSPARC III
                         拡張を持つ UltraSPARC アーキテクチャー用
                         のオブジェクトコードを生成できます。


               sparcfmaf sparcfmaf バージョンの SPARC-V9 ISA 向け
                         にコンパイルします。

                         このオプションにより、コンパイラは、
                         UltraSPARC 拡張 (Visual Instruction Set
                         (VIS) version 1.0 など) や UltraSPARC-
                         III 拡張 (Visual Instruction Set (VIS)
                         version 2.0 など)、SPARC64 VI の浮動小数
                         点乗加算の拡張に加えて SPARC-V9 命令セッ
                         トの命令を使用できます。

                         -xarch=sparcfmaf は、必ず -fma=fused と
                         組み合わせて使用してください。またコンパ
                         イラが自動的に multiply-add 命令を使用す
                         る機会を見つけるよう、適切な最適化レベル
                         を指定してください。


               v9        -m64 -xarch=sparc と同等です。

                         -xarch=v9 を使用して 64 ビットメモリーモ
                         デルを取得する従来のメイクファイルおよび
                         スクリプトは、-m64 を使用すればよいだけ
                         です。


               v9a       -m64 -xarch=sparcvis と同等で、以前のリ
                         リースとの互換性を維持するために提供され
                         ています。


               v9b       -m64 -xarch=sparcvis2 と同等で、以前のリ
                         リースとの互換性を維持するために提供され
                         ています。

               注:

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

               o sparc および sparcvis を指定してコンパイルされた
                 オブジェクトバイナリファイル (.o) はまとめてリン
                 クし、実行することができますが、そうすることがで
                 きるのは、sparcvis 互換プラットフォーム上だけで
                 す。

               o sparc、sparcvis、および sparcvis2 を指定してコン
                 パイルされたオブジェクトバイナリファイル (.o) は
                 まとめてリンクし、実行することができますが、そう
                 することができるのは、sparcvis2 互換プラット
                 フォーム上だけです。

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


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

               値    意味

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

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

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

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

               amd64     -m64 -xarch=sse2 と同等です (Solaris の
                         み)。
                         -xarch=amd64 を使用して 64 ビットメモ
                         リーモデルを取得する従来のメイクファイル
                         およびスクリプトは、-m64 を使用すればよ
                         いだけです。

               pentium_proa
                          pentium_pro アーキテクチャーに AMD 拡張
                         (3DNow!、3DNow! 拡張、および MMX 拡張)
                         を追加します。

               ssea      32 ビット SSE アーキテクチャーに AMD 拡
                         張 (3DNow!、3DNow! 拡張、および MMX 拡張
                         ) を追加します。

               sse2a     SSE2 アーキテクチャーに AMD 拡張
                         (3DNow!、3DNow! 拡張、および MMX 拡張)
                         を追加します。

               amd64a    -m64 -xarch=sse2a と同等です (Solaris の
                         み)。

               sse3      SSE 命令セットに SSE3 命令セットを追加し
                         ます。

               注:         x86 プラットフォームで、プログラムの一
                         部でも -m64 を使用してコンパイルまたはリ
                         ンクする場合は、プログラムのすべての部分
                         のコンパイルに、これらオプションの 1 つ
                         を併用します。

               デフォルト:
                 -xarch=isa が指定されなかった場合、デフォルトは
                 次のとおりです。
                 SPARC プラットフォーム: -xarch=sparc
                 x86 プラットフォームの場合: -xarch=386

               相互の関連性:
                 このオプションは単独で使用することができますが、
                 -xtarget オプションの展開内容に含まれており、特
                 定の -xtarget オプションで設定された -xarch 値を
                 無効にする目的で使用することもできます。

                 たとえば、 -xtarget=ultra4 は、次のように展開さ
                 れます。
                 -xarch=sparcvis -xcache=64/32/4:8192/128/2
                 -xchip=ultra4

                 次にコマンドの例を示します。
                 example% CC -xtarget=ultra4 -xarch=sparcvis2 ...

                 example% CC -xtarget=ultra4 -xarch=sparcvis2 ...

                 この例で、-xarch=sparcvis2 は、-xtarget=ultra2
                 の展開内容の -xarch に優先します。


               警告:

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

     -xautopar マルチプロセッサに対する自動並列化を有効にします。
               ループの依存関係の解析 (反復データの相互依存関係に
               関するループの解析) と再構成を行います。最適化レベ
               ルが -xO3 より低い場合は、-xO3 の最適化レベルに上
               げられて、警告が発行されます。

               -xautopar は OpenMP 並列化指令を受け付けないことに
               注意してください。

               独自のスレッド管理をしている場合は -xautopar を使
               わないでください。

               実行を高速化するには、マルチプロセッサシステムが必
               要です。シングルプロセッサシステムの場合は、通常、
               生成されたバイナリの実行速度は低下します。

               マルチスレッド環境で並列化プログラムを実行する場合
               は、実行前に OMP_NUM_THREADS 環境変数を設定してく
               ださい。詳細は、『OpenMP API 』を
               参照してください。

               -xautopar を使用し、1 回のステップでコンパイルとリ
               ンクを行うと、リンクで、マイクロタスクライブラリと
               スレッドセーフな C の実行時ライブラリが取り込まれ
               ます。-xautopar を使用して、コンパイルとリンクを
               別々のステップで行う場合は、CC -xautopar も付けて
               リンクする必要があります。

     -xbinopt={prepare|off}
               (SPARC) あとで最適化、変換、および解析が可能な形式
               でバイナリを生成するよう指示します (binopt(1) を参
               照)。このオプションは、実行可能ファイルまたは共有
               オブジェクトの構築に使用でき、有効であるためには、
               最適化レベルを -xO1 以上にする必要があります。この
               オプションを指定して構築すると、バイナリのサイズが
               少し増加します。

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

                example% cc -c -xO1 -xbinopt=prepare a.c b.c

                example% cc -o myprog -xbinopt=prepare a.o

               このオプションは、コンパイルに使用する一部ソース
               コードがない場合でも、残りコードのコンパイルに使用
               できます。その場合は、最終バイナリを作成するリンク
               ステップで、このオプションを使用してください。こう
               した状況では、このオプションを指定してコンパイルし
               たコードのみ最適化、変換、解析できます。

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

     -xbuiltin[={%all|%none}]
               標準ライブラリ呼び出しの最適化を有効にしたり無効に
               したりします。

               デフォルトでは、標準ライブラリのヘッダーで宣言され
               た関数はコンパイラにより通常の関数として扱われま
               す。しかし、いくつかの関数はコンパイラにより、組み
               込みとして認識することができます。組み込みとして扱
               われた場合、コンパイラはより効果的なコードを生成で
               きます。例えば、コンパイラは、いくつかの関数には副
               作用がないと認識でき、常に同じ入力から同じ出力を戻
               します。コンパイラにより直接インラインに生成される
               関数もあります。オブジェクトファイル内のコンパイラ
               のコメントを読み取って、コンパイラが実際に置換を行
               う関数を決定する方法については、er_src(1) のマニュ
               アルページを参照してください。

               -xbuiltin=%all はコンパイラにできるだけ多くの組み
               込み標準関数を認識させようとします。認識された関数
               の正確なリストは、コンパイラコードジェネレータの
               バージョンにより変化します。

               -xbuiltin=%none はデフォルトの動作です。

               デフォルト:

               -xbuiltin オプションが指定されていない場合、コンパ
               イラは -xbuiltin=%none を想定します。 -xbuiltin の
               みが指定されている場合は、コンパイラは
               -xbuiltin=%all を想定します。

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

               このオプションによって、特定のキャッシュ属性が使用
               されるわけではありません。

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


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

               o   generic


               o   native

               o   s1/l1/a1

               o   s1/l1/a1:s2/l2/a2

               o   s1/l1/a1:s2/l2/a2:s3/l3/a3

               つまり、
               -xcache={generic | s1/l1/a1[:s2/l2/a2[:s3/l3/a3]]}
               のように指定します。si/li/ai は、次のように定義さ
               れています。

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

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

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

               たとえば、 i=1 により、レベル 1 のキャッシュ属性、
               s1/l1/a1 が指定されます。

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

               値               意味

               generic        ほとんどの SPARC プロセッサ上で良好
                              なパフォーマンスが得られるキャッ
                              シュ属性を定義します。

                              ほとんどの SPARC 上で良好なパフォー
                              マンスが得られ、どのプロセッサ上で
                              もパフォーマンスが低下することがな
                              いような、キャッシュ属性を使用する
                              ようにコンパイラに指示する、デフォ
                              ルトの値です。


               native         ホストの環境で最高のパフォーマンス
                              を得るためのパラメータを設定しま
                              す。


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

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

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

               たとえば、-xcache=16/32/4:1024/32/1 の設定内容は次
               のとおりです。

               レベル 1:                レベル 2:

               16K バイト               1024K バイト

               ラインサイズ 32 バイト
                                  ラインサイズ 32 バイト

               4 ウェイアソシアティブ
                                  ダイレクトマッピング

     -xcg{89|92}
               (SPARC) 廃止。このオプションの使用は推奨しません。
               最新の Solaris オペレーティングシステムはもう
               SPARC V7 アーキテクチャーをサポートしていません。
               このオプションを指定してコンパイルすると、最新の
               SPARC プラットフォームでは実行速度が低下するコード
               が生成されます。

     -xchar=o  このオプションは、文字型が符号なしとして定義されて
               いるシステムからのコードを容易に移植できるようにす
               るためだけに提供されています。こうしたシステムから
               移植するのでなければ、このオプションは使用しないで
               ください。文字型の符号に依存するコードだけが、明示
               的に符号付き、符号なしを指定して書き直される必要が
               あります。

               値:

               o は次のいずれか 1 つで置き換えることができます。

               o signed: 文字定数および変数を、符号付きとして宣言
                 されているものとして取り扱います。このことでコン
                 パイルされたコードの動きに影響が生じますが、ライ
                 ブラリルーチンの動きには影響ありません。

               o s: signed と同じです。

               o unsigned: 文字定数および変数を、符号なしとして宣
                 言されているものとして取り扱います。このことでコ
                 ンパイルされたコードの動きに影響が生じますが、ラ
                 イブラリルーチンの動きには影響ありません。

               o u: unsigned と同じです。

               デフォルト:
               -xchar を指定しない場合、コンパイラは -xchar=s と
               仮定します。-xchar を指定して、値は指定しなかった
               場合、コンパイラは -xchar=s と仮定します。

               相互の関連性:

               -xchar オプションは、-xchar を使ってコンパイルされ
               たコードだけのために型文字の値の範囲を変更します。
               このオプションは、どのシステムルーチン、ヘッダー
               ファイルでもその中の型文字の値の範囲は変更しませ
               ん。とくに limits.h で定義される CHAR_MAX、
               CHAR_MINI の値はこのオプションが指定されていても変
               わりません。このため、CHAR_MAX と CHAR_MIN は、
               char で符号化できる値の範囲を表さなくなります。

               警告:

               -xchar を使用する場合、事前定義されたシステムマク
               ロに対する char の比較には、特に注意してください。
               マクロの値には符号付きのものもあるからです。これ
               は、マクロを通してアクセスされるエラーコードを返す
               どのルーチンにもほとんど共通なことです。エラーコー
               ドはふつう負の値なので、こうしたマクロの値と char
               とを比較すると、結果は常に偽です。負の数が符号なし
               型の値と等しくなることは決してありません。

               ライブラリを介してエクスポートされるどのインタ
               フェースについても、 -xchar を使ってルーチンをコン
               パイルすることは、絶対にやめてください。Solaris
               ABI では char 型を符号付きと指定しており、それに
               従ってシステムライブラリが動作します。char 型を符
               号なしとして扱う場合のシステムライブラリへの影響は
               幅広くテストされてはいません。このオプションを使用
               する代わりに、コード自体を変更して、char 型が符号
               付きであるか符合なしであるかに依存しないようにして
               ください。char 型の符号は、コンパイラやオペレー
               ティングシステムによって異なります。

     -xcheck[=n]
               (SPARC ) スタックオーバーフローの
               実行時チェックを行います。

               値:

               n は次のいずれかの値です。


               値               意味

               %all           すべてのチェックを実行します。

               %none          チェックを行いません。
               stkovf         単一スレッドプログラムにはメインス
                              レッドのスタックオーバーフローの実
                              行時チェックを、マルチスレッドプロ
                              グラムにはスレーブスレッドのスタッ
                              クオーバーフローの実行時チェックを
                              行います。スタックオーバーフローが
                              検出されると、SIGSEGV 障害が発生し
                              ます。アプリケーションが、スタック
                              オーバーフローが原因で発生した SIG-
                              SEGV をほかのアドレス空間違反の処理
                              とは異なる方法で処理する必要がある
                              場合は、sigaltstack(2) を参照してく
                              ださい。

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

               相互の関連性:

               -xcheck を引数なしで指定すると、コンパイラはデフォ
               ルトで -xcheck=%none を設定します。

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

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

               ターゲットとなるプロセッサを指定することによって、
               タイミング属性を指定します。

               このオプションは、次の内容に影響を与えます。

               o 命令の順番 (スケジューリング)

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

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

               次に SPARC プラットフォームに適用される -xchip の
               値を示します。

               値          意味

               generic   SPARC プロセッサ上で良好なパフォーマンス
                         を得るための、タイミング属性を使用しま
                         す。

                         ほとんどの SPARC 上で良好なパフォーマン
                         スが得られ、どのプロセッサ上でもパフォー
                         マンスが低下することがないような、タイミ
                         ング属性を使用するようにコンパイラに指示
                         する、デフォルトの値です。

               native    ホストの環境で最高のパフォーマンスを得る
                         ためのパラメータを設定します。

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

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

               super2    SuperSPARC II プロセッサ用に最適化しま
                         す。

               micro     MicroSPARC (TM) プロセッサ用に最適化しま
                         す。

               micro2    MicroSPARC II プロセッサ用に最適化しま
                         す。

               hyper     HyperSPARC (TM) プロセッサ用に最適化しま
                         す。

               hyper2    HyperSPARC II プロセッサ用に最適化しま
                         す。

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

               ultra2    UltraSPARC II プロセッサ用に最適化しま
                         す。

               ultra2e   UltraSPARC IIe プロセッサ用に最適化しま
                         す。

               ultra2i   UltraSPARC IIi プロセッサ用に最適化しま
                         す。

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

               ultra3cu  UltraSPARC IIIcu プロセッサ用に最適化し
                         ます。

               ultra3i   UltraSPARC IIIi プロセッサ用に最適化しま
                         す。

               ultra4    UltraSPARC IV プロセッサ用に最適化しま
                         す。

               ultra4plus
                         UltraSPARC IVplus プロセッサ用に最適化し
                         ます。

               ultraT1   UltraSPARC T1 プロセッサ用に最適化しま
                         す。

               ultraT2   UltraSPARC T2 プロセッサ用に最適化しま
                         す。

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

               値          意味

               generic   ほとんどの x86 プロセッサ上で良好なパ
                         フォーマンスを得るためのタイミング属性を
                         使用します。

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

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

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

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

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

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

               pentium3  Pentium 3 型のプロセッサ用に最適化しま
                         す。

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

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

               注: 共用オブジェクトを構築するには -xcode=pic13 ま
               たは -xcode=pic32 を指定することを強く推奨します。
               -xarch=v9 -xcode=abs64、および -xarch=v8
               -xcode=abs32 で使用可能な共用オブジェクトを構築す
               ることは可能ですが、効率的ではありません。
               -xarch=v9 -xcode=abs32 または -xarch=v9
               -xcode=abs44 を使用して構築された共用オブジェクト
               は動作しません。


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

               値          意味

               abs32     高速で範囲の限定された 32 ビット絶対アド
                         レスを生成します。コード、データ、bss を
                         合計したサイズは 2**32 (2 の 32 乗) バイ
                         トに制限されます。これは 32 ビットアーキ
                         テクチャーでのデフォルトです。

               abs44     SPARC: 適度な速度と範囲の 44 ビット絶対
                         アドレスを生成します。コード、データ、
                         bss を合計したサイズは 2**44 バイトに制
                         限されます。これは、64 ビットアーキテク
                         チャーでのデフォルトです。動的 (共有) ラ
                         イブラリには、このオプションは使わないで
                         ください。

               abs64     SPARC: 低速で範囲の限定されない 64 ビッ
                         ト絶対アドレスを生成します。64 ビット
                         アーキテクチャーでだけ利用できます。

               pic13     高速で範囲の限定された位置独立コード (小
                         規模モデル) を生成します。 -Kpic と同義
                         です。32 ビットアーキテクチャーでは最大
                         2**11 まで、64 ビットアーキテクチャーで
                         は最大 2**10 までの固有の外部シンボルを
                         参照できます。

               pic32     低速で範囲の限定されない位置独立コード (
                         大規模モデル) を生成します。 -KPIC と同
                         義です。32 ビットアーキテクチャーでは最
                         大 2**30 まで、64 ビットアーキテクチャー
                         では最大 2**29 までの固有の外部シンボル
                         を参照できます。

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

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

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

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

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

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

               デフォルト:

               32 ビットアーキテクチャーでのデフォルトは
               -xcode=abs32 です。

               64 ビットのプロセッサでのデフォルトは -xcode=abs44
               です。

               警告:

               単独のステップでコンパイルおよびリンクを行った場
               合、コンパイルステップとリンクステップと同じ
               -xarch オプションを使用する必要があります。

     -xcrossfile[=n]
               (SPARC ) ソースファイル間の最適化
               とインライン化を有効にします。-xcrossfile は、コン
               パイル時に有効となり、各コンパイル時にコマンドで指
               定されたファイルのみに作用します。例として次のコマ
               ンド行での動作を説明します。

               example% CC -xcrossfile -xO4 -c f1.cc f2.cc
               example% CC -xcrossfile -xO4 -c f3.cc f4.cc

               f1.cc  と f2.cc 間、および f3.cc と f4.cc
                間でモジュール間の最適化が行われます。f1.cc  と
               f3.cc 間、または f4.cc 間では、最適化は行われませ
               ん。

               値:

               n には、次のいずれかの値を指定します。


               値               意味

               0              ソースファイル間の最適化とインライ
                              ン化を実行しません。

               1              ソースファイル間の最適化とインライ
                              ン化を実行します。

               通常、コンパイラの解析の範囲は、コマンド行上の各
               ファイルに制限されます。たとえば、 -xO4 オプション
               を指定した場合、自動インライン化は同じソースファイ
               ル内で定義および参照されるサブプログラムに制限され
               ます。 -xcrossfile または -xcrossfile=1 を指定した
               場合、コマンド行上のすべてのファイルが単一のソース
               ファイルに連結されたかのように解析されます。

               ただし、-S オプションを指定することによってアセン
               ブリのソースを生成するようコンパイラに指示している
               場合、このオプションは何の働きもしません。アセンブ
               リ (.s) ファイルは、ソースファイルにまたがる最適化
               およびインライン化に関係しません。

               デフォルト:

               -xcrossfile を指定しない場合、 -xcrossfile=0 が仮
               定され、ソースファイル間の最適化とインライン化は実
               行されません。 -xcrossfile は -xcrossfile=1 と同義
               です。

               相互の関連性:

               -xcrossfile オプションは、 -xO4 または -xO5と一緒
               に使用したときだけ有効です。

               警告:

               インライン化の可能性があるため、このコンパイルから
               生成されたファイルは相互に依存します。したがって、
               プログラムにリンクするときは、1 つのユニットとして
               使用する必要があります。あるルーチンを変更し、ファ
               イルを再コンパイルする場合、すべてのファイルを再コ
               ンパイルする必要があります。結果として、このオプ
               ションを使用すると、makefile の構造に影響を与えま
               す。

               関連項目:

               -xldscope、-xipo

     -xdebugformat=[stabs|dwarf]
               C++ コンパイラのデバッガ情報の形式は、stabs 形式か
               ら dwarf 形式に移行しつつあります。このリリースの
               デフォルト値は -xdebugformat=stabs です。

               デバッグ情報を読み取るソフトウェアがある場合は、今
               回からそのようなツールを stab 形式から dwarf 形式
               に移すためのオプションが加わりました。

               このオプションは、ツールを移植する場合に新しい形式
               を使用する方法として使用してください。デバッガ情報
               を読み取るソフトウェアがあるか、ツールがいずれかの
               形式のデバッガ情報を必要するのでなければ、このオプ
               ションを使用する必要はありません。

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

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

               -xdebugformat を指定しなかった場合は、
               -xdebugformat=stabs と見なされます。このオプション
               には、引数が 1 つ必要です。

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

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

               これは暫定的なインタフェースであるため、マイナーリ
               リースであっても、今後のリリースで互換性の維持され
               ない方法で変更されることがあります。

               stab と dwarf のどちらも、特定のフィールドまたは値
               の詳細が変化してきています。

               詳細は、dumpstabs(1) および dwarfdump(1) のマニュ
               アルページも参照してください。

     -xdepend[=[yes|no] ]
               反復データの相互依存関係に関するループの解析をし
               て、ループを再構成します。

               ループの再構成では、ループ相互交換、ループ融合、ス
               カラー置換、「使用されていない」配列割り当ての削除
               などが行われます。最適化レベルが -xO3 より低い場合
               は、-xO3 の最適化レベルに上げられて、警告が発行さ
               れます。

               -xdepend が指定されなかった場合のデフォルトは
               -xdepend=no で、これは、データの依存関係に関する
               ループの解析をコンパイラが行わないことを意味しま
               す。 -xdepend が引数なしで指定された場合、コンパイ
               ラはこのオプションを -xdepend=yes に設定し、これ
               は、コンパイラがデータの依存関係に関するループの解
               析を行うことを意味します。

               -xautopar には、依存関係の解析が含まれ、この解析
               は、コンパイル時に行われます。

               依存関係の解析は、シングルプロセッサシステムで役立
               つことがあります。ただし、シングルプロセッサシステ
               ムで -xdepend を試す場合は、 -xautopar と併用しな
               いでください。併用すると、マルチプロセッサシステム
               用の -xdepend 最適化が行われます。

               関連項目: -xprefetch_auto_type

     -xdumpmacros[=value[,value...]]
               プログラム中でのマクロの動きを確認したい場合に、こ
               のオプションを使用します。定義済みマクロ、解除済み
               マクロ、実際の使用状況といった情報が得られます。結
               果は、マクロの処理順に基づいて標準エラー(stderr)
               に出力されます。 -xdumpmacros オプションは、ファイ
               ルの終わりまで、あるいは dumpmacros か
               end_dumpmacrosoption のプラグマによって上書きされ
               るまで、有効です。

               値:


               値               意味

               [no%]defs      すべての定義済みマクロを出力します[
                              しません]。

               [no%]undefs    すべての解除済みマクロを出力します[
                              しません]

               [no%]use       使用されているマクロの情報を出力し
                              ます[しません]

               [no%]loc       定義済み、解除済みのもの、使用され
                              ているものについて、場所 (パス名と
                              行番号) を出力します

               [no%]conds     条件付き指令で使用されているマクロ
                              の使用情報を出力します[しません]。

               [no%]sys       システムヘッダーファイルのマクロに
                              ついて、すべての定義済みマクロ、解
                              除済みマクロ、使用情報を出力します[
                              しません] 。

               %all           このオプションを
                              -xdumpmacros=defs,undefs,use,loc,conds,sys
                              に設定します。この引数の効果的な使
                              い方は、その他の引数の [no%] 形とと
                              もに使うことです。たとえば
                              -xdumpmacros=%all,no%sys は出力から
                              ヘッダーマクロを排除しますが、その
                              他のマクロについては情報を提供しま
                              す。

               %none          マクロ情報はまったく出力しません。



               このオプションの値は追加されていきます。したがって
               -xdumpmacros=sys -xdumpmacros=undefs を指定すると
               -xdumpmacros=undefs,sys と同じことになります。

               注: サブオプション loc、conds、sys は defs、
               undefs、use の各オプションの修飾子と同じです。
               loc、conds、sys はそれだけでは効果はありません。た
               とえば、 -xdumpmacros=loc,conds,sys には効果はあり
               ません。

               デフォルト:

               引数を付けずに -xdumpmacros を指定すると、それは
               -xdumpmacros=defs,undefs,sys という意味になりま
               す。 -xdumpmacros を指定しない場合、デフォルトは
                -xdumpmacros=%none となります。

     -xe       構文と意味のエラーだけをチェックします。 -xe と指
               定すると、コンパイラはオブジェクトコードを作成しま
               せん。 -xe の出力は、直接 stderr ファイルに送られ
               ます。

               コンパイルで作成されるオブジェクトファイルが必要で
               ない場合は、 -xe オプションを使用します。たとえ
               ば、コードの部分部分を削除しながらエラーメッセージ
               の原因を特定しようとしている場合、-xe を使えば編集
               とコンパイルのサイクルをより早くできます。

     -xF[=v]   -xF オプションは、リンカーによる関数と変数の最適な
               順序の並べ替えを有効にします。

               このオプションは、コンパイラに対して関数、データ変
               数を細分化された別々のセクションに配置するよう指示
               し、それによってリンカーが、リンカーの -M オプショ
               ンで指定されたマップファイル内の指示を使って、プロ
               グラムのパフォーマンスが最適化されるようにこれらの
               セクションを整理します。一般にこの最適化は、ページ
               フォルト時間がプログラム実行時間の大半を占める場合
               にのみ効果があります。

               最適なパフォーマンスを目指す関数および変数の整理に
               は、次の操作が必要です。

               1. -xF でコンパイル、リンクします。

               2. 関数のマップファイルの生成に関する
               マニュアルの指示に従って、ま
               たデータのマップファイルの生成に関する
               の指示に従います。

               3. -M オプションを使用して新しいマップファイルで再
               リンクします。

               4. アナライザの下で再度実行して、改善を確認しま
               す。

               値:

               v は次のいずれかの値になります。

               値               意味

               [no%]func      関数を別々のセクションに細分化しま
                              す[しません]。

               [no%]gbldata   大域的なデータ (外部リンケージのあ
                              る変数) を別々のセクションに細分化
                              します[しません]。

               [no%]lcldata   局所データ (内部リンケージのある変
                              数) を別々のセクションに細分化しま
                              す[しません]。

               %all           関数、大域的なデータ、局所データを
                              断片化します。

               %none          何も断片化しません。

               デフォルト:

               -xF を指定しないと、デフォルトは -xF=%none となり
               ます。引数を伴わないで -xF を指定した場合、デフォ
               ルトは -xF=%none,func となります。

               相互の関連性:

               -xF=lcldata を使用すると、一部のアドレス計算の最適
               化が禁止されるので、このフラグは実験結果が妥当であ
               る場合にのみ使用するようにしてください。

               関連項目:

               analyzer(1)debugger(1)ld(1)

     -xhelp=flags
               各コンパイラのフラグについて簡単な説明を表示しま
               す。

     -xhelp=readme
               README オンラインファイルの内容を表示します。
               README ファイルのページングには、環境変数 PAGER で
               指定されているコマンドが使用されます。 PAGER が設
               定されていない場合、デフォルトのページングコマンド
               more が使用されます。

     -xhwcprof[={enable|disable}]
               (SPARC) データ領域プロファイリング用のコンパイラサ
               ポートを有効にするには、-xhwcprof オプションを使用
               します。

               -xhwcprof を有効にすると、コンパイラは、ツールがプ
               ロファイリング対象のロード命令およびストア命令を、
               それらの命令の参照するデータ型および構造体メンバー
               を
                (-g で生成されるシンボリック情報とともに) 関連付
               けるのに役立つ情報を生成します。プロファイルデータ
               を、ターゲットの命令領域ではなくデータ領域に関連付
               けて、命令プロファイリングだけでは簡単には得られな
               い動作に対する見通しが得られるようにします。

               -xhwcprof で特定の一組オブジェクトファイルをコンパ
               イルすることができますが、このオプションが最も有用
               なのは、アプリケーションのすべてのオブジェクトファ
               イルに適用した場合です。そうすることで、アプリケー
               ションのオブジェクトファイルに分散しているすべての
               メモリー参照を特定し、相関させることができます。

               コンパイルとリンクを個別に行う場合は、リンク時にも
               -xhwcprof を使用してください。-xhwcprof に対する今
               後の拡張で、リンク時の使用が必要になることがありま
               す。『C 』のコンパイル時とリンク時
               の両方で指定するコンパイラオプションの全一覧を参照
               してください。

               同じコマンド行上の -xhwcprof=enable または
               -xhwcprof=disable の指定は、それより前にあるすべて
               の -xhwcprof 指定に優先します。

               デフォルトでは、-xhwcprof は無効です。引数なしの
               -xhwcprof の指定は、-xhwcprof=enable と同等です。

               -xhwcprof を使用する場合は、最適化を有効にして、デ
               バッグデータ形式を dwarf (-xdebugformat=dwarf) に
               設定します。ただし、このリリースの Sun Studio コン
               パイラでは dwarf がデフォルトです。

               -xhwcprof と -g を組み合わせると、-xhwcprof と -g
               を単独で指定した場合に増加する容量の合計以上に、一
               時ファイルの容量要件が増大します。

               次は example.cc をコンパイルするコマンド例です。
               ハードウェアカウンタプロファイリングと、DWARF シン
               ボルを使用したデータ型および構造体メンバーのシンボ
               リック解析のサポートを指定しています。

               example% CC -c -O -xhwcprof -g example.cc

               ハードウェアカウンタベースのプロファイリングの詳細
               は、『』を参照してく
               ださい。

     -xia      (SPARC ) 適切な区間演算ライブラリ
               とリンクして、必要な浮動小数点環境を設定します。

               -xia オプションは、次のように展開されるマクロで
               す。
               -fsimple=0 -ftrap=%none -fns=no -library=interval

               相互の関連性:

               区間演算ライブラリを使用するには、 <suninterval.h>
               をインクルードしてください。

               区間演算ライブラリを使用する場合は、 libC、 Cstd、
               iostreams のいずれかのライブラリが必要です。上記の
               ライブラリを組み込む方法については、 -library オプ
               ションの説明を参照してください。

               警告:

               区間演算を使用する場合、 -fsimple、 -ftrap、 -fns
               のいずれかに、それとは異なる値を指定すると、プログ
               ラムが誤った動作をすることがあります。

               C++ 区間演算は実験的で発展途上にある機能です。その
               ため、個々の内容はリリースごとに変化する可能性があ
               ります。

               関連項目:

               C++IntervalArithmeticProgrammingReference
               Interval Arithmetic Solves Nonlinear Problems
               While Providing Guaranteed Results
               (http://www.sun.com/software/sundev/news/features/intervals.html),
               -library

     -xinline[=func_spec[,func_spec...]]
               -xO3 またはそれ以上で、ユーザーが記述したルーチン
               の中でオプティマイザによりインライン化できるものを
               指定します。

               値:

               func_spec は次のいずれかの値です。
               値                    意味

               %auto               最適化レベル -xO4 またはそれ以
                                   上において自動インライン化を有
                                   効にします。この引数はオプティ
                                   マイザに対し、選択した関数をイ
                                   ンライン化できることを通達しま
                                   す。%auto を指定しないと、
                                   -xinline=[no%]func_name により
                                   コマンド行に明示的インライン化
                                   が指定された場合に、通常は自動
                                   インライン化が無効になることに
                                   注意してください。

               func_name           オプティマイザによる関数のイン
                                   ライン化を強く必要とします。関
                                   数が、外部関数 "C" として宣言
                                   されていない場合、func_name の
                                   値は符号化する必要があります。
                                   実行可能ファイルの nm コマンド
                                   を使用して、符号化された関数名
                                   を検索することができます。外部
                                   関数 "C" として宣言された関数
                                   名は、コンパイラにより符号化さ
                                   れません。

               no%func_name        リストのルーチン名の前に no%
                                   をつけると、そのルーチンのイン
                                   ライン化は抑止されます。
                                   func_name に対する符号化名に関
                                   する規則は、同様に
                                   no%func_name に適用されます。
               コンパイルされたファイルのルーチンのみが、
               -xcrossfile[=1] を使用していないかぎり、インライン
               化されたものと考えられます。オプティマイザは、これ
               らのルーチンの中でインライン化に適切なものを決定し
               ます。

               デフォルト:

               -xinline オプションが指定されていない場合、コンパ
               イラは -xinline=%auto を仮定します。 -xinline= が
               引数なしで指定された場合、最適化レベルに関わらず、
               関数はインライン化されません。

               例:

               int foo() で宣言された関数のインライン化を無効にす
               る際に、自動インライン化を有効にします。

               example% CC -xO5 -xinline=%auto,no%__1cDfoo6F_i_
               -c a.cc を使用してください。
               int foo() として宣言された関数のインライン化を強く
               必要とし、その他のすべての関数をインライン化の候補
               にするため、

               example% CC -xO5 -xinline=%auto, __1cDfoo6F_i_ -c
               a.cc を使用してください。

               int foo() として宣言される関数のインライン化を強く
               必要とし、その他の関数のインライン化を許可しないた
               めに、

               example% CC -xO5 -xinline=__1cDfoo6F_i_ -c a.cc を
               使用してください。

               相互の関連性:

               -xinline オプションは -xO3 の下の最適化レベルには
               影響しません。 -xO4 およびそれ以上では、オプティマ
               イザはインライン化が必要な関数を決定します。-xin-
               line が指定されていない場合も同様です。-xO4 または
               それ以上では、コンパイラは、インライン化されている
               場合にパフォーマンスを改善する関数を決定しようとし
               ます。

               次の条件のいずれかが適用される場合は、ルーチンはイ
               ンライン化されません。警告は省略されません。

                    o 最適化は -xO3 以下です。

                    o ルーチンが見つかりません。

                    o インライン化は有益または安全ではありませ
                      ん。

                    o コンパイルされたファイルにソースが存在しま
                      せん。または、-xcrossfile[=1] を使用した場
                      合、コマンド行で指定されたファイルにソース
                      が存在しません。

                    警告:

                    -xinline で関数のインライン化を行った場合、実
                    際にパフォーマンスが悪くなる可能性がありま
                    す。

               関連項目:

               -xldscope

     -xinstrument=[no%]datarace]

               スレッドアナライザによる解析用にプログラムをコンパ
               イルし、計測機構を組み込むには、このオプションを指
               定します。スレッドアナライザの詳細は、tha(1) を参
               照してください。

               計測機構の組み込まれたプログラムは、パフォーマンス
               アナライザから collect -r races を使用して実行し、
               データ競合検出用実験を作成することができます。計測
               機構の組み込まれたコードはスタンドアロン実行できま
               すが、実行速度が遅くなります。

               値


               値               意味

               instrument     スレッドアナライザによる解析用の
                              コードを作成し、__THA_NOTIFY を定義
                              します。

               no%instrument  デフォルトは、この設定です。スレッ
                              ドアナライザによる解析用のコードを
                              提供せず、__THA_NOTIFY を定義しませ
                              ん。

               相互の関連性

               コンパイルとリンクを個別に行う場合は、コンパイルと
               リンクの両方で -xinstrument=datarace を指定してく
               ださい。

               このオプションは、プリプロセッサトークンの
               __THA_NOTIFYを定義します。#ifdef __THA_NOTIFY を指
               定することで、libtha(3) ルーチンの呼び出しを保護で
               きます。

               このオプションはまた、-g0 も設定します。

               警告

               引数なしで -xinstrument を指定することはできませ
               ん。

     -xipo[={0|1|2}]
               相互手続き最適化を実行します。

               -xipo オプションは相互手続き解析を起動してプログラ
               ムの部分的な最適化を実行します。 -xcrossfile とは
               異なり、-xipo はリンクの段階ですべてのオブジェクト
               ファイルに最適化を行います。最適化はコンパイルコマ
               ンドが対象とするソースファイルのみに限定されませ
               ん。ただし、-xcrossfile と同様、-xipo で行われるプ
               ログラム全体の最適化には、アセンブラ (.s) ソース
               ファイルは含まれません。

               -xipo オプションは大規模な複数ファイルのアプリケー
               ションをコンパイルおよびリンクする際に特に有効で
               す。このフラグでコンパイルされたオブジェクトファイ
               ルには、コンパイル時に生成された解析情報が含まれて
               おり、これによって、ソースおよび事前コンパイルされ
               たプログラムファイルの相互手続き解析ができるように
               なります。ただし、解析と最適化は -xipo でコンパイ
               ルされたオブジェクトファイルに限定され、ライブラリ
               やオブジェクトファイルには拡張できません。

               値:


               値               意味

               0              相互手続き最適化を実行しません。

               1              相互手続き最適化を実行します。

               2              相互手続き別名解析と、記憶域割り当
                              ておよびレイアウトの最適化を実行し
                              て、キャッシュを改善します。
               デフォルト:

               -xipo が指定されない場合、-xipo=0 が仮定されます。

               -xipo が指定される場合、-xipo=1 が仮定されます。

               例:

               次の例では同じ行でコンパイルとリンクを行っていま
               す。

               example% CC -xipo -xO4 -o prog part1.cc part2.cc
               part3.cc

               オプティマイザは 3 つのすべてのソースファイルの、
               ファイルをまたいだインライン化を実行します。これは
               リンクの最終段階で実行されるので、ソースファイルの
               コンパイルを単一のコマンドで行う必要はありません。
               -xipo オプションが指定された別々のコマンドでコンパ
               イルすることもできます。

               次の例ではコンパイルとリンクを別々のステップで実行
               しています。

               example% CC -xipo -xO4 -c part1.cc part2.cc

               example% CC -xipo -xO4 -c part3.cc

               example% CC -xipo -xO4 -o prog part1.o part2.o
               part3.o

               コンパイル段階で生成されたオブジェクトファイルに
               は、コンパイル時に生成された追加の解析情報が含まれ
               ます。これによって、リンク段階でファイルをまたいだ
               最適が行われるようになります。

               相互の関連性:

               -xipo オプションは少なくとも最適化レベル -xO4 を必
               要とします。同じコンパイル行で -xipo オプションお
               よび -xcrossfile オプション両方を使用できません。

               警告:

               コンパイルおよびリンクが別々のステップで行う際に
               は、両方のステップで -xipo を指定する必要がありま
               す。-xipo を指定しないでコンパイルしたオブジェクト
               は、-xipo でコンパイルしたオブジェクトに自由にリン
               クできます。次の例で示すように -xipo でコンパイル
               された場合でも、ライブラリは、ファイルをまたいだ相
               互手続き解析の対象とはなりません。

                example% CC -xipo -xO4 one.cc two.cc three.cc

                example% CC -xar -o mylib.a one.o two.o three.o


                example% CC -xipo -xO4 -o myprog main.cc four.cc
               mylib.a

               この例では、相互手続き最適化は one.cc、two.cc と
               three.cc の間、および main.cc と four.cc の間で行
               われ、main.cc あるいは four.cc と mylib.a のルーチ
               ンの間では行われません。最初のコンパイルで未定義シ
               ンボルに関する警告が生成されますが、相互手続き最適
               化は、コンパイルとリンクの両方の段階で行われるた
               め、正常に実行されます。

               -xipo オプションは、ファイルの最適化を実行するため
               に必要な追加情報により、かなり大規模なオブジェクト
               ファイルを生成します。しかし、この追加情報は最後の
               実行可能バイナリファイルの一部にはなりません。実行
               可能プログラムの大きさの増加分は、追加された最適化
               によるものです。

               -xipo=2 による相互手続き解析を行うべきでないケース

               相互手続き解析では、コンパイラは、リンク段階でオブ
               ジェクトファイル群を走査しながら、プログラム全体の
               解析と最適化を試みます。このとき、コンパイラは、こ
               のオブジェクトファイル群に定義されているすべての
               foo() 関数 (またはサブルーチン) に関して次の 2 つ
               のことを仮定します。

               (1) foo() は、実行時、このオブジェクトファイル群の
               外部で定義されている別のルーチンによって明示的に呼
               び出されない。

               (2) オブジェクトファイル群内のルーチンからの foo()
               呼び出しが、そのオブジェクトファイル群の外部に定義
               されている別のバージョンの foo() からの割り込みを
               受けない。

               仮定 (1) が当てはまらない場合は、コンパイルで
               -xipo=2 を使わないでください。

               仮定 (2) が当てはまらない場合は、コンパイルで
               -xipo=1 および -xipo=2 を使わないでください。

               1 例として、独自のバージョンの malloc() で関数
               malloc() に割り込むケースを考えてみましょう。
               -xipo=2 を使ってコンパイルする場合、その独自のコー
               ドとリンクされる malloc() を参照する、あらゆるライ
               ブラリのあらゆる関数のコンパイルで -xipo=2 を使用
               する必要があるとともに、リンクの段階でそれらのオブ
               ジェクトファイルが必要になります。システムライブラ
               リでは、このことが不可能なことがあり、このため、独
               自のバージョンの malloc() のコンパイラに -xipo=2
               を使ってはいけません。

               もう 1 つの例として、別々のソースファイルにある
               foo() および bar() という 2 つの外部呼び出しを含む
               共有ライブラリを構築するケースを考えてみましょう。
               また、bar() は foo() を呼び出すと仮定します。foo()
               が実行時に割り込みを受ける可能性がある場合、foo()
               および  bar() のソースファイルのコンパイルで
               -xipo=1 や -xipo=2 を使ってはいけません。さもない
               と、foo() が bar() 内にインライン化され、不正な結
               果になる可能性があります。

     -xipo_archive[=a]
               -xipo_archive オプションは、実行可能ファイルを生成
               する前に、 -xipo を指定してコンパイルされてアーカ
               イブライブラリ (.a) に存在するオブジェクトファイル
               とともに、リンカーに渡されたオブジェクトファイルを
               最適化します。このライブラリに含まれていて、コンパ
               イル中に最適化されたオブジェクトファイルはすべて、
               その最適化したバージョンに置き換えられます。

               a は、下記のどれかです。

               writeback
                コンパイラは、実行可能ファイルを生成する前に、
                -xipo を指定してコンパイルされてアーカイブライブ
                ラリ (.a) に存在するオブジェクトファイルととも
                に、リンカーに渡されたオブジェクトファイルを最適
                化します。このライブラリに含まれていて、コンパイ
                ル中に最適化されたオブジェクトファイルはすべて、
                最適化したバージョンに置き換えられます。

                共通のアーカイブライブラリセットを使用する並列リ
                ンクの場合は、リンクの実行前に、アーカイブライブ
                ラリの各リンク専用のコピーを作成し、それらのコ
                ピーが最適化されるようにしてください。

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

                -xipo_archive=readonly オプションは、リンク時に指
                定されたアーカイブライブラリ内のオブジェクトファ
                イルに対するモジュール間インライン化および相互手
                続きデータフロー解析を有効にします。ただし、モ
                ジュール間インライン化によってほかのモジュールに
                挿入されたコードを除き、アーカイブライブラリの
                コードのモジュール間の最適化が行われるわけではあ
                りません。

                アーカイブライブラリ内のコードにモジュール間最適
                化を適用するには、 -xipo_archive=writeback が必要
                です。このオプションを指定すると、コードの抽出元
                のアーカイブライブラリの内容が変更されます。

               none
                デフォルト。アーカイブファイルの処理はありませ
                ん。コンパイラは、 -xipo を使用してコンパイルさ
                れ、リンク時にアーカイブライブラリから抽出された
                たオブジェクトファイルにモジュール間インライン化
                やその他のモジュール間最適化を適用しません。アー
                カイブファイルの処理を行うには、リンク時に -xipo
                と -xipo_archive=readonly または
                -xipo_archive=writeback のいずれかを指定します。

               フラグなしで -xipo_archive を指定することはできま
               せん。

     -xjobs=n  複数のプロセッサでコンパイルします。

               -xjobs オプションを指定すると、コンパイラが処理を
               行うために作成するプロセスの数を設定できます。この
               オプションによって、マルチ CPU のマシンにおける構
               築時間を削減できます。現在は、-xjobs は -xipo オプ
               ションとともにしか働きません。-xjobs=n を指定した
               場合、相互手続きオプティマイザは、複数のファイルを
               コンパイルするのために起動する、コードジェネレータ
               の最大数として n を使用します。

               一般に n の安全な値は利用可能なプロセッサ数の 1.5
               倍です。利用可能なプロセッサの数の何倍もの数を指定
               すると、生成されたジョブ間でのコンテキスト切り替え
               のオーバーヘッドが発生し、パフォーマンスの低下につ
               ながります。また、値をあまり大きくすると、スワップ
               領域などのシステム資源の限界を超過する可能性があり
               ます。

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

               コマンド行で -xjobs を複数指定すると、一番右以外の
               指定は無効になります。

               たとえば、2 つのプロセッサを搭載したシステムの場
               合、次のコマンドは、-xjobs オプションを指定せずに
               実行した場合よりも高速にコンパイルを行います。

               example% CC -xipo -xO4 -xjobs=3 t1.cc t2.cc t3.cc

     -xlang=language[,language]
               適切な実行時ライブラリをインクルードして、指定され
               た言語のための正しい実行時環境が確実に設定されるよ
               うにします。

               language には、 f77、 f90、 f95 または c99 のいず
               れかを指定します。

               引数 -f90 と -f95 は同義です。c99 引数は、cc
               -xc99=%all を指定してコンパイルされ、CC を指定して
               リンクされようとしているオブジェクトに対して ISO
               9899:1999 C プログラミング言語の動作を呼び出しま
               す。

               相互の関連性:

               -xlang=f90、-xlang=f95 オプション指定には
               -library=f90 が、 -xlang=f77 オプション指定には
               -library=f77 が、それぞれ暗黙的に含まれています。
               ただし、複数の言語を同時にリンクする場合は、
               -library=f77 オプションおよび -library=f90 オプ
               ションだけでは十分ではありません。正しい実行時環境
               の確実な設定は、-xlang オプションでしか行えませ
               ん。

               複合言語のリンクに使用するドライバを決定するには、
               次の言語階層を使用してください。

               1. C++

               2. Fortran 95 (or Fortran 90)

               3. Fortran 77

               4. C または C99

               Fortran 95、Fortran 77、および C++ オブジェクト
               ファイルを一緒にリンクする場合は、最上位の言語のド
               ライバを使用してください。例えば、C++ および For-
               tran 95 オブジェクトファイルをリンクするには、次の
               C++ コンパイラコマンドを使用してください。

               example% CC -xlang=f95...

               Fortran 95 および  Fortran 77 オブジェクトファイル
               をリンクするには、次のように、Fortan 95 ドライバを
               使用してください。

               example% f95 -xlang=f77...

               同じコンパイラコマンドでは、-xlang オプションと
               -xlic_lib オプションは使用できません。 -xlang を使
               用していて、Sun Performance Library にリンクする必
               要がある場合は、代わりに -library=sunperf を使用し
               てください。

               警告:

               -xnolib は、-xlang とは一緒に使用しないでくださ
               い。

               並列 Fortran オブジェクトと C++ オブジェクトを混在
               させる場合は、リンク行に -mt flag を指定しなければ
               なりません。

               関連項目:

               -library、 -staticlib

     -xldscope={v}
               外部シンボル定義のためのデフォルトのリンカースコー
               プを変更します。このデフォルトを変更することで実装
               がよりよく隠蔽され、共用ライブラリをより高速かつ安
               全に使用できるようになります。

               値

               v は次のいずれかの値です。
               値               意味

               global         シンボル定義は、最も限定的でないリ
                              ンカースコープである大域リンカース
                              コープとなります。シンボル参照はす
                              べて、そのシンボルが定義されている
                              最初の動的ロードモジュールにおける
                              定義と結合します。外部シンボルのデ
                              フォルトのリンカースコープです。

               symbolic       シンボル定義は、大域リンカースコー
                              プよりも限定的なシンボリックリン
                              カースコープとなります。リンクしよ
                              うとする動的ロードモジュール内から
                              のシンボル参照はすべて、そのモ
                              ジュール内で定義されたシンボルに結
                              合します。モジュール外については、
                              シンボルは大域なものとなります。こ
                              のリンカースコープはリンカーオプ
                              ション -Bsymbolic と対応します。C++
                              ライブラリでは -Bsymbolic は使えま
                              せんが、 -xldscope=symbolic オプ
                              ションは問題なく使えます。

               hidden         隠蔽リンカースコープは、シンボリッ
                              クや大域リンカースコープよりも限定
                              的です。動的ロードモジュール内の参
                              照はすべて、そのモジュール内の定義
                              に結合します。モジュールの外からは
                              このシンボルは見えません。

               デフォルト

               -xldscope を指定しない場合、コンパイラは
               -xldscope=global を仮定します。値を付けずに
               -xldscope を使った場合は、コンパイラでエラーとなり
               ます。コマンド行にこのオプションのインスタンスを複
               数指定すると、最も右側のインスタンスに達するまで、
               前のインスタンスが上書きされていきます。

               警告

               クライアントがライブラリ内の関数をオーバーライドす
               ることを許可しようとする場合、ライブラリ構築中にそ
               の関数がインラインで生成されないようにする必要があ
               ります。 -xinline で関数名が指定された場合、インラ
               イン化が自動的に発生する -xO4 以上でコンパイルした
               場合、インライン指定子を使用した場合、あるいはクロ
               スファイル最適化を使用した場合、コンパイラは関数を
               インラインにします。

               たとえば、ライブラリ ABC にはデフォルトのアロケー
               タ関数があり、それをライブラリクライアントが使え、
               なおかつライブラリ内でも使用される場合を想定してみ
               ます。

               void* ABC_allocator(size_t size) { return
               malloc(size); }

               ライブラリを -xO4 以上で構築すると、コンパイラはラ
               イブラリコンポーネント内に発生する ABC_allocator
               の呼び出しをインライン化します。もしもライブラリの
               クライアントがこの ABC_allocator をカスタマイズし
               たバージョンで置き換えようとした場合、
               ABC_allocator を呼び出したライブラリコンポーネント
               内では置き換えは行なわれません。最終的なプログラム
               には、この関数の相異なるバージョンが含まれることに
               なります。

               __hidden または __symbolic 指定子で宣言したライブ
               ラリ関数は、ライブラリ構築時にインライン生成される
               可能性があります。これらがクライアントからオーバー
               ライドされることは、サポートされていません。詳細に
               ついてはC++ の第 4 章「言語拡
               張」を参照してください。

               __global 指定子で宣言されたライブラリ関数は、イン
               ラインとして宣言してはなりません。また、-xinline
               コンパイラオプションを使ったインライン化も防ぐ必要
               があります。

               関連項目

               -xinline、-xO、-xcrossfile、ld(1)

     -xlibmieee
               例外の場合、数学ルーチンに対して IEEE 745 値を返す
               ように libm に指示します。 libm のデフォルトの動作
               は XPG 準拠です。

     -xlibmil  選択したライブラリルーチンを最適化用にインライン化
               します。

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

               注 - このオプションは、C++ インライン関数には影響
               しません。

     -xlibmopt 最適化された数学ルーチンのライブラリを使用します。
               このオプションを使用するときは -fround=nearest を
               指定することによって、デフォルトの丸めモードを使用
               する必要があります。

               最適化された数学ルーチンのライブラリを使用して、通
               常、より高速実行できるコードを生成します。通常の数
               学ライブラリを使用した場合と比べて、結果が多少異な
               る場合があります。その場合は、通常、最終ビットが異
               なっています。

               このライブラリオプションを指定するときは、コマンド
               行での順序は関係ありません。

               相互の関連性:

               このオプションは、 -fast オプションを指定した場合
               にも含まれます。

               関連項目:

               -fast および -xnolibmopt の項も参照してください。

     -xlic_lib=sunperf
               非推奨。使用しないでください。代わりに
               -library=sunperf を指定してください。

     -xlicinfo このオプションは無視され、メッセージも生成されませ
               ん。

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

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

               最適化のレベルは次のとおりです。

               0        ポストオプティマイザは無効です (これはデ
                        フォルトです)。

               1        命令キャッシュカラーリングおよび分岐の最
                        適化など、制御フロー分析に基づいて、リン
                        ク時の最適化を行います。

               2        デッドコードの除去とアドレス計算の簡素化
                        など、より詳細なデータ制御分析に基づい
                        て、リンク時の最適化を行います。

               レベルの値を指定せずに -xlinkopt を使った場合、
               -xlinkopt=1 を指定したと見なされます。
               こうした最適化はオブジェクトバイナリコードを分析し
               てリンク時に実行されます。このオブジェクトファイル
               は書き直されませんが、結果として出力される実行可能
               コードは、元のオブジェクトコードとは異なる可能性が
               あります。

               このオプションは、プロファイルフィードバックを使用
               してプログラム全体のコンパイルを行う際に使用するの
               が最も効果的です。

               コンパイルを複数の段階に分けて行う場合、コンパイ
               ル、リンクの両段階で -xlinkopt を使用する必要があ
               ります。

               example% CC -c -xlinkopt a.cc b.cc
               example% CC -o myprog -xlinkopt=2 a.o

               level の値は、コンパイラがリンクを行う際にだけ使用
               されることに注意してください。上記の例では、オブ
               ジェクトバイナリは最適化レベル 1 を指定したとみな
               されコンパイルされていますが、最適化のレベルとして
               2 が使用されています。

               -xlinkopt を使ってコンパイルする場合、リンカーオプ
               ション -zcompreloc は使用しないでください。

               -xlinkopt がリンク時に効果を発揮できるようにするに
               は、少なくともいくつかのコンパイルコマンドで
               -xlinkopt を使用しなければなりません。オプティマイ
               ザは、-xlinkopt を指定せずにコンパイルしたオブジェ
               クトバイナリについても、限定的な最適化を行うことが
               できます。

               -xlinkopt はコンパイラのコマンド行に指定された静的
               ライブラリからのコードを最適化しますが、コマンド行
               に指定された共用 (動的) ライブラリから取り込んだ
               コードはスキップして最適化しません。また、共用ライ
               ブラリを構築する場合 ( -G を使用してコンパイルする
               場合)、にも -xlinkopt を使用することができます。

               リンクオプティマイザは実行時プロファイルのフィード
               バックと共に使用すると最も効果的です。プロファイル
               を行うことによって、コードの最も使用される部分と最
               も使用されない部分を明らかにし、その結果に従ってオ
               プティマイザを集中的に動作させることができます。こ
               れは、リンク時にコードの最適な配置を行うことによっ
               て命令キャッシュのミスを低減できる大きなアプリケー
               ションにおいてはとくに重要です。通常、このコンパイ
               ルは次のように行います。

               example% CC -o progt -xO5 -xprofile=collect:prog file.cc
               example% progt
               example% CC -o prog -xO5 -xprofile=use:prog -xlinkopt file.cc

               プロファイルのフィードバックの使用の詳細について
               は、 -xprofile を参照してください。

               このオプションを指定してコンパイルを行うと、リンク
               時間が若干増加することに注意してください。オブジェ
               クトファイルのサイズも増加しますが、実行可能ファイ
               ルのサイズは変わりません。 -xlinkopt と -g を指定
               してコンパイルを行うと、デバッグ情報が含まれるの
               で、実行可能ファイルのサイズが大きくなります。

     -xloopinfo

               並列化されるループと並列化されないループを示しま
               す。通常、このオプションは、-xautopar および -xex-
               plicitpar と併用します。

     -xM       指定の C++ プログラムでプリプロセッサのみを実行
               し、メイクファイル依存を生成し、その結果を標準出力
               に送るよう要求します。(メイクファイルおよび依存性
               については make (1) を参照してください)。


               関連項目:

               -xM1

               メイクファイルおよび依存関係についての詳細は、
               make(1) のマニュアルページを参照してください。

     -xM1      -xM とほぼ同じですが、 /usr/include のヘッダーファ
               イルに関する依存関係は出力しません。このオプション
               は、コンパイラが提供するヘッダーファイルの依存関係
               を報告しません。

     -xMerge   (SPARC プラットフォーム)データセグメントをテキスト
               セグメントと併合 (マージ) します。

               オブジェクトファイルのデータは読み取り専用です。こ
               のデータは、 ld -N を指定してリンクしないかぎり、
               プロセス間で共有されます。

     -xmaxopt[=v]
               このコマンドは、pragma opt のレベルを指定レベルに
               制限します。v は次のどれかである必要があります。
               off、1、2、3、4、5。デフォルト値は -xmaxopt=off
               で、pragma opt は無視されます。引数なしで
                -xmaxopt を指定すると、-xmaxopt=5 を指定したのと
               同じになります。

     -xmemalign[=ab]
               (SPARC) 想定される最大のメモリ整列と、誤って整列さ
               れたデータがアクセスされたときの動作を指定します。

               コンパイル時に整列が確定できるメモリアクセスの場
               合、コンパイラがデータのその整列に対して、適切な
               ロード / ストア命令の並びを生成します。

               コンパイル時に整列が確定できないメモリアクセスの場
               合、コンパイラは整列を想定して、必要なロード / ス
               トア命令の並びを生成しなければなりません。

               -xmemalign オプションを使用して、このような確定で
               きない状況においてコンパイラが想定するデータの最大
               メモリ整列を指定します。また、誤って整列されたメモ
               リのアクセスが発生したときに、実行時に続いて行なう
               エラー処理を指定することができます。

               値:

               a に対して指定可能な値は次のとおりです。

                    1    最大 1 バイトの整列を仮定します。

                    2    最大 2 バイトの整列を仮定します。

                    4    最大 4 バイトの整列を仮定します。

                    8    最大 8 バイトの整列を仮定します。

                    16   最大 16 バイトの整列を仮定します。

               b に対して指定可能な値は次のとおりです。

                    i    アクセスを解釈して実行を継続します。

                    s    シグナル SIGBUS を発生させます。

                    f    -xarch=v9 のバリアントのみ。4 バイト以下
                         の境界整列に対してシグナル SIGBUS を発生
                         させ、それ以外ではアクセスを解釈して実行
                         を継続します。ほかの -xarch 値の場合、f
                         フラグは i と同等です。

               デフォルト:

               -xmemalign が指定されなかった場合のデフォルトは、
               v8 アーキテクチャーの場合 -xmemalign=8i、v9 アーキ
               テクチャーの場合 -xmemalign=8s です。

               値なしで -xmemalign が指定された場合のデフォルト
               は、どのプラットフォームでも -xmemalign=1i です。

     -xmodel=[a]
               (x86) -xmodel は、Solaris x64 プラットフォームでの
               共有オブジェクトのデータアドレスモデルを指定するオ
               プションで、そうしたオブジェクトをコンパイルする場
               合にのみ指定します。

               このオプションは、64 ビット対応の x64 プロセッサで
               -m64 も指定されている場合にのみ有効です。

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

               small
                    実行するコードの仮想アドレスがリンク時に判明
                    していて、すべてのシンボルが、0 〜 2^31 -
                    2^24 − 1 の範囲の仮想アドレスに配置されるこ
                    とが判明している small モデル用のコードを生成
                    します。

               kernel
                    すべてのシンボルを 2^64 - 2^31 〜 2^64 - 2^24
                    の範囲に配置すると定義されている kernel モデ
                    ル用のコードを生成します。

               medium
                    データセクションへのシンボリック参照の範囲に
                    関する条件のない medium モデル用のコードを生
                    成します。テキストセクションは、small コード
                    モデルと同じサイズおよびアドレスの制限を受け
                    ます。大量の静的データがあるアプリケーション
                    のコンパイルで -m64 を使用するときは、
                    -xmodel=medium が必要になることがあります。

               このオプションは累積的ではなく、コンパイラは、コマ
               ンド行の最後の -xmodel 指定に従ってモデル値を設定
               します。

               -xmodel が指定されていない場合は、-xmodel=small と
               見なされます。引数なしで -xmodel を指定すると、エ
               ラーになります。

               必ずしも、このオプションを指定してすべての変換単位
               をコンパイルする必要はありません。使用するオブジェ
               クトがアクセス可能な場所にあるかぎり、ファイルを選
               択コンパイルできます。

               必ずしもすべての Linux プラットフォームで、medium
               モデルがサポートされるているわけではありません。

     -xnolib   デフォルトのシステムライブラリとのリンクを無効にし
               ます。

               通常 (このオプションを指定しないで)、C++ コンパイ
               ラはいくつかのシステムサポートライブラリにリンクし
               て、C++プログラムをサポートします。このオプション
               を指定すると、デフォルトのシステムサポートライブラ
               リをリンクするための -llib オプションは ld に渡さ
               れません。

               通常、コンパイラは次の順序でシステムサポートライブ
               ラリにリンクします。

               o 標準モード (デフォルトモード):

                 -lCstd -lCrun -lm -lc

               o 互換モード (-compat[=4]):

                 -lC -lm -lc

               -l オプションの順序は重要です。-lc 以前に -lm オプ
               ションが指定される必要があります。

               注 - -mt オプションを指定する場合はコンパイラは通
               常、-lm とリンクする以前に -lthread とリンクしま
               す。

               デフォルトでリンクされるシステムサポートライブラリ
               を決定するには、 -dryrun オプションでコンパイルし
               てください。例えば、次のコマンドからの出力です。

               example% CC foo.cc -xarch=v9 -dryrun

               次を含んでいます。

               -lCstd -lCrun -lm -lc

               例:

               C アプリケーションライブラリインタフェース (つまり
               必要な C のサポートだけを組み込んだ C++ プログラム
               ) に合わせるためのコンパイル処理が最小限で済むよう
               に、次のコードを使用します。

               example% CC -xnolib test.cc -lc

               汎用命令セットでシングルスレッドアプリケーションに
               libm を静的にリンクするには、次のコマンドを使用し
               ます。

               o 標準モード:

                 example% CC -xnolib test.cc -lCstd -lCrun
                 -Bstatic -lm -Bdynamic -lc"

               o 互換モード:

                 example% CC -compat -xnolib test.cc -lc -Bstatic
                 -lm -Bdynamic -lc"

               相互の関連性:

               libm.a および libc.a などの静的システムライブラリ
               は、 -xarch=v9、-xarch=v9a または -xarch=v9b でリ
               ンクされる場合は有効ではありません。

               -xnolib を指定する場合、すべての必要なシステムサ
               ポートライブラリを特定の順番で手動でリンクしなけれ
               ばなりません。システムサポートライブラリは最後にリ
               ンクしなければなりません。

               -xnolib が指定されると、 -library は無視されます。

               警告:

               C++ 言語の多くの機能を使用するには、 libC (互換
               モード) または libCrun (標準モード) を使用する必要
               があります。

               システムサポートライブラリのセットは安定していない
               ため、今後のリリースで変更される可能性があります。

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

               このオプションを -fast と併用すると、最適化された
               数学ライブラリとのリンクを無効にします。

     -xnolibmopt
               以前に指定された -xlibmopt オプションを無効にし、
               数学ルーチンライブラリを使用しません。

               相互の関連性:

               このオプションは、コマンド行で -fast オプションを
               指定したあとに使用してください。例を示します。
               example% CC -fast -xnolibmopt  ...

     -xOn      最適化レベル (n) を指定します (大文字の O のあと
               に、数字の 1、2、3、4、5 のいずれかを指定します)。

               デフォルトでは最適化は行われません。ただし、このデ
               フォルトは最適化レベルを指定しない場合にのみ当ては
               まります。最適化レベルを指定した場合には、最適化を
               無効にするオプションはありません。

               最適化レベルを設定しないようにするには、最適化レベ
               ルを暗に意味するようなオプションはどれも指定しない
               ようしてください。たとえば -fast は -xO5 に最適化
               レベルを設定するマクロオプションです。最適化レベル
               を暗に意味するその他のオプションもすべて、最適化が
               設定されたという警告メッセージを出します。最適化を
               まったく行なわないでコンパイルする方法は、コマンド
               行からすべてのオプションを削除するか、最適化レベル
               を指定するファイルを作成することだけです。

               一般的に、プログラムをコンパイルする際の最適化のレ
               ベルが上がるほど、実行時のパフォーマンスも上がりま
               す。しかし、最適化レベルが上がるほど、コンパイル時
               間と実行可能ファイルのサイズは増えます。

               -xOn に指定できるレベルは 5 つあります。次の節で
               は、SPARC プラットフォーム、x86 プラットフォーム、
               およびその他の各プラットフォームの場合での各レベル
               の違いを説明します。

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

               値::


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


               -xO1 基本的なローカル最適化 (ピープホール) を実行
                    します。

               -xO2 基本的な局所的および大域的な最適化を行いま
                    す。このレベルには、帰納変数の削除、局所的お
                    よび大域的な共通の式の一部の削除、代数の簡約
                    化、コピーの伝播、定数の伝播、ループ不変式の
                    最適化、レジスタの割り当て、基本的なブロック
                    のマージ、末尾再帰の削除、デッドコードの削
                    除、末尾呼び出しの削除、および複雑な数式の展
                    開が含まれます。

                    このレベルでは、外部変数または間接変数の参照
                    または定義は最適化されません。

               -xO3 -xO2 レベルの最適化に加えて外部変数に対する参
                    照および定義の最適化を行います。このレベルで
                    は、ポインタ代入の影響はトレースされません。
                    volatile によって正しく保護されないデバイスド
                    ライバ、あるいはシグナルハンドラ内から外部変
                    数を変更するプログラムをコンパイルするとき
                    は、 -xO2 を使用してください。

                    一般に、このレベルと -xO4 は、-xspace オプ
                    ションを組み合わせると、コードサイズが最小に
                    なります。

               -xO4 -xO3 レベルの最適化に加えて、同じファイル内に
                    ある関数の自動インライン化を実行します。この
                    自動インライン化によって実行速度を改善するこ
                    とができますが、たまにパフォーマンスが低下す
                    ることがあります。一般に、このレベルは、
                    -xspace と組み合わせないと、コードサイズが大
                    きくなります。

               -xO5 最高レベルの最適化を行います。このレベルは、
                    プログラムの中で、最大のコンピュータ時間を使
                    用する限られた部分の最適化にのみ適していま
                    す。コンパイル時間が長くなる、あるいは実行時
                    間の改善の確実性が高くない最適化アルゴリズム
                    を使用します。このレベルの最適化は、プロファ
                    イルフィードバックと組み合わせた場合にパ
                    フォーマンスが向上する可能性が高くなります。
                    -xprofile=collect|use を参照してください。


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

               -xO1 基本的な最適化を行います。これには、算術の簡
                    素化、レジスタの割り当て、基本ブロックのマー
                    ジ、無意味なコードおよびストアの除去、および
                    ピープホール最適化が含まれています。

               -xO2 -x01 レベルで行う最適化のほかに、大域的な共通
                    部分式の除去、コピーおよび定数の伝播、再帰的
                    な末尾の除去を行います。

               -xO3 -x02レベルで行う最適化のほかに、大域的な共通
                    部分式の除去、大域的なコピーと定数の伝播、
                    ループ強度縮小、帰納変数の除去、および可変
                    ループ最適化を行います。

               -xO4 -xO3 で行う最適化のほかに、同じファイルにある
                    関数の自動インライン化を行います。この自動イ
                    ンライン化は、ほとんどの場合に実行速度を向上
                    させますが、逆に低下させることもあります。こ
                    のレベルでは、フレームポインタレジスタ (ebp)
                    を汎用的な目的に使用できるようになります。一
                    般にこの最適化レベルでは、コードサイズが大き
                    くなります。

               -xO5 最高レベルの最適化を行います。このレベルで
                    は、コンパイル時間が長くなる可能性があり、実
                    行時間が確実に改善されるかどうか不明な最適化
                    アルゴリズムを使用します。

               相互の関連性:

               -g または -g0 を使用するとき、最適化レベルが -xO3
               以下の場合、最大限のシンボリック情報とほとんど完全
               な最適化が得られます。末尾呼び出しの最適化とバック
               エンドインライン化は無効です。

               -g または -g0 を使用するとき、最適化レベルが -xO4
               以上の場合、最大限のシンボリック情報と完全な最適化
               が得られます。

               -g でデバッグしても、 -xOlevel は抑止されません。
               しかし、 -xOlevel は、 -g をある程度制限します。た
               とえば、 -xOlevel オプションを使用すると dbx から
               の変数が表示できなくなるために、デバッグがやりづら
               くなります。それでも、 dbx の where コマンドを使用
               すれば、シンボルによる追跡は行えます。詳細は、
               『dbx コマンドによるデバッグ』を参照してください。

               -xcrossfile オプションは、 -xO4 または -xO5 と一緒
               に使用したときだけ有効です。


               -xinline オプションは、-xO3 の下の最適化レベルに影
               響しません。 -xO4 において、オプティマイザによりイ
               ンライン化される関数が決定されます。これは、-xin-
               line オプションの指定に関わらず行われます。 -xO4
               において、コンパイラは、インライン化された関数でパ
               フォーマンスを改善するものを決定しようとします。
               -xinline で関数のインライン化を行う場合は、実際に
               パフォーマンスが悪くなる可能性があります。

               警告:

               一つの手続きの中に何千ものコードが存在する非常に大
               きな手続きで -xO3 または -xO4 で最適化を行う場合、
               オプティマイザは莫大な量のメモリーを要求します。マ
               シンのパフォーマンスが悪くなる場合もあります。

               このパフォーマンス低下を避けるために、単一のプロセ
               スで使用できる仮想メモリーの量を制限するために
               limit コマンドを使用します (csh(1) のマニュアル
               ページを参照)。例えば、仮想メモリーを 16 メガバイ
               トに制限するには、次のように指定します。

               example% limit datasize 16M

               このコマンドにより、オプティマイザは、データ領域が
               16 メガバイトに達した場合に回復しようとします。

               制限は、マシンで使用可能なスワップ領域全体より大き
               くなることはありません。大規模なコンパイルが行われ
               ている間にマシンが通常に使用できる程度に小さくする
               必要があります。

               最適なデータのサイズは、必要とされる最適化の程度、
               実メモリーの量、使用できる仮想メモリーによります。

               実際のスワップ領域を検索するには、swap -1 と入力し
               ます。

               実際の実メモリーを検索するには、dmesg | grep mem
               と入力します。

               関連項目:

               -xldscope, -fast、 -xprofile=pcsh(1) のマニュア
               ルページ

               『プログラムのパフォーマンス解析』は、アナライザの
               データへの様々な最適化レベルの影響について説明しま
               す。

     -xopenmp [=i]
               -xopenmp オプションを使用すると、OpenMP 指令との明
               示的並列化が可能になります。マルチスレッド環境で並
               列化プログラムを実行する場合は、実行前に
               OMP_NUM_THREADS 環境変数を設定してください。入れ子
               並列を有効にするには、OMP_NESTED 環境変数を TRUE
               に設定します。デフォルトでは、入れ子並列は無効で
               す。詳細は、『OpenMP API 』を参照
               してください。

               値

               i は、次のいずれかにします。

               値          意味

               o -xopenmp=parallel

                 OpenMP プラグマの検出を有効にします。
                 -xopenmp=parallel の下の最適化レベルは -xO3 で
                 す。プログラムの最適化レベルを -x03 に引き上げた
                 場合、コンパイラは警告を発行します。このフラグは
                 また、プリプロセッサトークンの _OPENMP を定義し
                 ます。

               0 -xopenmp=noopt
                 OpenMP プラグマの検出を有効にします。-O3 より低
                 くとも、最適化レベルが引き上げられることはありま
                 せん。cc -O2 -xopenmp=noopt のように -O3 より低
                 い最適化レベルが明示的に設定された場合は、エラー
                 が発行されます。 -xopenmp=noopt を指定して最適化
                 レベルを指定しなかった場合は、OpenMP プラグマが
                 認識され、それに従ってプログラムが並列化されます
                 が、最適化は行われません。このフラグはまた、プリ
                 プロセッサトークンの _OPENMP を定義します。

               o -xopenmp=none

                 -xopenmp=none コマンドは、OpenMP プラグマの認識
                 を有効にしません。プログラムの最適化レベルは変更
                 されず、プリプロセッサトークンも事前定義されませ
                 ん。

               デフォルト

               -xopenmp を指定しない場合、コンパイラは
               -xopenmp=none と設定します。 -xopenmp のみ指定され
               た場合は、コンパイラによって -xopenmp=parallel に
               設定されます。

               -xopenmp を指定してこれに引数をつけなかった場合、
               コンパイラは -xopenmp=parallel と設定します。

               相互の関連性

               dbx を使用して OpenMP プログラムをデバッグする場合
               は、コンパイル時に -g -xopenmp=noopt を使用するこ
               とで、並列領域内にブレークポイントを設定し、変数の
               内容を表示できるようにしてください。

               -xopenmp と -xexplicitpar を併用しないでください。

               警告

               コンパイルとリンクを個別に行う場合は、コンパイルと
               リンクの両方で -xopenmp を指定してください。共有オ
               ブジェクトを構築する場合は、このことが重要です。実
               行可能ファイルのコンパイルに使用されたコンパイラ
               が、 -xopenmp を指定して .so を構築したコンパイラ
               より古くてはいけません。OpenMP 指令を含むライブラ
               リをコンパイルする場合、このことは特に重要です。

               最高のパフォーマンスを得るには、必ず、OpenMP 実行
               時ライブラリ (libmtsk.so) の最新のパッチをシステム
               にインストールしてください。

               関連項目

               マルチプロセスアプリケーションを構築するための
               OpenMP Fortran 95/C/C++ アプリケーションプログラム
               インタフェース全体の概説については、『OpenMP API
               』を参照してください。

     -xpagesize=n
               スタックおよびヒープの優先ページサイズを設定しま
               す。

               n の値は次のいずれかでなければなりません。
                4k、8K、64K、512K、2M、4M、32M、256M、2G、16G、ま
               たは default。

               対象となるプラットフォーム上で有効なページサイズを
               指定しなければなりません。有効なページサイズを指定
               しなかった場合、その要求は実行時に無視され、メッ
               セージは出力されません。

               Solaris オペレーティング環境で、1 ページのバイト数
               を決定するには、 getpagesize(3C) コマンドを使用し
               ます。ただし、そのページサイズ要求が優先される保証
               はありません。 pmap(1) または meminfo(2) を使用し
               て、対象となるプラットフォームのページサイズを確認
               することができます。

               -xpagesize オプションは、コンパイルおよびリンク時
               に使わないと効果はありません。

               -xpagesize=default を指定すると、Solaris オペレー
               ティング環境がページサイズを設定します。

               このオプションは -xpagesize_heap および
               -xpagesize_stack のためのマクロです。この 2 つのオ
               プションは -xpagesize と同じ引数を受け付けます。
               -xpagesize=n と指定して前述の 2 つのオプションに同
               じ値を設定することができ、あるいはこれらを別々に指
               定して異なる値に設定することも可能です。

               このオプションを使ってコンパイルすることは、
               mpss.so.1 への LD_PRELOAD 環境変数を同じオプション
               を使って設定すること、またはプログラム実行前に
               Solaris コマンドの ppgsz(1) を同じオプションを使っ
               て実行するのと、同様の効果があります。詳細は
               Solaris のマニュアルページを参照してください。

     -xpagesize_heap=n
               ヒープのためのメモリのページサイズを設定します。

               n の値は次のいずれかでなければなりません。
                4k、8K、64K、512K、2M、4M、32M、256M、2G、16G、ま
               たは default。

               対象となるプラットフォームで有効なページサイズを指
               定しなければなりません。有効なページサイズを指定し
               なかった場合、その要求は実行時に無視され、メッセー
               ジは出力されません。

               Solaris オペレーティング環境で、1 ページのバイト数
               を決定するには、 getpagesize(3C) コマンドを使用し
               ます。ただし、そのページサイズ要求が優先される保証
               はありません。 pmap(1) または meminfo(2) を使用し
               て、対象となるプラットフォームのページサイズを確認
               することができます。

               -xpagesize_heap=default と指定した場合、Solaris オ
               ペレーティング環境はページサイズを設定します。

               このオプションを使ってコンパイルすることは、
               mpss.so.1 への LD_PRELOAD 環境変数を同じオプション
               を使って設定すること、またはプログラム実行前に
               Solaris コマンドの ppgsz(1) を同じオプションを使っ
               て実行するのと、同様の効果があります。詳細は
               Solaris のマニュアルページを参照してください。

               -xpagesize_heap オプションは、コンパイル時とリンク
               時の両方で使用しないかぎり、何の働きもしません。

     -xpagesize_stack=n
               スタックのためのメモリーのページサイズを設定しま
               す。

               n の値は次のいずれかでなければなりません。
                4k、8K、64K、512K、2M、4M、32M、256M、2G、16G、ま
               たは default。

               対象となるプラットフォームの Solaris オペレーティ
               ング環境で有効なページサイズを指定しなければなりま
               せん。有効なページサイズを指定しなかった場合、その
               要求は実行時に無視され、メッセージは出力されませ
               ん。

               Solaris オペレーティング環境で、1 ページのバイト数
               を決定するには、 getpagesize(3C) コマンドを使用し
               ます。ただし、そのページサイズ要求が優先される保証
               はありません。 pmap(1) または meminfo(2) を使用し
               て、対象となるプラットフォームのページサイズを確認
               することができます。

               -xpagesize_stack=default と指定した場合、Solaris
               オペレーティング環境がページサイズを設定します。

               このオプションを使用してコンパイルすることは、
               mpss.so.1 への LD_PRELOAD 環境変数を同じオプション
               を使って設定すること、またはプログラム実行前に設定
               すること、またはプログラム実行前に Solaris コマン
               ドの ppgsz(1) を同じオプションを使って実行するの
               と、同様の効果があります。詳細は Solaris のマニュ
               アルページを参照してください。

               -xpagesize_stack オプションは、コンパイル時とリン
               ク時の両方で使用しないかぎり、何の働きもしません。

     -xpch=v   このコンパイラオプションは、プリコンパイル済みヘッ
               ダー機能を有効にします。v は auto か autofirst、
               collect:pch_filename、use:pch_filename のいずれか
               です。この機能は、#pragma hdrstop 指令との組み合わ
               せで -xpch および -xpchstop を使用することによって
               活用できます。

               -xpch オプションを使用すると、プリコンパイル済み
               ヘッダーファイルを作成して、コンパイル時間を改善で
               きます。プリコンパイル済みヘッダーファイルは、多量
               のソースコードを含む一連の共通したインクルードファ
               イルを使用するソースファイルを持っているアプリケー
               ションの、コンパイル時間を短縮する目的で設計されま
               した。プリコンパイル済みヘッダーファイルは、1 つの
               ソースファイルから一連のヘッダーファイルに関する情
               報を収集し、その後そのソースファイルを再コンパイル
               するとき、また同様の一連のヘッダーファイルを持つ別
               のソースファイルをコンパイルするときに、その情報を
               使います。

               プリコンパイル済みヘッダーファイルの自動生成
               コンパイル済みヘッダーファイルをコンパイラに自動的
               に生成させることができます。方法は 2 通りありま
               す。1 つは、ソースファイルから最初に検出されたイン
               クルードファイルからプリコンパイル済みヘッダーファ
               イルをコンパイラに作成させる方法です。もう 1 つ
               は、ソースファイルから最初に検出されたインクルード
               ファイルから、最後のインクルードファイルを示す綿密
               な定義ポイントに基づいて決定される範囲からコンパイ
               ラにインクルードファイルを選択させる方法です。次の
               2 つのフラグのいずれかを使って、プリコンパイル済み
               ヘッダーの自動生成でコンパイラが使用する方法を指定
               します。

               -xpch=auto
                    プリコンパイル済みヘッダーファイルの内容は、
                    コンパイラがソースファイルから検出したうちで
                    最も長い活性文字列 (viable prefix) に基づいて
                    います。(活性文字列の識別方法については、次の
                    セクションを参照) このフラグは、最大可能数の
                    ヘッダーファイルからなるプリコンパイル済み
                    ヘッダーファイルを生成します。

               -xpch=autofirst
                    このフラグは、ソースファイルから最初に検出さ
                    れたヘッダーのみを含むプリコンパイル済みヘッ
                    ダーファイルを生成します。

               手動でのプリコンパイル済みヘッダーファイルの作成
               プリコンパイル済みヘッダファイルを手動で作成する場
               合は、 -xpch を使用し、そのあとで collect モードを
               指定する必要があります。 -xpch=collect を指定した
               コンパイルコマンドには、ソースファイルは
                1 つだけ指定します。次の例では、 -xpch オプション
               によってソースファイル a.cc から myheader.Cpch と
               いうプリコンパイル済みヘッダーファイルが作成されま
               す。
               CC -xpch=collect:myheader a.cc

               有効なプリコンパイル済みヘッダーファイルの名前には
               必ず接尾辞 .Cpch が付いています。pch_filename を指
               定するときには自分でこの接尾辞を付けるか、コンパイ
               ラに付けてもらいます。たとえば、CC
               -xpch=collect:foo a.cc と指定すると、プリコンパイ
               ル済みヘッダーファイルは、foo.Cpch という名前にな
               ります。

               コンパイラが既存のプリコンパイル済みヘッダーファイ
               ルを処理する方法
               コンパイラが次の規則に従って既存のプリコンパイル済
               みヘッダーファイルの処理方法を決定します。

               既存のプリコンパイル済みヘッダーファイルを検出した
               場合、コンパイラは、ファイルの次の属性と現在のコン
               パイルから得られた情報との間で次のすべて条件が満た
               されたときにのみ、そのファイルを使用します。

                  - 活性文字列が一致
                  - コマンド行オプションが完全に同じ
                  - 現在の作業用ディレクトリが同じ
                  - ソースディレクトリのパス名が同じ
                  - コンパイラとプリコンパイル済みヘッダーファイ
               ルのバージョン番号が一致

               活性文字列が一致と見なされるには次の条件が真である
               必要があります。

                  - #include のファイル名がすべて同じ
                  - #define および #undef の指令が同じシンボルを
               参照し、それら指令の出現順が同じ
                  - #define に関連付けられている値が同一
                  - 存在する pragma が元の順序で出現する

               活性文字列では、#ident/#pragma idents は「そのま
               ま」は渡されず、同等検査されないことに注意してくだ
               さい。一般に、文字列引数はソースファイルごとに異な
               り、このため、検査した場合、既存のプリコンパイル済
               みヘッダーファイルの使用は禁止されます。

               一致条件で使用されるコンパイラバージョンは、コンパ
               イラの -V によって返されるバージョンと同じです。
               特定のプリコンパイル済みヘッダーファイルの使用の指
               示
               特定のプリコンパイル済みヘッダーファイルを使用する
               ようコンパイラに指示することもできます。このために
               は、-xpch=use:pch_filename を指定します。プリコン
               パイル済みヘッダーファイルを作成するときに使った
               ソースファイルと同じようにインクルードファイルが並
               んでいるソースファイルならば、いくつでも指定できま
               す。たとえば、利用モードのコマンドは次のようになり
               ます。
               CC -xpch=use:foo.Cpch foo.cc bar.cc foobar.cc

               既存のプリコンパイル済みヘッダーファイルは、次のこ
               とが当てはまるときのみ使用するようにします。もしも
               次のいずれかが当てはまらない場合には、プリコンパイ
               ル済みヘッダーファイルを再作成したほうがよいでしょ
               う。

               - プリコンパイル済みヘッダーファイルのアクセスに使
               用するコンパイラが、プリコンパイル済みヘッダーファ
               イルを作成したコンパイラと同じ。あるバージョンで作
               成されたプリコンパイル済みヘッダーファイルが、その
               コンパイラの別のバージョンで利用できるとはかぎりま
               せん。

               - -xpch オプションを除いて、-xpch=use で指定するコ
               ンパイラオプションは、プリコンパイル済みヘッダー
               ファイルを作成したときの指定と合っている必要があり
               ます。

               - -xpch=use で指定するインクルードヘッダーが、プリ
               コンパイル済みヘッダー作成時に指定した一連のヘッ
               ダーと同じ。

               - -xpch=use で指定するインクルードヘッダーの中身が
               プリコンパイル済みヘッダー作成時に指定されたインク
               ルードヘッダーの中身と同じ。

               - 現在のディレクトリ (つまり、コンパイルが行なわれ
               ていて、所定のプリコンパイル済みヘッダーファイルを
               使用しようとしているディレクトリ) が、プリコンパイ
               ル済みヘッダーファイルが作成されたディレクトリと同
               じ。

               - -xpch=collect で指定したファイルにあった、
               #include 指令を含む最初のプリプロセス指令の並び
               が、 -xpch=use で指定するファイルにあるプリプロセ
               ス指令の並びと同じ。

               活性文字列 (Viable Prefix)
               複数のソースファイル間でプリコンパイル済みヘッダー
               ファイルを共有するには、それらのソースファイルが、
               その初期トークンシーケンスして共通のインクルード
               ファイル群を共有している必要があります。トークン
               は、キーワードや名前、および適切な記号の組み合わせ
               から成ります。コンパイラは、コメントおよび、#if 指
               令によって除外されているコードをトークンとして認識
               しません。この初期トークンシーケンスは、活性文字列
               (viable prefix) と呼ばれます。言い替えれば、活性文
               字列は、すべてのソースファイルの先頭に共通に存在す
               る部分です。コンパイラは、プリコンパイル済みヘッ
               ダーファイルを作成し、ソースからプリコンパイルされ
               ているヘッダーファイルを特定する際の基礎情報として
               この活性文字列を利用します。

               現在のコンパイル中にコンパイラが検出する活性文字列
               は、プリコンパイル済みヘッダーファイルの作成に使用
               された活性文字列と一致している必要があります。言い
               替えれば、同じプリコンパイル済みヘッダーファイルを
               使用しているどのソースファイルについても、コンパイ
               ラがその活性文字列の一貫した解釈ができる必要があり
               ます。

               活性文字列は、次のプリプロセッサ指令のいずれかで構
               成されます。

               #include
               #if/ifdef/ifndef/else/elif/endif
               #define/undef
               #ident
               #pragma

               これらはいずれもマクロを参照できます。#else、
               #elif、#endif 指令は活性文字列の中で合致するもので
               なければなりません。コメントは無視されます。

               -xpch=auto か -xpch=autofirst が指定されていて、活
               性文字列が次のように定義されている場合、コンパイラ
               は自動的に活性文字列の終わりを特定します。
               -xpch=collect または -xpch=use の場合、活性文字列
               は #pragma hdrstop で終わる。

               - 最初の宣言/定義文
               - 最初の #line 指令
               - #pragma hdrstop 指令
               - -xpch=auto および -xpchstop が指定されている場合
               は、指定されているインクルードファイルのあと
               - -xpch=autofirst が指定されている場合は最初のイン
               クルードファイル

               次の点に注意してください。条件文内に終わりがある場
               合は、警告が生成され、プリコンパイル済みヘッダー
               ファイルの自動作成は無効になります。また #pragma
               hdrstop
                と -xpchstop オプションの両方が指定されている場
               合、コンパイラは 2 つの停止点のうちの前の方を使っ
               て、活性文字列を終了します。

               プリコンパイル済みヘッダーファイルを共用する各ソー
               スファイルの活性文字列の中では、対応する #define
               指令と #undef 指令が同じシンボルを参照しなければな
               りません (#define の場合、どれもが同じ値を参照する
               必要があります)。活性文字列内に出てくる順序も同じ
               でなければなりません。対応するプラグマも、プリコン
               パイル済みヘッダーを共用するファイルすべてで同じで
               あり、その順序も同じでなければなりません。

               ヘッダーファイルの妥当性の判定
               ヘッダーファイルがプリコンパイル可能となる条件。そ
               れは、どのソースファイルでも、ヘッダーファイルの一
               貫した解釈ができることです。具体的には、完全な宣言
               だけが含まれていることです。すなわち、どのファイル
               の宣言も有効な宣言として独立している必要がありま
               す。struct S; などの不完全な型宣言は有効な型宣言で
               す。この完全な型宣言はほかのファイルに存在している
               可能性があります。次のヘッダーファイル例を参考にし
               てください。

               file a.h
               struct S {
                    #include "x.h" /* not allowed */
               };

               file b.h
               struct T; // ok, complete declaration
               struct S {
                    int i;
               [end of file, continued in another file] /* not
               allowed */

               file c.h
               namespace N {
               int foo();
               [end of file, continued in another file] /* not
               allowed */

               file d.h
               extern "C" {
               int foo();
               [end of file, continued in another file] /* not
               allowed */

               file e.h
               namespace N {
               int foo();
               }       /* OK, a stand-alone namespace declaration
               */

               file f.h
               namespace N {
               int bar();
               }       /* OK, namespace re-opened, but still
               stand-alone */

               プリコンパイル済みヘッダーファイルに組み込まれる
               ヘッダーファイルは、次の制約に違反してはなりませ
               ん。これらの制約のいずれかに違反するプラグマをコン
               パイルした場合、その結果は予測できません。

               - ヘッダーファイルに、__DATE__ および __TIME__ が
               使用されていてはいけません。
               - ヘッダーファイルに #pragma hdrstop が含まれてい
               てはいけません。

               プリコンパイル済みヘッダーファイルのキャッシュ
               プリコンパイル済みヘッダーファイルを自動的に作成し
               たとき、コンパイラはそのファイルを SunWS_cache
               ディレクトリに書き込みます。このディレクトリはつね
               に、オブジェクトファイルが作成される場所に置かれま
               す。dmake の下で適切に機能するよう、ファイルの更新
               はロックして行われます。

               自動的生成されたプリコンパイル済みヘッダーファイル
               をコンパイラに強制的に再構築させる必要がある場合
               は、CCadmin ツールを使って、この PCH キャッシュ
               ディレクトリをクリアすることができます。詳細は、
               CCadmin(1) のマニュアルページを参照してください。

               警告

               o 矛盾する -xpch フラグをコマンド行に指定しないで
               ください。たとえば -xpch=collect と
               -xpch=autofirst の両方を指定したり、
               -xpchstop=<include> を付けて -xpch=autofirst を指
               定したりすると、エラーになります。

               o -xpch=autofirst を指定するか、-xpchstop なしで
               -xpch=auto を指定した場合、最初のインクルードファ
               イル、あるいは -xpch=auto に -xpchstop を付けて指
               定したインクルードファイルの前に宣言や定義、#line
               指令があると、エラーになり、プリコンパイル済みヘッ
               ダーファイルの自動生成が無効になります。

               o  -xpch=autofirst または -xpch=auto で、最初のイ
               ンクルードファイルの前に #pragma hdrstop がある
               と、プリコンパイル済みヘッダーファイルの自動生成が
               無効になります。

               プリコンパイル済みヘッダーファイルの依存関係と
               make ファイル
               -xpch=collect が指定されている場合、コンパイラはプ
               リコンパイル済みヘッダーファイル用の依存関係情報を
               生成します。この依存関係情報を活用するには、make
               ファイル内に適切な規則を作成する必要があります。次
               の make ファイル例を参考にしてください。

               %.o : %.cc shared.Cpch
               $(CC) -xpch=use:shared -xpchstop=foo.h -c $<
               default : a.out
               foo.o + shared.Cpch : foo.cc
               $(CC) -xpch=collect:shared -xpchstop=foo.h foo.cc
               -c
               a.out : foo.o bar.o foobar.o
               $(CC) foo.o bar.o foobar.o
               clean :
               rm -f *.o shared.Cpch .make.state a.out

               コンパイラによって生成された依存関係情報とともに、
               これらの make 規則があると、-xpch=collect で使用さ
               れたソースファイル、またはプリコンパイル済みヘッ
               ダーファイルを構成するヘッダーのどれかに変更があっ
               た場合、手動で作成されたプリコンパイル済みヘッダー
               ファイルが強制的に再作成されます。これにより、古い
               プリコンパイル済みヘッダーファイルの使用が防止され
               ます。

               -xpch=auto または -xpch=autofirst の場合、メイク
               ファイル内に追加の make 規則を作成する必要はありま
               せん。

               関連項目: -xpchstop

     -xpchstop=file
               ここでの file は、プリコンパイル済みヘッダーファイ
               ルの作成時の最後のインクルードファイルです。コマン
               ド行に -xpchstop を指定することは、cc コマンドで指
               定したソースファイルのそれぞれで、ファイルをインク
               ルードする include 指定子のあとに、hdrstop プラグ
               マ (-xhelp=readme を参照) を置くのと同じことです。

               <include> までのヘッダーファイルに基づいてプリコン
               パイル済みヘッダーファイルを作成するには、
               -xpchstop=<include> と -xpch=auto を組み合わせま
               す。このフラグは、活性文字列全体に含まれるすべての
               ヘッダーファイルを使用するという、デフォルトの
               -xpch=auto の動作を無効にします。

               関連項目: -xpch、-xhelp=readme

     -xpg      gprof プロファイラによるプロファイル用にコンパイル
               します。

               -xpg  オプションは自己プロファイルコードをコンパイ
               ルし、gprof でのプロファイル用のデータを収集しま
               す。このオプションは実行時記録メカニズムも持ってお
               り、プログラムが正常に終了すると、gmon.out ファイ
               ルを生成します。

               注: -xpg を使用する場合、-xprofile を使用するメ
               リットはありません。これら 2 つのオプションは、他
               方が提供するデータを作成、使用しません。

               64 ビット Solaris プラットフォームの場合は、prof
               または gprof を使用してプロファイルを生成します。
               32 ビット Solaris プラットフォームの場合は、gprof
               だけがユーザーCPU 時間の概算値を取り込みます。それ
               らの時間は、主実行可能ファイル内のルーチンおよび、
               実行可能ファイルのリンク時にリンカー引数として指定
               された共有ライブラリ内のルーチンに関する PC 標本
               データ(pcsample(2) を参照)から求められます。ほか
               の共有ライブラリ(dlopen(3DL) を使用してプロセスの
               起動後に開かれたライブラリ) は、プロファイリングさ
               れません。

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

               Solaris 10 ソフトウェアは、-p を指定してコンパイル
               されたシステムライブラリを取り込みません。このた
               め、Solaris 10 プラットフォームで収集されたプロ
               ファイルには、システムライブラリルーチンに関する呼
               び出し回数は含まれません。

               この作業はパフォーマンスアナライザでも実行できま
               す。analyzer(1) のマニュアルページを参照してくださ
               い。

               警告:

               コンパイルとリンクを別々に行う場合、コンパイル時に
               -xpg を使用したときは、リンク時にも -xpg を使用し
               なければなりません。

     -xport64[=v]
               このオプションを使用すると、コードを 64 ビット環境
               に容易に移植できます。具体的には、V8 などの 32
               ビットアーキテクチャーから V9 などの 64 ビットアー
               キテクチャーにコードを移植するときによく見られる、
               型 (ポインタを含む) の切り上げ、符号拡張、ビット
               パッキングといった問題をこのオプションが警告しま
               す。

               値:

               v は次のいずれかの値です。


               値               意味

               no             32 環境から 64 ビット環境へのコード
                              の移植に関する警告を生成しません。

               implicit       暗黙の変換に関する警告だけを生成し
                              ます。明示的なキャストが存在する場
                              合には警告を生成しません。


               full           32 ビット環境から 64 ビット環境への
                              コードの移植に関する警告をすべて生
                              成します。64 ビットの値の切り上げ、
                              ISO の値保持の規則に基づいた 64
                              ビットへの符号拡張、ビットフィール
                              ドのパッキングの変更などが含まれま
                              す。

               デフォルト:

               -xport64 を指定しない場合、デフォルトは
               -xport64=no になります。-xport64 を指定して、フラ
               グは指定しない場合、デフォルトは -xport64=full と
               なります。

               関連項目:  -xarch

     -xprefetch[=a[,a]]
               先読み機能をサポートするアーキテクチャー上で先読み
               命令を有効にして調整します。このオプションを使用す
               る場合は、最適化レベル 3 以上でコンパイルしてくだ
               さい。

               a には、次のいずれかの値を指定します。


               値               意味

               auto           先読み命令の自動生成を有効にしま
                              す。


               no%auto        自動生成を無効にします。
               explicit       明示的な先読みマクロを有効にしま
                              す。

                              明示的な先読みは、計測がサポートす
                              る特殊な状況でのみ使用してくださ
                              い。

               no%explicit    明示的な先読みマクロを無効にしま
                              す。

               latx:factor    (SPARC) このフラグは
                              -xprefetch=auto とのみ組み合わせら
                              れます。コンパイラによるロード命令
                              とストア命令に対する先読み命令の、
                              「潜在期間」の仮定値を、指定された
                              係数 (factor) で調整します。factor
                              は、正の浮動小数点または整数でなけ
                              ればなりません。


               yes            廃止 - 使わないでください。代わりに
                              -xprefetch=auto,explicit を使ってく
                              ださい。

               no             廃止 - 使わないでください。代わりに
                              -xprefetch=no%auto,no%explicit を
                              使ってください。

               -xprefetch、および -xprefetch=auto を使用すると、
               コンパイラは必要に応じて先読み命令をコード中に挿入
               します。これによって、先読み機能をサポートするアー
               キテクチャーではパフォーマンスが向上する場合があり
               ます。

               大規模マルチプロセッサで、計算集約型コードを実行す
               る場合、 -xprefetch=latx:factor を使用すると便利で
               す。このオプションでは、先読み命令と計数により指定
               された関連するロードまたはストア間のデフォルトの潜
               在期間を調整するようコードジェネレータに指示しま
               す。

               先読み命令の「潜在期間」とは、先読み命令が実行され
               た時点から、先読み命令の対象であるデータが実際に
               キャッシュに入れられる時点までの、ハードウェアに起
               因する時間のずれを指します。コンパイラは、先読み命
               令の挿入位置と、先読みされたデータを使用するロード
               またはストアの命令文の位置がどれだけ離れているかを
               確認して、先読みの潜在期間を仮定します。

               注意

               仮定される先読みの潜在期間は、ロード命令とストア命
               令では異なる場合があります。

               コンパイラは、広範囲に渡るマシンおよびアプリケー
               ションに対して適切になるように、先読みのメカニズム
               を調整しています。このため現在の機能が、すべてのマ
               シンまたはアプリケーションで最良であるとはかぎりま
               せん。メモリーを大量に消費するアプリケーション、特
               に大規模な複数のプロセッサで実行するアプリケーショ
               ンの場合は、先読みの潜在期間を示す値を増加させた方
               が、パフォーマンスが向上する可能性があります。先読
               みの潜在期間を増加させるには、 factor の値を 1 よ
               り大きい値にします。 .5 から 2.0 の間の値にする
               と、ほぼ確実に最高のパフォーマンスが得られます。

               完全に外部のキャッシュに存在するデータベースを扱う
               アプリケーションの場合は、先読みの潜在期間を減少さ
               せた方が、パフォーマンスが向上する可能性がありま
               す。先読みの潜在期間を減少させるには、 factor の値
               を 1 より小さい値にします。

               -xprefetch=latx:factor オプションを使用する場合
               は、まず factor の値を 1.0 に近い値に設定して、対
               象のアプリケーションに対するパフォーマンスを調べま
               す。そして徐々にその値を変化させていき、パフォーマ
               ンスの変化を確認します。最良のパフォーマンスが得ら
               れるまでテストを繰り返します。値を細かく変更した場
               合は、しばらくの間パフォーマンスの変化はまったく見
               られませんが、ある値で突然高くなります。続けて値を
               増加または減少させていくと、パフォーマンスは再び下
               がります。

               デフォルト:

               デフォルトは -xprefetch=auto,explicit です。

               -xprefetch または -xprefetch=auto によって自動先読
               み実行が有効に設定されているにも関わらず、潜在期間
               の値が指定されていない場合は、 latx:1.0 が仮定され
               ます。

               相互の関連性:

               このオプションは上書きされずに累積されます。

               ヘッダーファイル sun_prefetch.h によって、明示的な
               先読み命令を指定するマクロが使用できます。先読み指
               令は、実行可能ファイル中の、マクロとほぼ同じ位置に
               挿入されます。

               明示的な先読み指令を使用するには、正しいアーキテク
               チャー上で、 sun_prefetch.h をインクルードし、コン
               パイラコマンドには -xprefetch を使用しないか、
               -xprefetch、 -xprefetch=auto,explict、
               -xprefetch=explicit、 -xprefetch=yes のいずれかを
               指定しなければなりません。

               マクロを呼び出して sun_prefetch.h ヘッダーファイル
               をインクルードしたにも関わらず
               -xprefetch=no%explicit または -xprefetch=no を指定
               した場合は、明示的な先読み命令は実行可能ファイル中
               には挿入されません。

               -xchip の設定は、仮定される潜在期間の決定に影響を
               及ぼします。つまり、 latx:factor の設定も影響を受
               けます。

               latx:factor サブオプションは、自動先読みが有効に
               なっている場合にのみ有効です。つまり、 latx:factor
               は、 yes または auto と一緒に使用されないかぎり、
               無視されます。

               警告:

               コンパイラは、広範囲に渡るマシンおよびアプリケー
               ションで最良のパフォーマンスが得られるように先読み
               のメカニズムを調整しているため、 latx:factor サブ
               オプションは、パフォーマンスのテストで明らかにメ
               リットがあると認められた場合にのみ使用してくださ
               い。仮定される先読みの潜在期間は、リリースごとに異
               なる可能性があります。したがって、リリースが変わる
               たびに、潜在期間の係数 (factor) がパフォーマンスに
               及ぼす影響をテストすることを、強くお勧めします。

     -xprefetch_auto_type=[a]
               a は [no%]indirect_array_access です。

               このオプションは、直接メモリーアクセス用の先読み命
               令の生成と同じようにして、コンパイラに
               -xprefetch_level オプションの指示するループに対し
               て間接先読みを生成させるかどうかを指定するのに使用
               します。

               -xprefetch_auto_type に値が指定されなかった場合、
               コンパイラは
               -xprefetch_auto_type=no%indirect_array_access に設
               定します。

               メモリー使用に関する別名解析のあいまいさを排除でき
               る可能性が高まるため、 -xalias_level などのオプ
               ションが、間接先読み命令の候補の計算の積極性、つま
               りは、自動的な間接先読み命令の挿入の積極性に影響す
               ることがあります。

     -xprefetch_level=l
               -xprefetch=auto で決定された先読み命令の自動挿入を
               制御します。-xprefetch=auto を指定する場合、デフォ
               ルトは -xprefetch_level=2 です。

               l は 0、1、2 のいずれかです。

               古い SPARC および x86 プラットフォームでは、先読み
               レベル 2 および 3 が有効でないことがあります。

               -xprefetch_level=1 を指定すると、先読み命令の自動
               生成が可能になります。-xprefetch_level=2 を指定す
               ると、レベル 1 を超える追加生成が可能になり、
               -xprefetch=3 を指定すると、レベル 2 を超える追加生
               成が可能になります。

               最適化レベル 3 以上でコンパイルして、先読みをサ
               ポートするプラットフォームのコードを生成する必要が
               あります。

     -xprofile=p
               実行時プロファイルデータを収集するか、これらのデー
               タで最適化を行います。

               p には、 collect[:name]、 use[:name]、 tcov のいず
               れかを指定します。

               このオプションを使用すると、実行時に実行頻度のデー
               タが収集されて保存されます。保存されたデータは以降
               の処理の実行時に使用して、パフォーマンスを向上させ
               ることができます。プロファイル収集はマルチスレッド
               アプリケーションについても安全です。つまり、自身の
               マルチタスク ( -mt ) を実行するプログラムのプロ
               ファイリングは、正しい結果を生成します。このオプ
               ションは -xO2 以上の最適化レベルを指定した場合にの
               み有効です。

               コンパイルとリンクを別の段階で行う場合、コンパイル
               とリンク時には、同じ -xprofile オプションを使用し
               なければなりません。

               値:


               collect[:name]
                    あとでオプティマイザが -xprofile=use で使用で
                    きるように、実行頻度の情報を収集および保存し
                    ます。コンパイラは、文の実行頻度を測定するた
                    めのコードを生成します。

                    注:Linux での共有ライブラリの構築では、
                    -xprofile=collect を指定しないでください。

                    name は省略可能です。name が指定されなかった
                    場合は、実行可能なバイナリの名前が使用されま
                    す。-o が指定されなかった場合は、a.out が使用
                    されます。

                    -xprofile=collect:name でコンパイルしたプログ
                    ラムによって、実行時のフィードバック情報を保
                    存するための name.profile ディレクトリが実行
                    時に作成されます。フィードバックデータは、こ
                    のサブディレクトリ中の feedback ファイルに保
                    存されます。フィードバック情報の位置は
                    $SUN_PROFDATA および $SUN_PROFDATA_DIR 環境変
                    数を使用して変更可能です。詳細については、こ
                    の節の最後にある 「環境変数」の項を参照してく
                    ださい。プログラムを複数回実行した場合、実行
                    頻度のフィードバックデータは feedback ファイ
                    ルに蓄積されるので、前回のデータは失われませ
                    ん。

                    コンパイルとリンクを別々のステップで実行する
                    場合、 -xprofile=collect を指定してコンパイル
                    されたオブジェクトファイルは、必ずリンクも
                    -xprofile=collect を指定して実行しなければな
                    りません。

               use[:name]
                    有効な最適化を行うために実行頻度データを利用
                    します。name には解析する実行可能ファイル名を
                    指定します。

                    name は省略可能です。name が指定されなかった
                    場合は、実行可能なバイナリの名前が使用されま
                    す。-o が指定されなかった場合は、a.out が使用
                    されます。コンパイラは name.profile/feedback
                    または a.out.profile/feedback (name が指定さ
                    れていない場合) を検索します。次に例を示しま
                    す。

                       CC -xprofile=collect -o myexe prog.cc
                       CC -xprofile=use:myexe -xO5 -o myexe
                    prog.cc

                    -xprofile=collect でコンパイルしたプログラム
                    を前回実行した結果として feedback ファイルに
                    生成および保存された実行頻度データをもとにし
                    て、プログラムが最適化されます。

                    ソースファイル、その他のコンパイラオプション
                    は、feedback ファイルを生成したプリコンパイル
                    済みプログラムのコンパイル時に使用したオプ
                    ションと同じものを指定する必要があります。
                    -xprofile=collect:name でコンパイルした場合、
                    -xprofile=use:name による最適化コンパイルでは
                    同じ名前の name を指定する必要があります。

               tcov 新しい形式の tcov を使用した基本的なブロック
                    カバレージ分析を行います。

                    -xprofile=tcov オプションは、tcov のプロファ
                    イルの作成に使用する新しい形式の基本ブロック
                    です。 -xa オプションと同じ機能がありますが、
                    ヘッダーファイルにソースコードが含まれている
                    プログラムや、C++ テンプレートを使用するプロ
                    グラムのデータを収集します。旧形式のプロファ
                    イルについての詳細は、tcov(1) のマニュアル
                    ページ、および『プログラムのパフォーマンス解
                    析』を参照してください。

                    注:Linux での共有ライブラリの構築では、
                    -xprofile=collect を指定しないでください。

                    コード計測は -xa オプションと同じように実行さ
                    れますが、.d ファイルは生成されません。代わり
                    に単一のファイルが生成されます。ファイル名
                    は、対応する実行可能ファイルの名前にもとづい
                    て付けられます。たとえば、myprogram というプ
                    ログラムを /foo/bar/myprog.profile で実行した
                    場合は、データファイルは
                    /foo/bar/myprog.profile/myprog.tcovd に格納さ
                    れます。

                    -xprofile=tcov および -a オプションは、1 つの
                    実行可能ファイル内で両方を指定することができ
                    ます。すなわち、-xprofile=tcov オプションでコ
                    ンパイルされたファイルと、および -xa オプショ
                    ンでコンパイルされたファイルをリンクしてプロ
                    グラムを作成することができます。1 つのファイ
                    ルを両方のオプションを使用してコンパイルする
                    ことはできません。

                    tcov を実行する時には、新しい形式のデータが使
                    用されるように -x オプションを指定してくださ
                    い。指定しない場合、tcov は旧式の .d ファイル
                    (存在する場合)を使用します。この場合は、予想
                    外の結果が生じることがあります。

                    -xa オプションとは異なり、TCOVDIR 環境変数は
                    コンパイル時間には影響しません。ただし、
                    TCOVDIR 環境変数の値はプログラムの実行時に使
                    用されます。詳細は、tcov(1) のマニュアルペー
                    ジおよび『プログラムのパフォーマンス解析』を
                    参照してください。

                    注: - -xO4 を使用したために関数のインライン化
                    が存在する場合、 -xprofile=tcov によって生成
                    されるコードカバレージレポートは不正確である
                    可能性があります。

               環境変数:

               環境変数 $SUN_PROFDATA および $SUN_PROFDATA_DIR を
               設定すると、 -xprofile=collect でコンパイルされた
               プログラムがプロファイルデータを置く場所を制御でき
               ます。上記の変数が設定されていない場合は、プロファ
               イルデータは現在のディレクトリの
               name.profile/feedback というファイルに保存されま
               す。name は実行可能ファイルの名前、または、 -
               xprofile=collect:name フラグで指定された名前に置き
               換えられます。

               環境変数が設定されていると、 -xprofile=collect で
               収集されたデータは $SUN_PROFDATA_DIR/$SUN_PROFDATA
               のディレクトリに置かれます。

               これらの環境変数は、 tcov で記述されたプロファイル
               データファイルのパスおよび名前も、同様に制御しま
               す。詳細については、 tcov(1) のマニュアルページを
               参照してください。

     -xprofile_ircache[=path]
               -xprofile_ircache[=path] を -xprofile=collect|use
               とともに使用すると、collect 段階で保存されたコンパ
               イルデータを再利用することで、use 段階でのコンパイ
               ル時間が改善されます。

               大きなプログラムの場合、中間データが保存されている
               ので、use 段階でのコンパイル時間が著しく向上しま
               す。保存データによってディスクスペース要求がある程
               度増えることに注意してください。

               -xprofile_ircache[=path] を使用すると、path が
               キャッシュ化されたファイルが保存されている場所を上
               書きします。デフォルトでは、このファイルはオブジェ
               クトファイルと同じディレクトリに保存されます。パス
               を指定すると、collect 段階と use 段階がそれぞれ別
               のディレクトリで実行される場合に便利です。

               コマンドは一般的に次のような順で指定します。

               example% CC -xO5 -xprofile=collect
               -xprofile_ircache t1.cc t2.cc
               example% a.out    // run collects feedback data
               example% CC -xO5 -xprofile=use -xprofile_ircache
               t1.cc t2.cc

     -xprofile_pathmap=collect_prefix:use_prefix
               -xprofile_pathmap オプションは、-xprofile=use と共
               に使用します。この -xprofile_pathmap は、次の条件
               に当てはまり、コンパイラが -xprofile=use でコンパ
               イルされたオブジェクトファイルのプロファイルデータ
               を見つけられない場合に使います。

               o  以前に -xprofile=collect でコンパイルされたディ
                  レクトリとは異なるディレクトリで、-xprofile=use
                  を指定してオブジェクトファイルをコンパイルしよ
                  うとする場合。

               o  オブジェクトファイルが、プロファイル中で共通の
                  ベース名を共用しているが、ディレクトリを別にし
                  て場所によってベース名を使い分けている場合。

               collect-prefix は、-xprofile=collect を使用してオ
               ブジェクトファイルがコンパイルされたディレクトリツ
               リーの UNIX パス名の接頭辞です。

               use-prefix は、-xprofile=use を使用してオブジェク
               トファイルをコンパイルしようとしているディレクトリ
               ツリーの UNIX パス名の接頭辞です。

               -xprofile_pathmap に複数のインスタンスを指定した場
               合、コンパイラはその指定の順序でそれらを処理してい
               きます。 -xprofile_pathmap のインスタンスが指定し
               た各 use-prefix は、マッチする use-prefix が特定さ
               れるか、最後に指定した use-prefix がオブジェクト
               ファイルのパス名と合わないことがわかるまで、オブ
               ジェクトファイルのパス名と比較されます。

     -xreduction
               自動的な並列化でループの縮約を解析します。このオプ
               ションは、-xautopar と併用された場合にのみ有効で
               す。それ以外の場合は、警告が発行されます。

               縮約検出が有効な場合、コンパイラは dot の積や最
               大、最小の検出などの縮約を並列化します。こうした縮
               約で生じる四捨五入は、並列化されていないコードで得
               られるものと異なります。

     -xregs=r[,r...]
               スクラッチレジスタの使用を制御します。

               コンパイラは一時記憶領域で使用できるレジスタ (スク
               ラッチレジスタ) が多いほど、高速なコードを生成でき
               ます。このオプションによって、使用可能なスクラッチ
               レジスタが追加されますが、追加することが適当でない
               場合もあります。

               r には、次の値のいずれか 1 つを指定するか、または
               複数をコンマで区切って指定します。
               [no%]appl (SPARC のみ)
                        アプリケーションレジスタをスクラッチレジ
                        スタとして使用するコードを、コンパイラが
                        生成することを、許可します[しません]。ア
                        プリケーションレジスタは次のものです。

                        g2、g3、g4 (32 ビットプラットフォーム)
                        g2、g3 (64 ビットプラットフォーム)

                        すべてのシステムソフトウェアおよびライブ
                        ラリは、-xregs=no%appl を使ってコンパイル
                        することを強く推奨します。システムソフト
                        ウェア (共用ライブラリを含む) は、アプリ
                        ケーションのためにレジスタの値を保持する
                        必要があります。レジスタの使用はコンパイ
                        ルシステムで制御されるよう意図されてお
                        り、アプリケーション全体で一貫していなけ
                        ればなりません。

                        SPARC ABI では、これらのレジスタはアプリ
                        ケーションレジスタと説明されています。こ
                        れらのレジスタを使用すると、必要なロード
                        およびストア命令の数が少なくなるため、パ
                        フォーマンスが改善されます。しかし、こう
                        した使用は、アセンブリコードで書かれた一
                        部の古いライブラリプログラムと矛盾する場
                        合があります。

                        SPARC 命令セットの詳細については -xarch
                        を参照してください。

               [no%]float (SPARC のみ)
                        整数値のためのスクラッチレジスタとして浮
                        動小数点レジスタを使用するコードを、コン
                        パイラが生成することを、許可します[しませ
                        ん]。浮動小数点の値を使用する場合、このオ
                        プションと関係なくこれらのレジスタが使用
                        される場合があります。浮動小数点レジスタ
                        に対するすべての参照をコードから排除した
                        い場合は、 -xregs=no%float を使用するのと
                        ともに、決して浮動小数点型をコードで使わ
                        ないようにする必要があります。

               [no%]frameptr (x86 のみ)
                        フレームポインタレジスタ (IA 32の場合
                        %ebp、x86 64 ビットの場合 %rbp) を未割り
                        当ての呼び出し先保存レジスタとして使用す
                        ることを許可 [禁止] します。

                        未割り当ての呼び出し先保存レジスタとして
                        フレームポインタレジスタを使用すると、プ
                        ログラムの実行時パフォーマンスが向上する
                        ことがあります。ただし、スタックを調べ、
                        追跡するために、パフォーマンスアナライザ
                        や dtrace などの一部ツールの能力の低下を
                        招きます。このスタック調査機能は、システ
                        ムパフォーマンスの測定やチューニングの際
                        に重要です。このため、この最適化を使用す
                        ると、グローバルなシステムパフォーマンス
                        を犠牲にしてローカルのプログラムパフォー
                        マンスが向上することがあります。

                        注: -xpg と併用された場合、
                        -xregs=frameptr は無視され、警告が発行さ
                        れます。また、32 ビット x86 向けコンパイ
                        ルで -noex オプションによって例外が無効に
                        されていない場合、コンパイラはこのオプ
                        ションを無視します。

               デフォルト:

               SPARC のデフォルト値は -xregs=appl,float です。
               -fast または -xO5 の最適化レベルが指定されなかった
               場合の x86 のデフォルト値は -xregs=no%frameptr で
               す (いずれかが指定された場合は
               -xregs=frameptr)。

     -xrestrict[=f]
               ポインタ値型関数パラメータを制限付きポインタとして
               扱います。f は、%all か %none、%source、またはコン
               マ区切りの1 つ以上の関数名のリストです。このコマン
               ド行オプションは単独使用できますが、最善は、-xO3
               以上の最適化レベルで使うことです。

               -xrestrict=%source を指定するということは、ヘッ
               ダーファイルやテンプレート定義ファイルではなく、
               main ソースファイルに定義されているすべての関数を
               制限付きにするということです。

               このオプションで関数リストが指定された場合、指定さ
               れた関数内のポインタ型パラメータは制限付きとして扱
               われます。-xrestrict=%all が指定された場合は、C++
               ファイル全体のすべてのポインタ型パラメータが制限付
               きとして扱われます。

               デフォルトは %none です。-xrestrict の指定は、
               -xrestrict=%source を指定するのと同等です。

               関連項目: -xprefetch_auto_type、C++ 
               の「制限付きポインタ」

     -xs       オブジェクトファイルなしで dbx によるデバッグがで
               きるようにします。

               このオプションは、デバッグ情報すべてを実行可能ファ
               イルにコピーします。dbx のパフォーマンスやそのプロ
               グラムの実行時のパフォーマンスにはほとんど影響を与
               えませんが、使用するディスクスペースの量は増えま
               す。

     -xsafe=mem
               (SPARC プラットフォーム) メモリーに関するトラップ
               が発生しないとみなします。

               このオプションは、コンパイラが、SPARC V9 アーキテ
               クチャーで障害発生を想定しないロード命令を使用する
               ことを許可します。

               警告:

               障害発生を想定しないロード命令は、アドレス割り当て
               の失敗やセグメント違反のような障害が発生した場合で
               も、トラップを発生させません。そのためこのオプショ
               ンは、そのような障害が起こり得ないプログラムでのみ
               使用してください。メモリーに基づくトラップを発生さ
               せるプログラムはごく少数なので、このオプションはほ
               とんどのプログラムで安全に使用できます。しかし、例
               外的な状態を処理するために、メモリーに基づいたト
               ラップを明示的に使用しているプログラムでは、このオ
               プションは使用しないでください。

               相互の関連性:

               このオプションは、 -xO5 の最適化レベルで、かつ、次
               のいずれかの値をとる -xarch オプションと一緒に使用
               された場合にのみ有効です。 -m32 および -m64 とも
               に、 sparc、 sparcis、または sparcvis2

     -xsb      非推奨。使用しないでください。ソースブラウザ機能は
               廃止されています。

     -xsbfast  非推奨。使用しないでください。ソースブラウザ機能は
               廃止されています。

     -xspace   コードサイズが大きくなるような最適化は行いません。

     -xtarget=t
               命令セットと最適化処理の対象システムを指定します。

               t は、次のいずれかにします。native、native64、gen-
               eric、generic64、system-name。

               このオプションはマクロで、-xtarget の値は、その値
               に対応する -xarch、-xchip、および -xcache の値セッ
               トに展開されます。-xtarget などのマクロオプション
               がどのように展開されるのかを確認する方法について
               は、 -dryrun の説明を参照してください。

               Note: あるホストプラットフォームでの -xtarget は、
               そのプラットフォームで -xtarget=native をコンパイ
               ルしたのと同じ -xarch、-xchip、-xcache の設定に展
               開されない場合があります。

               -xtarget=native は、-m32、-xarch=native、
               -xchip=native、 -xcache=native と同等です。

               -xtarget=native64 は、-m64、-xarch=native64、
               -xchip=native64、 -xcache=native と同等です。

               -xtarget=generic は、-m32、-xarch=generic、
               -xchip=generic、 -xcache=generic と同等です。

               -xtarget=generic64 は、-m64、-xarch=generic64、
               -xchip=generic64、 -xcache=generic と同等です。

               SPARC :

               SPARC または UltraSPARC V9 の 64 ビット Solaris ソ
               フトウェア向けコンパイルであることは、-m64 オプ
               ションによって指示されます。native64 または gen-
               eric64 以外のフラグを付けて -xtarget を指定する場
               合は、次のように -m64 オプションも指定してくださ
               い。
               -xtarget=ultra ...-m64
               これ以外の場合、コンパイラは 32 ビットメモリーモデ
               ルを使用します。

               値          意味

               native    ホストシステムで最高のパフォーマンスを得
                         ることができます。

                         コンパイラは、ホストシステムで最適のパ
                         フォーマンスとなるようにコードを生成しま
                         す。このフラグは、32 ビットアーキテク
                         チャーという想定の下に、コンパイラが動作
                         しているマシンで利用できるアーキテク
                         チャー、チップ、キャッシュ特性を決定しま
                         す。

               native64  ホストシステムで、最高のパフォーマンスを
                         得るためのパラメータを設定します。このフ
                         ラグは、64 ビットアーキテクチャーという
                         想定の下に、コンパイラが動作しているマシ
                         ンで利用できるアーキテクチャー、チップ、
                         キャッシュ特性を決定します。

               generic   デフォルトの設定です。多くの 32 ビットシ
                         ステムの一般的なアーキテクチャー、チッ
                         プ、キャッシュで最高のパフォーマンスが得
                         られます。

               generic64 多くの 64 ビットシステムの一般的なアーキ
                         テクチャー、チップ、およびキャッシュで最
                         高のパフォーマンスが得られます。

               platform-name
                         指定したシステムにおいて最高のパフォーマ
                         ンスが得られます。platform name に指定で
                         きる有効な値は、SPARC の場合、次のとおり
                         です。
                         ultra、ultra2、ultra2i、ultra1/140、
                         ultra1/170、ultra1/200、ultra2/1170、
                         ultra2/1200、ultra2/1300、ultra2/2170、
                         ultra2/2200、ultra2/2300、ultra2e、
                         ultra2i、ultra3、ultra3cu、ultra3i、
                         ultra4、ultra4plus、ultraT1、ultraT2、
                         sparc64vi。

                         次のターゲットプラットフォームは
                         -xtarget=ultra と同等です。
                         entr2、entr2/1170、entr2/2170、
                         entr2/1200、entr2/2200, entr3000、
                         entr4000、entr5000、entr6000

                         あまり使われないが、引き続き platform
                         name に有効な値を次に示します。
                         sun4/15、sun4/30、sslc、sslx、sslx2、
                         ss4、ss4/85、ss4/110、ss5、ss5/85、
                         ss5/110、ssvyger、ss10、ss10/hs11、
                         ss10/hs12、ss10/hs14, ss10/20、
                         ss10/hs21、ss10/hs22、ss10/30、ss10/40、
                         ss10/41、ss10/50、ss10/51、ss10/61、
                         ss10/71、ss10/402、ss10/412、ss10/512、
                         ss10/514、ss10/612, ss10/712、ss20、
                         ss20/hs11、ss20/hs12、ss20/hs14、
                         ss20/hs21、ss20/hs22、ss20/50、ss20/51、
                         ss20/61、ss20/71、ss20/151、ss20/152、
                         ss20/502、ss20/512、ss20/514、ss20/612、
                         ss20/712、ss600/41、ss600/51、ss600/61、
                         ss600/412、ss600/512、ss600/514、
                         ss600/612, ss1000、sc2000、cs6400、solb6

               プラットフォーム名についての詳細は、『C++ ユーザー
               ズガイド』を参照してください。

               x86 :

               64 ビット x86 プラットフォームの 64 ビット Solaris
               ソフトウェア向けコンパイルであることは、-m64 オプ
               ションによって指示されます。native64 または gen-
               eric64 以外のフラグを付けて -xtarget を指定する場
               合は、次のように -m64 オプションも指定してくださ
               い。
               -xtarget=opteron ...-m64
               これ以外の場合、コンパイラは 32 ビットメモリーモデ
               ルを使用します。

               値          意味

               386、486  廃止。これらのフラグは使用しないでくださ
                         い。代わりに -xtarget=generic を使用して
                         ください。『C++ 』の廃止
                         オプションとフラグの全一覧を参照してくだ
                         さい。

               generic   デフォルトの設定です。多くの 32 ビットシ
                         ステムの一般的なアーキテクチャー、チッ
                         プ、キャッシュで最高のパフォーマンスが得
                         られます。

               generic64 多くの 64 ビットシステムの一般的なアーキ
                         テクチャー、チップ、およびキャッシュで最
                         高のパフォーマンスが得られます。

               native    コンパイラは、このホストシステムで最高の
                         パフォーマンスが得られるようにコードを生
                         成します。このフラグは、32 ビットアーキ
                         テクチャーという想定の下に、コンパイラが
                         動作しているマシンで利用できるアーキテク
                         チャー、チップ、キャッシュ特性を決定しま
                         す。

               native64  このホストシステムで最高のパフォーマンス
                         を得られるようにパラメータを設定します。
                         このフラグは、64 ビットアーキテクチャー
                         という想定の下に、コンパイラが動作してい
                         るマシンで利用できるアーキテクチャー、
                         チップ、キャッシュ特性を決定します。

               opteron   AMD Opteron マイクロプロセッサで最高のパ
                         フォーマンスが得られるコードが生成されま
                         す。
                         注: -xtarget=opteron オプションは、自動
                         的には 64 ビットコードを生成しません。64
                         ビットコードをコンパイルするには、-m64
                         を指定します。

               pentium   Pentium マイクロプロセッサで最高のパ
                         フォーマンスが得られるコードが生成されま
                         す。

               pentium_pro
                         Pentium Pro マイクロプロセッサで最高のパ
                         フォーマンスが得られるコードが生成されま
                         す。

               pentium3  Pentium 3 マイクロプロセッサで最高のパ
                         フォーマンスが得られるコードが生成されま
                         す。

               pentium4  Pentium 4 マイクロプロセッサで最高のパ
                         フォーマンスが得られるコードが生成されま
                         す。

     -xthreadvar[=o]
     __thread 宣言指定子とともに働き、スレッドローカルな記憶領域
     に関するコンパイラの機能が使用されます。__thread 指定子でス
     レッド変数を宣言したあとで、 -xthreadvar を指定すると、動的
     (共用) ライブラリの位置依存コード (非 PIC コード) で、スレッ
     ドローカルな記憶領域の使用が可能になります。__thread の使用
     法の詳細については、C++ を参照してくださ
     い。

     値


     o は次のいずれかの値です。

     値          意味

     [no%]dynamic
               動的ロードのための変数をコンパイルします[しません
               ]。スレッド変数へのアクセスは、
               -xthreadvar=no%dynamic の場合に著しく向上します
               が、動的ライブラリの中ではオブジェクトファイルを使
               用できません。つまり、オブジェクトファイルは実行可
               能ファイルの中でだけ使用できるということです。


     デフォルト


     -xthreadvar を指定しないと、コンパイラの使用するデフォルト
     は、位置独立コードが有効かどうかによって異なります。位置独立
     コードが有効であれば、このオプションは  -xthreadvar=dynamic
     に設定されます。位置独立コードが有効でない場合は、オプション
     は -xthreadvar=no%dynamic に設定されます。

     -xthreadvar 指定して引数を指定しない場合、オプションは
     -xthreadvar=dynamic に設定されます。

     相互の関連性

     バージョンの異なる Solaris ソフトウェアでスレッド変数を使用
     するには、コマンド行に異なるオプションを指定する必要がありま
     す。

     Solaris 9 ソフトウェアの場合、__thread を使うオブジェクト
     は、 -mt を指定してコンパイルおよびリンクしなければなりませ
     ん。

     警告

     位置依存コードが動的ライブラリ内にある場合は、 -xthreadvar
     を指定しなければなりません。

     リンカーは、動的ライブラリ中の位置依存コード (非 PIC) スレッ
     ド変数と同等のものをサポートできません。また、非 PIC スレッ
     ド変数は非常に高速なため、実行可能ファイルのデフォルトとして
     指定できます。

     See Also

     -xcode、-KPIC、-Kpic

     -xtime
     さまざまなコンパイルパスの実行時間を報告するように CC ドライ
     バに指示します。

     -xtrigraphs[={yes|no}]
     ISO/ANSI C 標準規格で定義されているように、3 文字表記シーケ
     ンスの認識を有効または無効にします。

     -xtrigraphs=yes は、ソースコード中の 3 文字表記シーケンスの
     認識を有効にします。

     -xtrigraphs=no は、ソースコード中の 3 文字表記シーケンスの認
     識を無効にします。

     デフォルト:

     -xtrigraphs オプションの指定がない場合は、 -xtrigraphs=yes
     が仮定されます。

     -xtrigraphs とだけ指定された場合は、 -xtrigraphs=yes が仮定
     されます。

     -xunroll=n
     可能な場合はループの展開を有効にします。

     このオプションは、コンパイラがループを最適化 (展開) するかど
     うかを指定します。

     n を 1 にすると、コンパイラはループを展開しません。

     n が 1 より大きい整数の場合、 -xunroll=n により、コンパイラ
     はループを n 回展開します。

     -xustr={ascii_utf16_ushort|no}
     このオプションは、コンパイラによる UTF-16 文字列およびリテラ
     ルの認識を可能にします。UTF-16 文字列およびリテラルは規格に
     は取り込まれていないため、このオプションは、規格外の C++ の
     認識を可能にします。ISO10646 UTF-16 文字を使用している国際化
     されたアプリケーションサポートする必要がある場合は、
     -xustr=ascii_utf16_ushort を指定してください。言い替えれば、
     このオプションは、オブジェクトファイル内に UTF-16 文字に変換
     する必要がある文字列がコードに含まれている場合に使用します。
     このオプションを指定しないと、コンパイラは 16 ビット文字の生
     成、認識のいずれも行ないません。このオプションは、
     U"ASCII_string" 文字列リテラルを符号なし
      short int として認識することを可能にします。また、文字リテ
     ラルの認識も可能にします。例: unsigned short character =
     U'Z';

     U"ASCII_string" 文字列リテラルのコンパイラによる認識を無効に
     できます。コマンド行に指定された、このオプションの最も右側の
     インスタンスがそれより左のインスタンスすべてを上書きします。

     デフォルトは -xustr=no です。-xustr を指定して引数を指定しな
     い場合、コンパイラはそれを受け付けず、代わりに警告を出しま
     す。このデフォルトは、C または C++ の規格が構文の意味を定義
     すれば変更できます。

     -xustr=ascii_ustf16_ushort を指定して、U"ASCII_string" 文字
     列リテラルを指定しない場合、それはエラーにはなりません。

     必ずしもすべてのファイルがこのオプションでコンパイルされる必
     要はありません。

     次に、「U」が先頭に付いた引用符で囲まれた文字列ストリングの
     例を示します。また、-xustr を指定したコマンド行も示します。

     example% cat file.cc
     const unsigned short *foo = U"foo";
     const unsigned short bar[] = U"bar";
     const unsigned short *fun() { return
     example% CC -xustr=ascii_utf16_ushort file.cc -c


     -xvector[=a]
     ベクトルライブラリ関数に対する呼び出しの自動生成、SIMD (Sin-
     gle Instruction Multiple Data) 命令の生成、またはその両方を
     有効にします。このオプションを使用するときは -fround=nearest
     を指定することによって、デフォルトの丸めモードを使用する必要
     があります。


     a は次と同等です。

     [no%]lib
          可能な場合はループ内の数学ライブラリへの呼び出しを、同
          等のベクトル数学ルーチンへの単一の呼び出しに変換するこ
          とを許可します [しません]。ループカウントが多いループの
          パフォーマンスが向上することがあります。

     [no%]simd
          特定のループのパフォーマンス向上のために、ネイティブの
          x86 SSE SIMD 命令の使用を指示します [しません]。コンパ
          イラは、ターゲットアーキテクチャーが SIMD 命令をサポー
          トしている場合にのみ、このスイッチを受け付けることがで
          きます。たとえば、-xarch=sse2 -m64 または
          -xarch=generic64 を指定する必要があります。
          -xvector=simd を指定する場合は、最適化レベル -xO3 以
          上、さらには -xdepend も指定する必要があります。

     yes  このオプションは、将来のリリースで廃止される可能性があ
          ります。代わりに -xvector=lib を使用してください。

     no   このオプションは、将来のリリースで廃止される可能性があ
          ります。代わりに -xvector=none を使用してください。


     デフォルトは ctor=%none です。-xvector とだけ指定して、フラ
     グを指定しないと、-xvector=lib とみなされます。


     このオプションは、それ以前の同じオプションの指定に優先するた
     め、 -xvector=lib のあとに-xvector=%none を指定すると、
     -xvector=lib は取り消されます。


     前に -xdepend が指定されていないコマンド行で -xvector を使用
     した場合は、-xvector によって -xdepend が有効になります。
     -xvector オプションはまた、最適化レベルが指定されていない
     か、-O3 より低い場合に、最適化レベルを -O3 に上げます。


     コンパイラは、ロードステップで libmvec ライブラリを取り込み
     ます。コンパイルとリンクを別のコマンドで行う場合は、必ず、リ
     ンクの CC コマンドで同じ -xvector オプションを使用してくださ
     い。コンパイル時およびリンク時両方に指定する必要があるコンパ
     イラオプションの全一覧は、『C++ ユーザーズガイド』を参照して
     ください。

     -xvis
     (SPARC) VIS[tm] 命令セット Software Developers Kit (VSDK) に
     定義されたアセンブリ言語のテンプレートを使用するときには、
     -xvis=[yes|no] コマンドを使います。デフォルトは -xvis=no で
     す。 -xvis と指定すると -xvis=yes の意味になります。
     VIS 命令セットは SPARC v9 命令セットの拡張機能です。
     UltraSPARC プロセッサは 64 ビットですが、とくにマルチメディ
     アアプリケーションでは、データ長が 8 ビットや 16 ビットのサ
     イズに限られているような場合も多くあります。VIS 命令は 4 つ
     の 16 ビットデータを 1 つの命令で処理でき、したがって、イ
     メージ、線形代数、信号処理、オーディオ、ビデオ、ネットワーク
     といった新しいメディアを扱うアプリケーションのパフォーマンス
     を大幅に向上させます。

     VSDK の詳細については http://www.sun.com/processors/vis/ を
     参照してください。

     -xwe
     ゼロ以外の終了状態を返すことによって、すべての警告をエラーと
     して扱います。

     -Yc,path
     コンポーネント c がある場所の新しいパスを指定します。


     コンポーネントの場所が指定された場合、その新しいパス名は
     path/component_name になります。このオプションは ld に渡され
     ます。

     値

     c は次の値のいずれかです。

     p   cpp のデフォルトディレクトリを変更します。

     0   ccfe のデフォルトディレクトリを変更します。

     a   fbe のデフォルトディレクトリを変更します。

     2   iropt のデフォルトディレクトリを変更します (SPARC のみ
         )。

     c   cg のデフォルトディレクトリを変更します (SPARC のみ)。

     O   ipo のデフォルトディレクトリを変更します (SPARC のみ)。

     k   CClink のデフォルトディレクトリを変更します。

     l   ld のデフォルトディレクトリを変更します。

     f   c++filt のデフォルトディレクトリを変更します。

     m   mcs のデフォルトディレクトリを変更します。

     u   ube のデフォルトディレクトリを変更します (x86 のみ)。

     i   ube_ipa のデフォルトディレクトリを変更します (x86 のみ
         )。

     h   ir2hf のデフォルトディレクトリを変更します (x86 のみ)。

     A   すべてのコンパイラコンポーネントの検索先のディレクトリを
         指定します。指定された path にコンポーネントが見つからな
         かった場合、コンパイラがインストールされているディレクト
         リに戻って、検索が行われます。

     P   デフォルトのライブラリ検索パスに path を追加します。デ
         フォルトのライブラリ検索パスの前に、この path が調べられ
         ます。

     S   起動オブジェクトファイルのデフォルトのディレクトリを変更
         します。


     相互の関連性


     1 つのコマンド行に複数の -Y オプションを指定できます。1 つの
     コンポーネントに複数の -Y オプションが指定されている場合は、
     その最後の指定が有効になります。


     関連項目


     Solaris の『リンカーとライブラリ』

     -z arg
     リンクエディタのオプションです。

     詳細は、 ld(1) のマニュアルページおよび Solaris の『リンカー
     とライブラリ』を参照してください。

  PRAGMAS
     次はコンパイルシステムが認識する #pragmas です。
     #pragma align
     #pragma does_not_read_global_data
     #pragma does_not_return
     #pragma does_not_write_global_data
     #pragma dump_macros
     #pragma end_dumpmacros
     #pragma fini
     #pragma hdrstop
     #pragma ident
     #pragma init
     #pragma pack
     #pragma rarely_called
     #pragma returns_new_memory
     #pragma unknown_control_flow
     #pragma weak

     SPARC :
     #pragma no_side_effect

     これらのプラグマの詳細については、C++ を
     参照してください。


注意事項

     C++ コンパイラには、静的ライブラリの libC.a および libCrun.a
     が含まれています。ただし、それらに対応する、バンドルされてい
     る共有ライブラリの libC.so.5 および libCrun.so.1 は、Solaris
     9 オペレーティング環境の C++ コンパイラと同期がとられていま
     せん。コンパイラが Solaris 9 オペレーティング環境の共有ライ
     ブラリと正しく連携するには、適切な OS パッチをインストールす
     る必要があります。C++ FAQ のパッチの一覧を参照するか、
     www.sunsolve.com に移動して、libCrun を検索してください。検
     索範囲を「Search」リストボックスのデフォルトである「All Sun
     Internal Collections」ではなく、「Patch Descriptions」に絞っ
     て検索してください。


ファイル

     file.a                                  静的ライブラリ
     file.C                                  入力ファイル
     file.cc                                 入力ファイル
     file.c++                                入力ファイル
     file.cpp                                入力ファイル
     file.cxx                                入力ファイル
     file.o                                  オブジェクトファイル
     file.so                                 動的 (共有) ライブラ
                                             リ
     a.out                                   リンク後の出力

関連項目

     analyzer(1)as(1)c++filt(1)cc(1)csh(1)dbx(1)gprof(1)ld(1)more(1)nm(1)prof(1)tcov(1)

     『C++ ユーザーズガイド』
     『C++ 移行ガイド』
     『プログラミング言語 C++』第 2 版、B. Stroustrup 著、トッパ
     ン
     『プログラミング言語 C』第 2 版、B.W. Kernighan、D.M. Richie
     共著、共立出版
     Solaris の『リンカーとライブラリ』
     『International Standard (ISO/IEC FDIS 14882)』の Program-
     ming Languages - C++