# マニュアルページ 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] [-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] [-keeptmp]
              [-KPIC] [-Kpic] [-Lpath] [-llib] [-libmieee] [-libmil]
              [-library=lib[,lib...]]  [-mc] [-migration] [-misalign]
              [-mr[,string]] [-mt] [-native] [-noex] [-nofstore]
              [-nolib] [-nolibmil] [-noqueue] [-norunpath] [-O[n]]
              [-o file] [+p] [-P] [-p] [-pentium] [-pg] [-PIC] [-pic]
              [-pta] [-ptipath] [-pto] [-ptrpath] [-ptv]
              [{-Qoption|-qoption} phase option[,option...]]
              [{-Qproduce|-qproduce} type] [-qp] [-Rpath[:path...]]
              [-readme] [-S] [-s] [-sb] [-sbfast]
              [-staticlib=l[,l...]]  [-temp=path]
              [-template=a[,a...]]  [-time] [-Uname] [-unroll=n] [-V]
              [-v] [-vdelx] [-verbose=a[,a...]]  [+w] [+w2] [-w]
              [-xa] [-xalias_level[=n]] [-xar] [-xarch=isa]
              [-xbuiltin[={%all|%none}]] [-xcache=c] [-xcg{89|92}]
              [-xchar[=o]] [-xcheck[=n]] [-xchip=c] [-xcode=v]
              [-xcrossfile[=n]] [-xdumpmacros[=value[,value...]]
              [-xe] [-xF] [-xhelp={flags|readme}] [-xia]
              [-xild{off|on}] [-xinline[=func_spec[,func_spec...]]
              [-xipo[={0|1|2}] [-xjobs=n]
              [-xlang=language[,language]] [-xldscope={v}] [-xlib-
              mieee] [-xlibmil] [-xlibmopt] [-xlic_lib=sunperf]
              [-xlicinfo] [-xlinkopt[=level]] [-Xm] [-xM] [-xM1]
              [-xMerge] [-xmemalign=ab] [-xnativeconnect[=n]] [-xno-
              lib] [-xnolibmil] [-xnolibmopt] [-xOn] [-xopenmp]
              [-xpagesize=n] [-xpagesize_heap=n] [-xpagesize_stack=n]
              [-xpch=v] [-xpchstop] [-xpg] [-xport64[=v]]
              [-xprefetch[=a[,a]] [-xprefetch_level[=l]]
              [-xprofile=p] [-xprofile_ircache[=path]]
              [-xprofile_pathmap=collect_prefix:use_prefix]
              [-xregs=r[,r...]]  [-xs] [-xsafe=mem] [-xsb] [-xsbfast]
              [-xspace] [-xtarget=t] [-xthreadvar[=f2o]] [-xtime]
              [-xtrigraphs[={yes|no}]] [-xunroll=n]
              [-xustr={ascii_utf16_ushort|no}] [-xvis] [-xwe]
              [-z arg] [file] ...

## Sun[tm] Open Network Environment (Sun ONE)

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

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

         Readme ファイル、ユーザーズガイド、リファレンスマニュアルを
         含むすべてのインストール済み Sun ONE Stuido 8 Compiler Col-
         lection マニュアルには、HTML ブラウザで以下の URL を指定して
         アクセスできます。
            file:/opt/SUNWspro/docs/ja/index.html

         注 - このドキュメントの中で、"IA" という用語は Pentium、Pen-
         tium Pro、Pentium II、Pentium II Xeon、Celeron、Pentium
         III、および Pentium III Xeon プロセッサを含む Intel 32 ビッ
         トプロセッサアーキテクチャと、AMD と Cyrix によって製造され
         る互換マイクロプロセッサチップを指します。

## 機能説明

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

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

         CC では、 .c、 .C、 .cc、 .cxx、 .c++、 .cpp、 .i のいずれか
         の接尾辞を持つ引数は、C++ のソースプログラムと見なされます。
         ファイルの接尾辞が .s の場合はアセンブルのソースファイル、
         .o の場合はオブジェクトファイルであると見なされます。

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

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

         インクリメンタルリンクを行う場合は、ld の代わりに ild が使用
         されることがあります。詳細は、-xildon および -xildoff の項を
         参照してください。

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

## 64 ビットのコンパイル

         C++ コンパイラは、64 ビットカーネルを持つ Solaris 7 および
         Solaris 8 オペレーティング環境 (SPARC Platform Edition) 上
         で、64 ビットのオブジェクトバイナリを生成できます。その実行
         可能プログラムは、64 ビットカーネルを持つ Solaris 7 および
         Solaris 8 オペレーティング環境の SPARC V9 (64 ビット) プロ
         セッサのみで実行します。

         64 ビットアプリケーションを作成するには、 -xarch=v9、
         -xarch=v9a または -xarch=v9b のいずれかのオプションを使用し
         ます。 -xtarget または -fast も指定する場合でも、これらのオ
         プションのいずれか 1 つを指定しなけれなりません。この場合、
         -xarch=v9 、 -xarch=v9a または -xarch=v9b オプションは、
         -xtarget を設定するオプション ( -fast など) の後に指定しなけ
         ればなりません。たとえば、次のように指定します。

             -xtarget=ultra -xarch=v9

         -xtarget=ultra と -xtarget=ultra2 は -xarch=v8 の指定を含み
         ます。 -xarch=v9 、 -xarch=v9a および -xarch=v9b は含まれま
         せん。

         コードのアドレス形式の指定については、新しいオプション
         -xcode=abs32|abs44|abs64|pic13|pic32 も参照してください。

         64 ビット Solaris ソフトウェアに関する開発者向けの情報につい
         ては、http://docs.sun.com にある『Solaris 64 ビット開発ガイ
         ド』を参照してください。

## オプション

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

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

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

         -386      (IA プラットッフォーム) -xtarget=386 を使用しま
                   す。

         -486      (IA プラットッフォーム) -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 を使用し
                   ないで、代わりにリンカーマップファイルを使用してく
                   ださい。

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

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

                   別々のステップでコンパイルおよびリンクし、-Bbind-
                   ing オプションを使用する場合、このオプションはリン
                   クステップに置く必要があります。

         -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 の設定に関係なく、
                   __SUNPRO_CC_COMPAT は 0x550 に設定されます。

                   相互の関連性:

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

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

                     o -Bsymbolic (ライブラリに例外がある場合)
                     o -features=[no%]strictdestorder
                     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 +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

                   警告:

                   互換モードで共用ライブラリを構築する場合、ライブラ
                   リに例外があれば、 (-compat[=4]) は (-Bsymbolic)
                   を使用しません。例外を捕獲できない場合があります。

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

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

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

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

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

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

                   o 関数が複雑すぎます。

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

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

                   相互の関連性:

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

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

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

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

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

                   SPARC および IA プラットフォーム:

                   __BUILTIN_VA_ARG_INCR
                   __cplusplus
                   __DATE__
                   __FILE__
                   __LINE__
                   __STDC__
                   __SVR4
                   __SUNPRO_CC = 0x550
                   __SUNPRO_CC_COMPAT = 4 または 5
                   __sun
                   sun
                   __TIME__
                   __`uname -s`_`uname -r` (無効な文字列は下線に置き
                   換えられます。例: -D__SunOS_5_7, -D__SunOS_5_8)
                   __unix
                   unix
                   _WCHAR_T
                   __ARRAYNEW「配列」形式の operator new と operator
                   delete が有効な場合 (「-features=[no%]arraynew」を
                   参照)
                   _BOOL bool 型が有効な場合 (「-features=[no%]bool」
                   を参照)

                   (SPARC のみ)

                   __sparc
                   sparc (32 ビット用のコンパイルのみ)

                   (SPARC V9 のみ)

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

                   (IA プラットフォームのみ)
                   __i386
                   i386

                   デフォルト:

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

                   相互の関連性:

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

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

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

                   -dn では、リンカーは静的リンクを行います。
                   このオプションと引数は、 ld に渡されます。

                   相互の関連性:

                   64 ビット環境では、システムライブラリの多くは動的
                   共用ライブラリとして有効です。これには、 libm.so、
                   および libc.so が含まれ、 libm.a および libc.a は
                   提供されません。結果として、 -Bstatic および -dn
                   により 64 ビット Solaris オペレーティング環境でリ
                   ンクエラーが発生します。このような場合、アプリケー
                   ションは動的ライブラリとリンクする必要があります。

         -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...] ]
                   CC 警告メッセージを抑止します。エラーメッセージに
                   は影響しません。

                   値:

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

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

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

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

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

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

                   デフォルト:

                   デフォルトは -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++ コンパイラがエラーステータス
                   で終了します。

                   値:

                   t は tag、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 コンパイラをエ
                   ラーステータスで終了させることができます。

                   関連項目:

                   -erroff、-errtags

         -fast     コンパイルオプションの最適な組み合わせを選択して、
                   コードをコンパイルするシステム上での実行速度を向上
                   させます。このオプションを指定すると、以下のオプ
                   ションが展開され、ほとんどのアプリケーションで最高
                   に近いパフォーマンスが得られます。

                   o -fns (SPARC、IA)

                   o -fsimple (SPARC のみ)

                   o -ftrap=%none (SPARC、IA)

                   o -nofstore (IA のみ)

                   o -xarch (SPARC、IA)

                   o -xlibmil (SPARC、IA)

                   o -xlibmopt (SPARC、IA)

                   o -xmemalign (SPARC のみ)

                   o -xO5 (SPARC、IA)

                   o -xtarget=native (SPARC、IA)

                   o -xbuiltin=%all (SPARC, IA)

                   相互の関連性:

                   コード生成オプション、最適化レベル、組み込み関数の
                   最適化、インラインテンプレートファイルの使用を指定
                   しても、その後で指定したフラグの方が優先されます。
                   たとえば、 -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 シグナルが発生する可能性があ
                   ります。

                   -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%extenstions です。

                   [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%]rtti      (互換モードのみ) 実行時の型識別
                                  (RTTI) を許可 [禁止] します。
                                  dynamic_cast<> 演算子と typeid 演算
                                  子を使用するには、RTTI を有効にしな
                                  ければなりません。デフォルトは
                                  no%rtti です。

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

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

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

                   [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 が仮定さ
                   れます。

                   相互の関連性:

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

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

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

                   警告:

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

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

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

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

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

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

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

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

                   %none          -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

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

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

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

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

                   デフォルト:

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

                   拡張:

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

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

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

         -fns[={no|yes}]

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

                   このフラグを設定すると、プログラムが実行を開始する
                   ときに、非標準の浮動小数点モードが有効になります。

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

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

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

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

                   デフォルト:

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

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

                   警告:

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

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

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

         -fprecision=a
                   (IA プラットフォーム) 浮動小数点の丸め精度モードを
                   設定します。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 になります。

                   警告:

                   このオプションは、IA プラットフォームで、メインプ
                   ログラムのコンパイル時に使用された場合にのみ有効で
                   す。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 を指定すると、オプティマイザ
                             は丸めや例外を完全に無視して最適化を行う
                             ことはできません。特に、浮動小数点演算の
                             場合で、実行時に適用される丸めモードで異
                             なる値を生成する演算には置き換えることは
                             できません。

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

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

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

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

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

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

                   デフォルト:

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

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

                   警告:

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

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

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

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

                   警告:

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

         -ftrap=a[,a...]
                   IEEE 754 トラップモードを起動時に有効に設定しま
                   す。
                   このオプションは、プログラムの初期化時に確立された
                   IEEE 754 トラップモードを設定しますが、 SIGFPE ハ
                   ンドラはインストールしません。 ieee_handler を使用
                   すると、トラップを有効にすると同時に、 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 値が仮定さ
                   れます (トラップは自動的に無効になります)。

                   例:

                   1 つ以上の値を指定すると、値は左から右の順番に処理
                   されます。したがって、 -ftrap=%all、no%inexact
                   は、 inexact 以外のすべてのトラップを設定すること
                   になります。

                   相互の関連性:
                   ieee_handler(3M) では、モードは実行時に変更される
                   可能性があります。

                   警告:

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

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

                   x = 1.0 / 3.0;

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

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

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

                   -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 かまたはそれ以下で、このオプ
                     ションを使用する場合、コンパイラはほとんど完全な
                     最適化とともに最善のシンボリック情報を提供しま
                     す。末尾呼び出し最適化およびバックエンドのインラ
                     イン化は無効になります。

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

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

                     このオプションを指定すると、 -xildon が指定され
                     てデフォルトのリンカーがインクリメンタルリンカー
                     になるため、コンパイル、編集、デバッグの開発作業
                     にかかる時間を短縮することができます。 -xildon
                     および -xildoff の項目を参照してください。以下の
                     条件がすべてあてはまらない場合は、 ld ではなく
                     ild を起動します。

                   o -G オプションを指定している

                   o -xildoff オプションを指定している

                   o コマンド行でソースファイルを指定している

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

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

                   関連項目:

                   ld(1) のマニュアルページのほかに、 -go および +d
                   の項目も参照してください。dbx スタブの詳細について
                   は、『dbx コマンドによるデバッグ』を参照してくださ
                   い。

         -g0       デバッガ用のシンボルテーブル情報を生成します。ただ
                   し、C++ のインライン展開は可能なままです。このオプ
                   ションは、 +d が無効になることを除いて、 -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
                   オプションを使用することをお勧めします。

         -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

                   警告:

                   -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 を使う理由はなくなりま
                             した。このオプションは古いコンパイラで発
                             生する問題を克服するために提供されていま
                             したが、こうした問題は C++ 5.5 には存在
                             しません。
                             すべての必要なインスタンスを現在のオブ
                             ジェクトファイルに配置し、静的リンケージ
                             を与えます。

                   デフォルト:

                   -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

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

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

                   (IA プラットフォーム) -Kpic と同義です。

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

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

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

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

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

                   相互の関連性:

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

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

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

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

                   相互の関連性:

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

                   警告:

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

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

                   関連項目:

                   -mt

         -libmieee -xlibmieee を使用します。

         -libmil   -xlibmil を使用します。

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

                   -library オプションを使って 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        SPARC: Sun Performance
                                       Library(TM) を使用します [しま
                                       せん]。

                   %all                推奨しません。 -library=%all
                                       は -library=f77、 f90、
                                       rwtools7、 complex、 inter-
                                       val、 gc を指定するのと同じで
                                       す。 libC ライブラリは、
                                       -library=no%libC を使用して特
                                       別に除外されない限りは、常にイ
                                       ンクルードされることに注意して
                                       ください。

                   %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      SPARC: Sun Performance Library
                                       (TM) を使用します [しません]。

                   %all                推奨しません。 -library=%all
                                       は -library=f77、 f90、
                                       rwtools7、 gc、 interval、
                                       iostream、 Cstd と同じです。
                                       libCrun ライブラリは
                                       -library=no%Crun を使用して特
                                       別に除外されない限り、常にイン
                                       クルードされることに注意してく
                                       ださい。

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

                   デフォルト:

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

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

                   標準モード (デフォルトモード) で、 -library が指定
                   されない場合、 -library=%none,Cstd が指定されま
                   す。

                   libCstd ライブラリは、-library=%none または
                   -library=no%Cstd または -library=stlport4 を使用し
                   て特別に除外されない限り、常にインクルードされま
                   す。

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

                   例:

                   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=rwtools foo.cc
                   無効:
                   example% CC -compat -library=rwtools_std foo.cc

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

                   有効 (標準 iostreams)
                   example% CC -library=rwtools_std foo.cc
                   無効
                   example% CC -library=rwtools_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=sunperf および -xlic_lib=sunperf は同じコ
                   マンド行では使用できません。

                   -library オプションを使用すれば、指定されたライブ
                   ラリの -l オプションを正しい順序で出力できます。た
                   とえば、 -library=rwtools7 、 iostream でも
                   -library=iostream 、 rwtools7 でも -l オプションは
                   -lrwtool -liostream の順序で ld に渡されます。

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

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

                   警告:

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

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

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

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

                   以下の理由から、 -library=%all オプションを使用し
                   ないことをお勧めします。

                        o コマンドによって実際にインクルードされるラ
                        イブラリ群は、各リリース間で異なる可能性があ
                        ります。

                        o 予期したライブラリが指定されない可能性があ
                        ります。
                        o 予期しないライブラリが指定される可能性があ
                        ります。

                        o 他の開発者がメークファイルのコマンド行を見
                        ても、実際に何がリンクされるのかを知ることは
                        できません。

                        o このオプションはコンパイラの将来のリリース
                        では削除される予定です。

                   関連項目:

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

         -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       マルチスレッド化されたコード用のコンパイルおよびリ
                   ンクを行います。

                   このオプションは次のことを実行します:

                   o -D_REENTRANT をプリプロセッサに渡します。

                   o -lthread を正しい順序で ld に渡します。

                   o 標準モード (デフォルトモード) で、 libCrun より
                     も前に libthread がリンクされることを保証しま
                     す。

                   o 互換モード (-compat) で libC よりも前に lib-
                     thread がリンクされることを保証します。

                   -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 (IA プラットフォーム) 式の精度を強制しません。

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

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

         -nolib    -xnolib を使用します。

         -nolibmil -xnolibmil を使用します。

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

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

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

                   製品用の実行可能ファイルを構築する場合で、その製品
                   のユーザーが共有ライブラリのパスとして、プログラム
                   で使用されるパスとは異なるパスを使用する可能性があ
                   るときに、このオプションを使用することをお勧めしま
                   す。

                   相互の関連性:

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

         -O        -xO2 と同義です。

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

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

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

                   警告:

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

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

                   デフォルト:

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

                   相互の関連性:

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

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

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

         -p        prof(1) でプロファイリングを行うためのデータを収集
                   するオブジェクトコードを作成します。実行内容を記録
                   し、正常終了時に mon.out というファイルを生成しま
                   す。

                   警告:

                   別々のステップでコンパイルおよびリンクする場合、
                   -p オプションはコンパイルコマンドおよびリンクコマ
                   ンド両方に存在する必要があります。あるステップに
                   -p をインクルードして、その他のステップにはインク
                   ルードしなくてもプログラムの正確さには影響ありませ
                   んが、プロファイルができなくなるでしょう。

                   -xpg -xprofile analyzer(1) のマニュアルページを参
                   照してください。
                   『プログラムのパフォーマンス解析』

         -pentium  (IA プラットフォーム) -xtarget=pentium を使用しま
                   す。

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

                   IA:  -KPIC と同じです。

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

                   IA:  -Kpic と同じです。

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

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

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

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

                   相互の関連性:

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

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

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

                   警告:

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

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

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

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

                   SPARC             IA

                   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       CC -xsb を使用します。

         -sbfast   -xsbfast を使用します。

         -staticlib=l[,l...]
                   -library オプション (デフォルトのライブラリを含む)
                   により、 -xlang オプション中で、 -xia オプションを
                   使用して指定される C++ ライブラリのうち、静的にリ
                   ンクされるライブラリを指示します。

                   値:
                   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 ビットアーキテクチャーオプション)
                   を使用するときには、一部のライブラリは静的ライブラ
                   リとして使用できません。

         -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        警告メッセージを抑止します。

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

         -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=empty が設定されます。

                   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) を指定し
                   ます。

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

                   コンパイルとリンクを別々の手順で行なう場合には、ど
                   ちらの手順でも同じ -xarch の値を指定するようにして
                   ください。

                   値:

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

                   値          意味

                   generic   ほとんどのシステムで良好なパフォーマンス
                             を得られるように 32 ビットオブジェクトバ
                             イナリを生成します。

                             これはデフォルトです。このオプションは、
                             どのプロセッサでも大きくパフォーマンスを
                             落とさずに、ほとんどのプロセッサで良好な
                             パフォーマンスを得るための最良の命令セッ
                             トを使用します。「最良な命令セット」の定
                             義は、(必要に応じて) リリースごとに調整
                             される可能性があります。 -xdryrun オプ
                             ションを使用すると、このリリースに対する
                             -xarch=generic の値を確認できます。

                   generic64 ほとんどの 64 ビット対応プラットフォーム
                             で最高のパフォーマンスを得るために 64
                             ビットオブジェクトバイナリを生成します。

                             このオプションは、どのプロセッサでも大き
                             くパフォーマンスを落とさずに 64 ビット
                             カーネル Solaris オペレーティング環境で
                             良好なパフォーマンスを得るための最良の命
                             令セットを使用します。「最良な命令セッ
                             ト」の定義は、必要に応じてリリースごとに
                             調整される可能性があります。

                   native    当該システムで良好なパフォーマンスを得ら
                             れるように 32 ビットオブジェクトバイナリ
                             を生成します。

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

                   native64  当該システムで良好なパフォーマンスを得ら
                             れるように 64 ビットオブジェクトバイナリ
                             を生成します。

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

                   v7        SPARC-V7 ISA 用にコンパイルします。

                             V7 ISA 上で良好なパフォーマンスを得るた
                             めのコードを生成します。これは、V8 ISA
                             上で良好なパフォーマンスを得るための最良
                             の命令セットを使用するのと同じです。ただ
                             し、整数の mul 命令と div 命令、および
                             fsmuld 命令は例外です。

                             例: SPARCstation 1、SPARCstation 2

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

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

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

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

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

                             例: SPARCstation 10

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                   o -xarch には、UltraSPARC 64 ビット対応 Solaris オ
                     ペレーティング環境でのみ、 generic64、
                     native64、 v9、v9a、 および v9b の値を指定できま
                     す。

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

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

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

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

                   値               意味

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

                                  これはデフォルトです。このオプショ
                                  ンは、どのプロセッサでも大きくパ
                                  フォーマンスを落とさずに、ほとんど
                                  のプロセッサで良好なパフォーマンス
                                  を得るための最良の命令セットを使用
                                  します。新しいリリースごとに、「最
                                  良な命令セット」の定義を調節する必
                                  要があるかもしれません。

                   386            このリリースでは、generic と 386 は
                                  同じです。

                   pentium_pro    Intel Pentium Pro チップ用にコンパ
                                  イルします。

                   デフォルト:

                   -xarch=isa を指定しない場合、 -xarch=generic が仮
                   定されます。

                   相互の関連性:

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

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

                   -xarch=v9、 -xarch=v9a、または -xarch=v9b オプショ
                   ンは -compat[=4] オプションとは併用できません。

                   警告:

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

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

                   デフォルトでは、標準ライブラリのヘッダーで宣言され
                   た関数はコンパイラにより通常の関数として扱われま
                   す。しかし、いくつかの関数はコンパイラにより、組み
                   込みとして認識することができます。組み込みとして扱
                   われた場合、コンパイラはより効果的なコードを生成で
                   きます。例えば、コンパイラは、いくつかの関数には副
                   作用がないと認識でき、常に同じ入力から同じ出力を戻
                   します。コンパイラにより直接インラインに生成される
                   関数もあります。

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

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

                   デフォルト:

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

         -xcache=c (SPARC プラットフォーム) オプティマイザが使用でき
                   るキャッシュの属性を定義します。

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

                   このオプションは単独でも使用できますが、
                   -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 ウェイアソシアティブ
                                      ダイレクトマッピング

         -xcg89    -xtarget=ss2 と同じです。

                   警告:
                   単独のステップでコンパイルおよびリンクを行い、
                   -xcg89 でコンパイルした場合、同じオプションでリン
                   クすることに留意してください。さもないと、予期しな
                   い結果になる可能性があります。

         -xcg92    -xtarget=ss1000 と同じです。

                   警告:

                   単独のステップでコンパイルおよびリンクを行い、
                   -xcg92 でコンパイルした場合、同じオプションでリン
                   クすることに留意してください。さもないと、予期しな
                   い結果になる可能性があります。

         -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 障害が発生し
                                  ます。アプリケーションが、スタック
                                  オーバーフローが原因で発生した
                                  SIGSEGV を他のアドレス空間違反の処
                                  理とは異なる方法で処理する必要があ
                                  る場合は、sigaltstack(2) を参照して
                                  ください。

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

                   相互の関連性:

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

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

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

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

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

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

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

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

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

                   値          意味

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

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

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

                   old       旧 SuperSPARC(TM) プロセッサのタイミング
                             属性を使用します。

                   super     SuperSPARC プロセッサのタイミング属性を
                             使用します。

                   super2    SuperSPARC II プロセッサのタイミング属性
                             を使用します。

                   micro     MicroSPARC (TM) プロセッサのタイミング属
                             性を使用します。

                   micro2    MicroSPARC II プロセッサのタイミング属性
                             を使用します。

                   hyper     HyperSPARC (TM) プロセッサのタイミング属
                             性を使用します。

                   hyper2    HyperSPARC II プロセッサのタイミング属性
                             を使用します。

                   powerup   Weitek PowerUp プロセッサのタイミング属
                             性を使用します。

                   ultra     UltraSPARC プロセッサのタイミング属性を
                             使用します。

                   ultra2    UltraSPARC II プロセッサのタイミング属性
                             を使用します。

                   ultra2e   UltraSPARC IIe プロセッサのタイミング属
                             性を使用します。

                   ultra2i   UltraSPARC IIi プロセッサのタイミング属
                             性を使用します。

                   ultra3    UltraSPARC III プロセッサのタイミング属
                             性を使用します。

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

                   値          意味

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

                   386       Intel 386 プロセッサのタイミング属性を使
                             用します。

                   486       Intel 486 プロセッサのタイミング属性を使
                             用します。

                   pentium   Intel Pentium プロセッサのタイミング属性
                             を使用します。

                   pentium_pro
                             Intel Pentium Pro プロセッサの属性を使用
                             します。

         -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 乗) バイ
                             トに制限されます。

                   abs44     SPARC: 適度な速度と範囲の 44 ビット絶対
                             アドレスを生成します。コード、データ、
                             bss を合計したサイズは 2**44 バイトに制
                             限されます。64 ビットアーキテクチャ(
                             -xarch={v9|v9a| v9b}) だけで利用できま
                             す。

                   abs64     SPARC: 低速で範囲の限定されない 64 ビッ
                             ト絶対アドレスを生成します。64 ビット
                             アーキテクチャ( -xarch={v9|v9a| v9b}) だ
                             けで利用できます。

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

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

                   デフォルト:

                   SPARC V8 と V7 プロセッサでは、デフォルトは
                   -xcode=abs32 です。

                   SPARC V9 と UltraSPARC V9 プロセッサ (
                   -xarch={v9|v9a|v9b}) ) では、デフォルトは
                   -xcode=abs64 です。

                   警告:

                   単独のステップでコンパイルおよびリンクを行った場
                   合、コンパイルステップとリンクステップと同じ
                   -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 を指定した
                   場合、コマンド行上のすべてのファイルが単一のソース
                   ファイルに連結されたかのように解析されます。

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

                   相互の関連性:

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

                   警告:

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

                   関連項目:

                   -xldscope

         -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       -xF オプションは、リンカーによる関数と変数の最適な
                   順序の並べ替えを有効にします。
                   このオプションは、コンパイラに対して関数、データ変
                   数を細分化された別々のセクションに配置するよう指示
                   し、それによってリンカーが、リンカーの -M オプショ
                   ンで指定されたマップファイル内の指示を使って、プロ
                   グラムのパフォーマンスが最適化されるようにこれらの
                   セクションを整理します。一般にこの最適化は、ページ
                   フォルト時間がプログラム実行時間の大半を占める場合
                   にのみ効果があります。

                   最適なパフォーマンスを目指す関数および変数の整理に
                   は、以下の操作が必要です。

                   1. -xF でコンパイル、リンクします。

                   2. 関数のマップファイルの生成に関する『プログラム
                   のパフォーマンス解析』マニュアルの指示に従って、ま
                   たデータのマップファイルの生成に関する『リンカーと
                   ライブラリ』の指示に従います。

                   3. -M オプションを使用して新しいマップファイルで再
                   リンクします。

                   4. アナライザの下で再度実行して、改善を確認しま
                   す。

                   値:

                   v は次のいずれかの値になります。

                   値               意味

                   [no%]func      関数を別々のセクションに細分化しま
                                  す[しません]。

                   [no%]glbldata  大域的なデータ (外部リンケージのあ
                                  る変数) を別々のセクションに細分化
                                  します[しません]。

                   [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 が使用されます。

         -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

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

                   -g オプションを使用しない場合は、このオプションが
                   仮定されます。また、 -G オプションを使用している
                   か、コマンド行にソースファイルの名前を指定している
                   場合も、このオプションが仮定されます。
                   -xildon オプションを使用すると、 -xildoff オプショ
                   ンは無効になります。

         -xildon   インクリメンタルリンカーを起動します。 -g オプショ
                   ンを使用し、 -G オプションを使用せず、かつ、コマン
                   ド行にソースファイルの名前を指定しない場合は、この
                   オプションがデフォルトです。このデフォルトを使用し
                   たくない場合は、 -xildoff オプションを指定してくだ
                   さい。

         -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

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

                   -xipo オプションは内部手続き解析パスを起動してプロ
                   グラム全体の最適化を実行します。 -xcrossfile と
                   違って、-xipo はリンクステップのすべてのオブジェク
                   トファイルに最適化を行います。最適化はコンパイルコ
                   マンドのソースファイルのみに限定されません。

                   -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 オプションは、ファイルの最適化を実行するため
                   に必要な追加情報により、かなり大規模なオブジェクト
                   ファイルを生成します。しかし、この追加情報は最後の
                   実行可能バイナリファイルの一部にはなりません。実行
                   可能プログラムの大きさの増加は、追加された最適化に
                   よります。

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

                   -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 のいずれかを指定し
                   ます。

                   引数 -f90 と -f95 は同義です。

                   相互の関連性:

                   -xlang=f90 オプション指定には -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 フラグを指定しなけれ
                   ばなりません。

                   関連項目:

                   -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 最適化された数学ルーチンのライブラリを使用します。

                   最適化された数学ルーチンのライブラリを使用して、通
                   常、より高速実行できるコードを生成します。通常の数
                   学ライブラリを使用した場合と比べて、結果が多少異な
                   る場合があります。その場合は、通常、最終ビットが異
                   なっています。

                   このライブラリオプションを指定するときは、コマンド
                   行での順序は関係ありません。

                   相互の関連性:

                   このオプションは、 -fast オプションを指定した場合
                   にも含まれます。

                   関連項目:

                   -fast および -xnolibmopt の項も参照してください。

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

                   この -l のようなオプションは、ソースファイルおよび
                   オブジェクトファイルの後のコマンド行の終わりに置か
                   れる必要があります。
                   -library=sunperf オプションは Sun Performance
                   Library のリンクに推奨します。このオプションによ
                   り、ライブラリが正しい順序でリンクされることが保証
                   されるからです。さらに、-library=sunperf オプショ
                   ンは位置に依存せず (コマンド行のどこにでも置くこと
                   ができます)、-staticlib を使用して Sun Performance
                   Library に静的にリンクできます。-staticlib オプ
                   ションは、-Bstatic -xlic_lib=sunperf -Bdynamic の
                   組み合わせよりも便利です。

                   相互の関連性:

                   同じコンパイラコマンドで -xlang オプションと
                   -xlic_lib オプションは使用できません。-xlang を使
                   用していて、Sun Performance Library にリンクする必
                   要がある場合は、かわりに -library=sunperf を使用し
                   てください。

                   同じコンパイラコマンドで -library=sunperf と
                   -xlic_lib=sunperf は使用できません。

                   Sun Performance Library に静的にリンクするには、以
                   下の例で示すように、-library=sunperf および
                   -staticlib=sunperf オプションを使用することをお勧
                   めします。

                   example% CC -library=sunperf -staticlib=sunperf
                   ...

                   -library=sunperf のかわりに -xlic_lib=sunperf オプ
                   ションを使用することを選択した場合は、以下の例で示
                   すように -Bstatic オプションを使用してください。

                   example% CC ... -Bstatic -xlic_lib=sunperf
                   -Bdynamic ...

                   関連項目:

                   -staticlib

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

                   このオプションは、ライセンスサーバー名と、ライセン
                   スを所持するユーザーのユーザーID を返します。

         -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 が使用されています。

                   リンクオプティマイザはインクリメンタルリンカーild
                   とともに使うことはできません。 -xlinkopt はデフォ
                   ルトのリンカーを ld に設定します。インクリメンタル
                   リンカーを -xildon で明示的に有効にすると、両方が
                   指定された場合に -xlinkopt が無効になります。

                   -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 を指定
                   してコンパイルを行うと、デバッグ情報が含まれるの
                   で、実行可能ファイルのサイズが大きくなります。

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

         -xM       指定の C++ プログラムでプリプロセッサのみを実行
                   し、メークファイル依存を生成し、その結果を標準出力
                   に送るよう要求します。(メークファイルおよび依存性
                   については make (1) を参照してください)。

                   関連項目:

                   -xM1

                   メークファイルおよび依存関係についての詳細は、
                   make(1) のマニュアルページを参照してください。

         -xM1      -xM とほぼ同じですが、 /usr/include のヘッダーファ
                   イルに関する依存関係は出力しません。このオプション
                   は、コンパイラが提供するヘッダーファイルの依存関係
                   を報告しません。

         -xMerge   (SPARC プラットフォーム)データセグメントをテキスト
                   セグメントと併合 (マージ) します。

                   オブジェクトファイルのデータは読み取り専用です。こ
                   のデータは、 ld -N を指定してリンクしない限り、プ
                   ロセス間で共有されます。

         -xmemalign[=ab]
                   想定される最大のメモリ整列と、誤って整列されたデー
                   タがアクセスされたときの動作を指定します。

                   コンパイル時に整列が確定できるメモリアクセスの場
                   合、コンパイラがデータのその整列に対して、適切な
                   ロード / ストア命令の並びを生成します。

                   コンパイル時に整列が確定できないメモリアクセスの場
                   合、コンパイラは整列を想定して、必要なロード / ス
                   トア命令の並びを生成しなければなりません。

                   -xmemalign フラグを使用して、このような確定できな
                   い状況においてコンパイラが想定するデータの最大メモ
                   リ整列を指定します。また、誤って整列されたメモリの
                   アクセスが発生したときに、実行時に続いて行なうエ
                   ラー処理を指定することができます。

                   値:

                   a に対して指定可能な値は次のとおりです。

                        1    最大 1 バイトの整列を仮定します。

                        2    最大 2 バイトの整列を仮定します。

                        4    最大 4 バイトの整列を仮定します。

                        8    最大 8 バイトの整列を仮定します。

                        16   最大 16 バイトの整列を仮定します。

                   b に対して指定可能な値は次のとおりです。

                        i    アクセスを解釈して実行を継続します。

                        s    シグナル SIGBUS を出します。

                        f    4 以下の整列の場合はシグナル SIGBUS を出
                             します。その他の場合はアクセスを解釈して
                             実行を継続します。

                   デフォルト:

                   -xmemalign フラグが指定されない場合のデフォルトは
                   次のとおりです。

                        -xmemalign=4s ( -xarch=generic,v7,v8,v8a,
                        v8plus,v8plusa の場合)

                        -xmemalign=8s ( -xarch=v9,v9a の場合)

                   -xememalign が値を指定せずに使われた場合のデフォル
                   トは次のとおりです。

                        -xmemalign=1i (すべてのプラットフォーム)

         -xnativeconnect [=n]
                   ネイティブコネクタツール (NCT) 用のコンパイルを可
                   能にします。

                   インタフェース情報をオブジェクトファイルと後続の共
                   用ライブラリに埋め込み、共用ライブラリが Java を変
                   換して認識できるようにするには、-xnativeconnect オ
                   プションを使用します。CC -G を使用して共用ライブラ
                   リを構築する場合も、-xnativeconnect を含める必要が
                   あります。

                   -xnativeconnect を使用してコンパイルする場合、ネイ
                   ティブコードインタフェースの最大外部可視性を指定し
                   ます。NCT を使用すると、Java コードと JNI コードの
                   自動生成が可能になります。NCT と -xnativeconnect
                   をともに使用することで、C++ 共用ライブラリの関数を
                   Java コードから呼び出せるようになります。NCT の使
                   用方法の詳細については、オンラインヘルプを参照して
                   ください。

                   このオプションは累積されません。コンパイラは、最後
                   に指定された設定を使用します。たとえば、CC
                   -xnativeconnect=inlines first.o
                   -xnativeconnect=interfaces second.o -O -G -o
                   library.so を指定すると、コンパイラはこのオプショ
                   ンを -xnativeconnect=no%inlines,interfaces に設定
                   します。

                   -g と -xnativeconnect を両方使用したときコンパイル
                   が実行されない場合、-g オプションを使用せずにコン
                   パイルしてみてください。

                   デフォルト:

                   n は、
                   [{%all|%none}][,][[no%]inlines][,][[no%]interfaces]]
                   です。

                   o -xnativeconnect を指定しないと、コンパイラはこの
                     オプションを -xnativeconnect=%none に設定しま
                     す。

                   o -xnativeconnect

                     -xnativeconnect だけを指定すると、コンパイラはこ
                     のオプションを
                     -xnativeconnect=inlines,interfaces に設定しま
                     す。

                   o -xnativeconnect=inlines

                     -xnativeconnect=inlines コマンドは、参照されたイ
                     ンライン関数の行外のインスタンスを強制的に生成し
                     ます。ネイティブコネクタの一部として生成された外
                     部関数をこれらの行外のインスタンスに結合できま
                     す。すべての呼び出しサイトにおけるこれらの関数の
                     通常のインライン化は、影響を受けません。

                   o -xnativeconnect=intefraces

                     -xnative=interfaces コマンドは、バイナリインタ
                     フェース記述子 (BIDS) を強制的に生成します。

                   注意:

                   -xnativeconnect を使用する場合、-compat=4 を使用し
                   てコンパイルしないでください。引数なしで -compat
                   を指定すると、コンパイラはこのオプションを -com-
                   pat=4 に設定することを覚えておいてください。-com-
                   pat を指定しないと、コンパイラはこのオプションを
                   -compat=5 に設定します。また -compat=5 を出力し
                   て、明示的に互換モードを設定できます。

         -xnolib   デフォルトのシステムライブラリとのリンクを無効にし
                   ます。

                   通常、C++ コンパイラは、C++ プログラムをサポートす
                   るために、一部のシステムライブラリとリンクします。
                   このオプションを指定すると、デフォルトのシステムサ
                   ポートライブラリとリンクするための -llib オプショ
                   ンは ld に渡されません。

                   通常 (このオプションを指定しないで)、C++ コンパイ
                   ラはいくつかのシステムサポートライブラリにリンクし
                   て、C++プログラムをサポートします。このオプション
                   を指定すると、デフォルトのシステムサポートライブラ
                   リをリンクするための -llib オプションは ld に渡さ
                   れません。

                   通常、コンパイラは以下の順序でシステムサポートライ
                   ブラリにリンクします。

                   o 標準モード (デフォルトモード):

                     -lCstd -lCrun -lm -lw -lcx -lc

                   o 互換モード (-compat[=4]):

                     -lC -lm -lw -lcx -lc

                   -l オプションの順序は重要です。-lc 以前に -lm、
                   -lw、および -lcx オプションが指定される必要があり
                   ます。

                   注 - -mt オプションを指定する場合はコンパイラは通
                   常、-lm とリンクする以前に -lthread とリンクしま
                   す。

                   デフォルトでリンクされるシステムサポートライブラリ
                   を決定するには、-dryrun オプションでコンパイルして
                   ください。例えば、以下のコマンドからの出力です。

                   example% CC foo.cc -xarch=v9 -dryrun

                   出力に以下を含んでいます。

                   -lCstd -lCrun -lm -lw -lc

                   -xarch=v9 が指定された場合、-lcx はリンクされませ
                   ん。

                   例:

                   C アプリケーションライブラリインタフェース (つまり
                   必要な C のサポートだけを組み込んだ C++ プログラム
                   ) に合わせるためのコンパイル処理が最小限で済むよう
                   に、次のコードを使用します。

                   example% CC -xnolib test.cc -lc

                   汎用命令セットでシングルスレッドアプリケーションに
                   libm を静的にリンクするには、次のコマンドを使用し
                   ます。

                   o 標準モード:

                     example% CC -xnolib test.cc -lCstd -lCrun
                     -Bstatic -lm -Bdynamic -lw -lcx -lc

                   o 互換モード:

                     example% CC -compat -xnolib test.cc -lc -Bstatic
                     -lm -Bdynamic -lw -lcx -lc

                   相互の関連性:

                   libm.a および libc.a などの静的システムライブラリ
                   は、-xarch=v9、-xarch=v9a または -xarch=v9b でリン
                   クされる場合は有効ではありません。

                   -xnolib を指定する場合、すべての必要なシステムサ
                   ポートライブラリを特定の順番で手動でリンクしなけれ
                   ばなりません。システムサポートライブラリは最後にリ
                   ンクしなければなりません。

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

                   警告:

                   C++ 言語の多くの機能を使用するには、 libC (互換
                   モード) または libCrun (標準モード) を使用する必要
                   があります。

                   システムサポートライブラリのセットは安定していない
                   ため、今後のリリースで変更される可能性があります。

                   -lcx は、64 ビットコンパイルモードではサポートされ
                   ていません。

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

                   このオプションを -fast と併用すると、最適化された
                   数学ライブラリとのリンクを無効にします。

         -xnolibmopt
                   最適化された数学ライブラリを使用しないようにしま
                   す。

                   相互の関連性:

                   このオプションは、コマンド行で -fast オプションを
                   指定した後に使用してください。例を示します。

                   example% CC -fast -xnolibmopt  ...

         -xOn      最適化レベル (n) を指定します (大文字の O の後に、
                   数字の 1、2、3、4、5 のいずれかを指定します)。

                   デフォルトでは最適化は行われません。ただし、このデ
                   フォルトは最適化レベルを指定しない場合にのみ当ては
                   まります。最適化レベルを指定した場合には、最適化を
                   無効にするオプションはありません。

                   最適化レベルを設定しないようにするには、最適化レベ
                   ルを暗に意味するようなオプションはどれも指定しない
                   ようしてください。たとえば -fast は -xO5 に最適化
                   レベルを設定するマクロオプションです。最適化レベル
                   を暗に意味するその他のオプションもすべて、最適化が
                   設定されたという警告メッセージを出します。最適化を
                   まったく行なわないでコンパイルする方法は、コマンド
                   行からすべてのオプションを削除するか、最適化レベル
                   を指定するファイルを作成することだけです。

                   一般的に、プログラムをコンパイルする際の最適化のレ
                   ベルが上がるほど、実行時のパフォーマンスも上がりま
                   す。しかし、最適化レベルが上がるほど、コンパイル時
                   間と実行可能ファイルのサイズは増えます。

                   -xOn に指定できるレベルは 5 つあります。次の節で
                   は、SPARC プラットフォーム、IA プラットフォーム、
                   およびその他の各プラットフォームの場合での各レベル
                   の違いを説明します。

                   値:

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

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

                   -xO1 最小の最適化 (ピープホール) だけを行います。

                   -xO2 基本的な局所的および大域的な最適化を行いま
                        す。このレベルには、帰納変数の削除、局所的お
                        よび大域的な共通の式の一部の削除、代数の簡約
                        化、コピーの伝播、定数の伝播、ループ不変式の
                        最適化、レジスタの割り当て、基本的なブロック
                        のマージ、末尾再帰の削除、デッドコードの削
                        除、末尾呼び出しの削除、および複雑な数式の展
                        開が含まれます。

                        このレベルでは、外部変数または間接変数の参照
                        または定義は最適化されません。一般的に、この
                        レベルでは、コードのサイズが最小になります。

                        -O と -xO2 は同じです。

                   -xO3 -xO2 レベルで実行する最適化に加え、外部変数に
                        対する参照と定義も最適化します。このレベルで
                        は、ポインタ割り当ての影響は追跡されません。
                        volatile により適切に保護されないデバイスドラ
                        イバ、または、シグナルハンドラの内部から外部
                        変数を変更するプログラムをコンパイルするとき
                        には、 -xO2 を使用します。

                        一般的に、 -xO3 では、コードのサイズが増えま
                        す。スワップ領域が不足している場合は、 -xO2
                        を使用してください。

                   -xO4 -xO3 レベルで行われる最適化に加え、同じファイ
                        ルに含まれる関数の自動インライン化も行いま
                        す。この自動インライン化は、通常、実行速度を
                        上げますが、その逆の結果になる場合もありま
                        す。一般的に、このレベルでは、コードのサイズ
                        が増えます。

                   -xO5 最高レベルの最適化を行います。コンピュータ時
                        間の大部分を使用する、プログラムのごく一部だ
                        けに適しています。より多くのコンパイル時間を
                        要するか、実行時間を改善する確実性が低い最適
                        化アルゴリズムを使用します。このレベルの最適
                        化は、プロファイルのフィードバックと併用する
                        と、パフォーマンスが上がる確率が高まります。
                        -xprofile  を参照してください。

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

                   -xO1 基本的な最適化を行います。これには、算術の簡
                        素化、レジスタの割り当て、基本ブロックのマー
                        ジ、無意味なコードおよびストアの除去、および
                        ピープホール最適化が含まれています。

                   -xO2 -x01 レベルで行う最適化のほかに、大域的な共通
                        部分式の除去、コピーおよび定数の伝播、再帰的
                        な末尾の除去を行います。

                        -O と -xO2 は同義です。

                   -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=p、 csh(1) のマニュア
                   ルページ

                   『プログラムのパフォーマンス解析』は、アナライザの
                   データへの様々な最適化レベルの影響について説明しま
                   す。

         -xopenmp [= i]
                   (SPARC) -xopenmp オプションを使用すると、OpenMP 指
                   令との明示的並列化が可能になります。

                   値

                   i は parallel、stubs、または none のいずれかです。

                   o -xopenmp=parallel

                     -xopenmp だけを指定した場合、コンパイラはこのオ
                     プションを -xopenmp=parallel に設定します。
                     -xopenmp=parallel は OpenMP プラグマを認識しま
                     す。これは SPARC のみに適用されます。
                     -xopenmp=parallel での最適化レベルは、-xO3です。
                     プログラムの最適化レベルがより低いレベルから
                     -xO3 に変更された場合、コンパイラは警告を出力し
                     ます。

                   o -xopenmp=stubs

                     -xopenmp=stubs コマンドは、OpenMP API ルーチン用
                     にスタブルーチンとリンクします。連続して実行する
                     ためにアプリケーションをコンパイルする必要がある
                     場合は、このオプションを使用してください。
                     -xopenmp=stubs コマンドは、_OPENMP プリプロセッ
                     サトークンも定義します。

                   o -xopenmp=none

                     -xopenmp=none コマンドは、OpenMP プラグマの認識
                     を有効にしません。プログラムの最適化レベルは変更
                     されず、プリプロセッサトークンも事前定義されませ
                     ん。

                   デフォルト

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

                   -xopenmp を指定してこれに引数をつけなかった場合、
                   コンパイラは -xopenmp=parallel と設定します。

                   警告

                   コンパイルとリンクを別々のステップで実行する場合、
                   リンクのステップにも -xopenmp を指定してください。
                   これはとくに OpenMP 指令を含むライブラリをコンパイ
                   ルするときに重要です。

                   既知の制限

                   以下のリストは、C++ コンパイラでの OpenMP 機能の既
                   知の制限の詳細です。

                   o 入れ子の並列化のサポートなし

                     C++ コンパイラは、OpenMP 2.0 ドラフト標準に定義
                     された入れ子の並列化をサポートしません。

                   o ループインデックス修正のチェックなし

                     コンパイラは、ループインデックス用の OpenMP が
                     ループ本体の中で修正されていないかどうか確認しま
                     せん。

                   o チャンクサイズのチェックなし

                     コンパイラは、実行時の障害が原因で発生するゼロ値
                     や負の値のチェックをコンパイル時に実行しません。

                   o 短縮文節に使用されている過負荷演算子のチェックな
                     し

                     コンパイラは、縮約文節に引数として使用される演算
                     子が多重定義されているかどうかを検出しません。

                   o 現在再検討中のエラーメッセージテキスト
                     OpenMP エラーメッセージシステムは再検討中です。
                     メッセージの中には、不正確であったり無用のものも
                     あります。

         -xpagesize=n
                   (SPARC) スタックおよびヒープの優先ページサイズを設
                   定します。

                   n の値は次のいずれかでなければなりません。
                   8K、64K、512K、4M、32M、256M、2G、16G、default

                   対象となるプラットフォーム上の Solaris オペレー
                   ティング環境で有効なページサイズを指定する必要があ
                   ります。 getpagesize(3C) を使用するとそのサイズが
                   わかります。有効なページサイズを指定しなかった場
                   合、その要求は実行時に無視され、メッセージは出力さ
                   れません。Solaris オペレーティング環境では、ページ
                   サイズ要求が優先されることを保証してはいません。

                   pmap(1) または meminfo(2) を使用して、対象となるプ
                   ラットフォームのページサイズを確認することができま
                   す。

                   -xpagesize オプションは、コンパイルおよびリンク時
                   に使わないと効果はありません。

                   この機能は Solaris 7 および Solaris 8 ソフトウェア
                   では利用できません。このオプションを使ってコンパイ
                   ルされたプログラムは、Solaris 7 および Solaris 8
                   ソフトウェア上でリンクできません。

                   -xpagesize=default を指定すると、Solaris オペレー
                   ティング環境がページサイズを設定します。
                   -xpagesize に引数を指定しない場合、
                   -xpagesize=default と同じことになります。

                   このオプションは -xpagesize_heap および
                   -xpagesize_stack のためのマクロです。この 2 つのオ
                   プションは -xpagesize と同じく 8K、64K、512K、4M、
                   32M、256M、2G、16G、default を引数として受け付けま
                   す。 -xpagesize=n と指定して上記の 2 つのオプショ
                   ンに同じ値を設定することができ、あるいはこれらを
                   別々に指定して異なる値に設定することも可能です。

                   このオプションを使ってコンパイルすることは、
                   mpss.so.1 への LD_PRELOAD 環境変数を同じオプション
                   を使って設定すること、またはプログラム実行前に
                   Solaris 9 コマンドの ppgsz(1) を同じオプションを
                   使って実行するのと、同様の効果があります。詳細は
                   Solaris 9 のマニュアルページを参照してください。

         -xpagesize_heap=n
                   (SPARC) ヒープのためのメモリのページサイズを設定し
                   ます。n は 8K、64K、512K、4M、32M、256M、2G、16G、
                   または default です。対象となるプラットフォームの
                   Solaris オペレーティング環境で有効なページサイズを
                   指定しなければなりません。この値は getpagesize(3C)
                   で確認できます。有効なページサイズを指定しなかった
                   場合、その要求は実行時に無視され、メッセージは出力
                   されません。

                   pmap(1) または meminfo(2) を使用して、対象となるプ
                   ラットフォームのページサイズを確認することができま
                   す。

                   -xpagesize_heap=default と指定した場合、Solaris オ
                   ペレーティング環境はページサイズを設定します。
                   -xpagesize_heap を指定して引数をつけなかった場合、
                   -xpagesize_heap=default と同じ意味になります。

                   このオプションを使ってコンパイルすることは、
                   mpss.so.1 への LD_PRELOAD 環境変数を同じオプション
                   を使って設定すること、またはプログラム実行前に
                   Solaris 9 コマンドの ppgsz(1) を同じオプションを
                   使って実行するのと、同様の効果があります。詳細は
                   Solaris 9 のマニュアルページを参照してください。

                   この機能は Solaris 7 および Solaris 8 ソフトウェア
                   では利用できません。このオプションを使ってコンパイ
                   ルされたプログラムは、Solaris 7 および Solaris 8
                   ソフトウェア上でリンクできません。

         -xpagesize_stack=n
                   (SPARC) スタックのためのメモリのページサイズを設定
                   します。n は 8K、64K、512K、4M、32M、256M、2G、
                   16G、または default です。対象となるプラットフォー
                   ムの Solaris オペレーティング環境で有効なページサ
                   イズを指定しなければなりません。この値は
                   getpagesize(3C) で確認できます。有効なページサイズ
                   を指定しなかった場合、その要求は実行時に無視され、
                   メッセージは出力されません。

                   pmap(1) または meminfo(2) を使用して、対象となるプ
                   ラットフォームのページサイズを確認することができま
                   す。

                   -xpagesize_stack=default と指定した場合、Solaris
                   オペレーティング環境がページサイズを設定します。
                   -xpagesize_stack を指定して引数をつけなかった場
                   合、 -xpagesize_stack=default と同じ意味になりま
                   す。

                   このオプションを使用してコンパイルすることは、
                   mpss.so.1 への LD_PRELOAD 環境変数を同じオプション
                   を使って設定すること、またはプログラム実行前に設定
                   すること、またはプログラム実行前に Solaris 9 コマ
                   ンドの ppgsz(1) を同じオプションを使って実行するの
                   と、同様の効果があります。詳細は Solaris 9 のマ
                   ニュアルページを参照してください。

                   この機能は Solaris 7 および Solaris 8 ソフトウェア
                   では利用できません。このオプションを使ってコンパイ
                   ルされたプログラムは、Solaris 7 および Solaris 8
                   ソフトウェア上でリンクできません。

         -xpch=v   v は collect:pch_filename1 または use:pch_filename
                   です。

                   -xpch オプションを使用すると、プリコンパイル済み
                   ヘッダーファイルを作成して、コンパイル時間を改善で
                   きます。プリコンパイル済みヘッダーファイルは、多量
                   のソースコードを含む一連の共通したインクルードファ
                   イルを使用するソースファイルを持っているアプリケー
                   ションの、コンパイル時間を短縮する目的で設計されま
                   した。プリコンパイル済みヘッダーファイルは、1 つの
                   ソースファイルから一連のヘッダーファイルに関する情
                   報を収集し、その後そのソースファイルを再コンパイル
                   するとき、また同様の一連のヘッダーファイルを持つ別
                   のソースファイルをコンパイルするときに、その情報を
                   使います。 -xpch および -xpchstop オプションを
                   #pragma hdrstop 指令 (-xhelp=readme 参照)と併せて
                   使うことにより、この機能の利点を得ることができま
                   す。

                   プリコンパイル済みヘッダーファイルの作成
                   -xpch を最初に使うときには、収集モードを指定する必
                   要があります。 -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 という名前にな
                   ります。

                   プリコンパイル済みヘッダーファイルの利用
                   -xpch=use:pch_filename と指定すると、プリコンパイ
                   ル済みヘッダーファイルが利用できます。プリコンパイ
                   ル済みヘッダーファイルを作成するときに使ったソース
                   ファイルと同じようにインクルードファイルが並んでい
                   るソースファイルならば、いくつでも指定できます。た
                   とえば、利用モードのコマンドは次のようになります。
                   CC -xpch=use:foo.Cpch foo.cc bar.cc foobar.cc

                   既存のプリコンパイル済みヘッダーファイルは、以下の
                   ことが当てはまるときのみ使用するようにします。もし
                   も次のいずれかが当てはまらない場合には、プリコンパ
                   イル済みヘッダーファイルを再作成したほうがよいで
                   しょう。

                   o プリコンパイル済みヘッダーファイルのアクセスに使
                   用するコンパイラが、プリコンパイル済みヘッダーファ
                   イルを作成したコンパイラと同じ。あるバージョンで作
                   成されたプリコンパイル済みヘッダーファイルが、パッ
                   チのインストールによる違いも含めてそのコンパイラの
                   別のバージョンで利用できるとは限りません。

                   o -xpch オプションを除いて、-xpch=use で指定するコ
                   ンパイラオプションは、プリコンパイル済みヘッダー
                   ファイルを作成したときの指定と合っている必要があり
                   ます。

                   o -xpch=use で指定するインクルードヘッダーが、プリ
                   コンパイル済みヘッダー作成時に指定した一連のヘッ
                   ダーと同じ。

                   o -xpch=use で指定するインクルードヘッダーの中身が
                   プリコンパイル済みヘッダー作成時に指定されたインク
                   ルードヘッダーの中身と同じ。

                   o 現在のディレクトリ (つまり、コンパイルが行なわれ
                   ていて、所定のプリコンパイル済みヘッダーファイルを
                   使用しようとしているディレクトリ) が、プリコンパイ
                   ル済みヘッダーファイルが作成されたディレクトリと同
                   じ。

                   o -xpch=collect で指定したファイルにあった、
                   #include 指令を含む最初のプリプロセス指令の並び
                   が、 -xpch=use で指定するファイルにあるプリプロセ
                   ス指令の並びと同じ。

                   活性文字列 (viable prefix)
                   プリコンパイル済みヘッダーファイルを複数のソース間
                   で共用するために、これらのソースファイルには最初の
                   トークンの並びとして一連の同じインクルードファイル
                   を使用していなければなりません。この最初のトークン
                   の並びは活性文字列として知られています。活性文字列
                   は、同じプリコンパイル済みヘッダーファイルを使用す
                   るソースファイルすべてで一貫したものとして解釈され
                   なければなりません。活性文字列は、各ソースファイル
                   の最初のトークンで始まり、#pragma hdrstop か、
                   -xpchstop オプションで指定されたヘッダーファイルの
                   #include 指令の最後のトークンで終わります。

                   ソースファイルの活性文字列は、コメントと以下のいず
                   れかのプリプロセッサ指令からのみ構成されます。

                   #include #if/ifdef/ifndef/else/elif/endif
                   #define/undef
                   #ident (もしも同じならば、そのまま続けられます)
                   #pragma (同じ場合)

                   これらはいずれもマクロを参照できます。#else、
                   #elif、#endif 指令は活性文字列の中で合致するもので
                   なければなりません。

                   プリコンパイル済みヘッダーファイルを共用する各ソー
                   スファイルの活性文字列の中では、対応する #define
                   指令と #undef 指令が同じシンボルを参照しなければな
                   りません (#define の場合、どれもが同じ値を参照する
                   必要があります)。活性文字列内に出てくる順序も同じ
                   でなければなりません。対応するプラグマも、プリコン
                   パイル済みヘッダーを共用するファイルすべてで同じで
                   あり、その順序も同じでなければなりません。

                   プリコンパイル済みヘッダーファイルに組み込まれる
                   ヘッダーファイルは、次の制約に違反してはなりませ
                   ん。これらの制約のいずれかに違反するプラグマをコン
                   パイルした場合、その結果は予測できません。

                   o ヘッダーファイルは完全な宣言のみを含む。つまり、
                   どのファイルの宣言、C++ 名前空間、C++ リンケージ宣
                   言も、有効な宣言として独立していなければなりませ
                   ん。struct S; といった不完全な型宣言はそれ自体は、
                   有効な宣言です。完全な型宣言は別のファイルでも指定
                   できます。C++ の名前空間やリンケージ宣言は別のファ
                   イルで再オープンしたり拡張したりできます。

                   o ヘッダーファイルにはインライン化されていなかった
                   りテンプレート化されていなかったりする関数を含まな
                   い。つまり、すべての関数定義がインラインかテンプ
                   レートです。

                   o 変数定義はすべて、マニフェスト定数初期設定子を伴
                   う (暗黙の) 静的 const 変数に対する。

                   o ヘッダーファイルでは __DATE__ および __TIME__ を
                   使用してはなりません。このプリプロセッサマクロを使
                   用すると、結果は予測できません。

                   o ヘッダーファイルには #pragma hdrstop が含まれて
                   いてはなりません。

                   o ヘッダーファイルでは可延接頭辞に __LINE__ および
                   __FILE__ を使用してはなりません。インクルードヘッ
                   ダーには __LINE__ と __FILE__ を使うことが許されて
                   います。

                   関連項目: -xpchstop、-xhelp=readme

         -xpchstop=file
                   ここでの file は、プリコンパイル済みヘッダーファイ
                   ルの作成時の最後のインクルードファイルです。コマン
                   ド行に -xpchstop を指定することは、cc コマンドで指
                   定したソースファイルのそれぞれで、ファイルをインク
                   ルードする include 指定子の後に、hdrstop プラグマ
                   (-xhelp=readme を参照) を置くのと同じことです。

                   関連項目: -xpch、-xhelp=readme

         -xpg      gprof プロファイラによるプロファイル用にコンパイル
                   します。

                   -xpg オプションは自己プロファイルコードをコンパイ
                   ルし、 gprof でのプロファイル用のデータを収集しま
                   す。このオプションは実行時記録メカニズムも持ってお
                   り、プログラムが正常に終了すると、 gmon.out ファイ
                   ルを生成します。

                   この作業はパフォーマンスアナライザでも実行できま
                   す。 analyzer(1) のマニュアルページを参照してくだ
                   さい。

                   警告:

                   コンパイルとリンクを別々に行う場合、コンパイル時に
                   -xpg を使用したときは、リンク時にも -xpg を使用し
                   なければなりません。

         -xport64[=v]
                   このオプションを使用すると、コードを 64 ビット環境
                   に容易に移植できます。具体的には、V7 などの 32
                   ビットアーキテクチャから V9 などの 64 ビットアーキ
                   テクチャにコードを移植するときによく見られる、型 (
                   ポインタを含む) の切り上げ、符号拡張、ビットパッキ
                   ングといった問題をこのオプションが警告します。

                   値:

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

                   値               意味

                   no             32 環境から 64 ビット環境へのコード
                                  の移植に関する警告を生成しません。

                   implicit       暗黙の変換に関する警告だけを生成し
                                  ます。明示的なキャストが存在する場
                                  合には警告を生成しません。

                   full           32 ビット環境から 64 ビット環境への
                                  コードの移植に関する警告をすべて生
                                  成します。64 ビットの値の切り上げ、
                                  ISO の値保持の規則に基づいた 64
                                  ビットへの符号拡張、ビットフィール
                                  ドのパッキングの変更などが含まれま
                                  す。

                   デフォルト:

                   -xport64 を指定しない場合、デフォルトは
                   -xport64=no になります。-xport64 を指定して、フラ
                   グは指定しない場合、デフォルトは -xport64=full と
                   なります。

                   関連項目:  -xarch

         -xprefetch[=a[,a]]
                   (SPARC プラットフォーム) UltraSPARC II (-
                   xarch=v8plus、 v8plusa、v8plusb、v9、 v9a、v9bのい
                   ずれか) などの、先読み機能をサポートするアーキテク
                   チャ上で先読み命令を有効にして調整します。

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

                   値               意味

                   auto           先読み命令の自動生成を有効にしま
                                  す。

                   no%auto        自動生成を無効にします。

                   explicit       明示的な先読みマクロを有効にしま
                                  す。

                   no%explicit    明示的な先読みマクロを無効にしま
                                  す。

                   latx:factor    コンパイラによるロード命令とストア
                                  命令に対する先読み命令の、「潜在期
                                  間」の仮定値を、指定された係数
                                  (factor) で調整します。factor は、
                                  正の浮動小数点または整数でなければ
                                  なりません。

                   yes            -xprefetch=auto,explicit と同じで
                                  す。

                   no             -xprefetch=no%auto,no%explicit と同
                                  じです。

                   -xprefetch、 -xprefetch=auto、および
                   -xprefetch=yes を使用すると、コンパイラは必要に応
                   じて先読み命令をコード中に挿入します。これによっ
                   て、先読み機能をサポートするアーキテクチャではパ
                   フォーマンスが向上する場合があります。

                   大規模マルチプロセッサで、計算集約型コードを実行す
                   る場合、-xprefetch=latx:factor を使用すると便利で
                   す。このオプションでは、先読み命令と計数により指定
                   された関連するロードまたはストア間のデフォルトの潜
                   在期間を調整するようコードジェネレータに指示しま
                   す。

                   先読み命令の「潜在期間」とは、先読み命令が実行され
                   た時点から、先読み命令の対象であるデータが実際に
                   キャッシュに入れられる時点までの、ハードウェアに起
                   因する時間のずれを指します。コンパイラは、先読み命
                   令の挿入位置と、先読みされたデータを使用するロード
                   またはストアの命令文の位置がどれだけ離れているかを
                   確認して、先読みの潜在期間を仮定します。

                   注意

                   仮定される先読みの潜在期間は、ロード命令とストア命
                   令では異なる場合があります。

                   コンパイラは、広範囲に渡るマシンおよびアプリケー
                   ションに対して適切になるように、先読みのメカニズム
                   を調整しています。このため現在の機能が、すべてのマ
                   シンまたはアプリケーションで最良であるとは限りませ
                   ん。メモリーを大量に消費するアプリケーション、特に
                   大規模な複数のプロセッサで実行するアプリケーション
                   の場合は、先読みの潜在期間を示す値を増加させた方
                   が、パフォーマンスが向上する可能性があります。先読
                   みの潜在期間を増加させるには、 factor の値を 1 よ
                   り大きい値にします。 .5 から 2.0 の間の値にする
                   と、ほぼ確実に最高のパフォーマンスが得られます。

                   完全に外部のキャッシュに存在するデータベースを扱う
                   アプリケーションの場合は、先読みの潜在期間を減少さ
                   せた方が、パフォーマンスが向上する可能性がありま
                   す。先読みの潜在期間を減少させるには、 factor の値
                   を 1 より小さい値にします。

                   -xprefetch=latx:factor オプションを使用する場合
                   は、まず factor の値を 1.0 に近い値に設定して、対
                   象のアプリケーションに対するパフォーマンスを調べま
                   す。そして徐々にその値を変化させていき、パフォーマ
                   ンスの変化を確認します。最良のパフォーマンスが得ら
                   れるまでテストを繰り返します。値を細かく変更した場
                   合は、しばらくの間パフォーマンスの変化はまったく見
                   られませんが、ある値で突然高くなります。続けて値を
                   増加または減少させていくと、パフォーマンスは再び下
                   がります。

                   デフォルト:

                   -xprefetch が指定されていない場合は、
                   -xprefetch=no%auto,explicit が仮定されます。

                   -xprefetch だけが指定されている場合は、
                   -xprefetch=auto,explicit が仮定されます。

                   引数なし、あるいは、 auto または yes の引数付きの
                   -xprefetch で明示的に変更しない限り、デフォルトで
                   は no%auto が仮定されます。たとえば、
                   -xprefetch=explicit は -xprefetch=explicit,no%auto
                   と同じです。

                   no%explicit または no で明示的に変更しない限り、デ
                   フォルトでは explicit が仮定されます。たとえば、
                   -xprefetch=auto は -xprefetch=auto,explicit と同じ
                   です。

                   -xprefetch または -xprefetch=yes によって自動先読
                   み実行が有効に設定されているにも関わらず、潜在期間
                   の値が指定されていない場合は、 latx:1.0 が仮定され
                   ます。

                   相互の関連性:

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

                   ヘッダーファイル 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_level=l
                   -xprefetch=auto で決定された先読み命令の自動挿入を
                   制御します。-xprefetch=auto を指定する場合、デフォ
                   ルトは -xprefetch_level=2 です。

                   l は 0、1、2 のいずれかです。

                   -xprefetch_level=1 を指定すると、先読み命令の自動
                   生成が可能になります。-xprefetch_level=2 を指定す
                   ると、レベル 1 を超える追加生成が可能になり、
                   -xprefetch=3 を指定すると、レベル 2 を超える追加生
                   成が可能になります。

                   最適化レベル 3 以上でコンパイルして、先読みをサ
                   ポートするプラットフォームのコード (v8plus、
                   v8plusa、v9、v9a、v9b、generic64、native64) を生成
                   する必要があります。

         -xprofile=p
                   実行時プロファイルデータを収集するか、これらのデー
                   タで最適化を行います。

                   p には、 collect[:name]、 use[:name]、 tcov のいず
                   れかを指定します。

                   このオプションを使用すると、実行時に実行頻度のデー
                   タが収集されて保存されます。保存されたデータは以降
                   の処理の実行時に使用して、パフォーマンスを向上させ
                   ることができます。プロファイル収集はマルチスレッド
                   アプリケーションについても安全です。つまり、自身の
                   マルチタスク ( -mt ) を実行するプログラムのプロ
                   ファイリングは、正しい結果を生成します。このオプ
                   ションは -xO2 以上の最適化レベルを指定した場合にの
                   み有効です。

                   コンパイルとリンクを別の段階で行う場合、コンパイル
                   とリンク時には、同じ -xprofile オプションを使用し
                   なければなりません。

                   値:

                   collect[:name]
                        後でオプティマイザが -xprofile=use で使用でき
                        るように、実行頻度の情報を収集および保存しま
                        す。コンパイラは、文の実行頻度を測定するため
                        のコードを生成します。

                        name には、実行頻度のフィードバックデータを格
                        納する .profile ディレクトリの名前を指定しま
                        す。この名前の指定は省略できます。name の指定
                        を省略すると、実行可能プログラムの名前 (-o オ
                        プションで指定した名前、または -o オプション
                        省略時は a.out) に接尾辞 .profile を付けた名
                        前のサブディレクトリが、プログラムを実行した
                        ディレクトリに作成されます。

                        -xprofile=collect:name でコンパイルしたプログ
                        ラムによって、実行時のフィードバック情報を保
                        存するための name.profile ディレクトリが実行
                        時に作成されます。フィードバックデータは、こ
                        のサブディレクトリ中の feedback ファイルに保
                        存されます。フィードバック情報の位置は
                        $SUN_PROFDATA および $SUN_PROFDATA_DIR 環境変
                        数を使用して変更可能です。詳細については、こ
                        の節の最後にある 「環境変数」の項を参照してく
                        ださい。プログラムを複数回実行した場合、実行
                        頻度のフィードバックデータは feedback ファイ
                        ルに蓄積されるので、前回のデータは失われませ
                        ん。
                        コンパイルとリンクを別々のステップで実行する
                        場合、 -xprofile=collect を指定してコンパイル
                        されたオブジェクトファイルは、必ずリンクも
                        -xprofile=collect を指定して実行しなければな
                        りません。

                   use[:name]
                        有効な最適化を行うために実行頻度データを利用
                        します。

                        name には、フィードバックデータが格納されてい
                        る .profile ディレクトリの名前を指定してくだ
                        さい。name の指定を省略すると、a.out.profile
                        がフィードバックデータのあるディレクトリとみ
                        なされます。

                        -xprofile=collect でコンパイルしたプログラム
                        を前回実行した結果として feedback ファイルに
                        生成および保存された実行頻度データをもとにし
                        て、プログラムが最適化されます。

                        ソースファイル、その他のコンパイラオプション
                        は、feedback ファイルを生成したプリコンパイル
                        済みプログラムのコンパイル時に使用したオプ
                        ションと同じものを指定する必要があります。
                        -xprofile=collect:name でコンパイルした場合、
                        -xprofile=use:name による最適化コンパイルでは
                        同じ名前の name を指定する必要があります。

                   tcov 新しい形式の tcov を使用した基本的なブロック
                        カバレージ分析を行います。

                        -xprofile=tcov オプションは、tcov のプロファ
                        イルの作成に使用する新しい形式の基本ブロック
                        です。 -xa オプションと同じ機能がありますが、
                        ヘッダーファイルにソースコードが含まれている
                        プログラムや、C++ テンプレートを使用するプロ
                        グラムのデータを収集します。旧形式のプロファ
                        イルについての詳細は、tcov(1) のマニュアル
                        ページ、および『プログラムのパフォーマンス解
                        析』を参照してください。

                        コード生成は -xa オプションと同じように実行さ
                        れますが、.d ファイルは生成されません。代わり
                        に単一のファイルが生成されます。ファイル名
                        は、対応する実行可能ファイルの名前にもとづい
                        て付けられます。たとえば、myprogram というプ
                        ログラムを /foo/bar/myprog.profile で実行した
                        場合は、データファイルは
                        /foo/bar/myprog.profile/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]
                   (SPARC) -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 がオブジェクト
                   ファイルのパス名と合わないことがわかるまで、オブ
                   ジェクトファイルのパス名と比較されます。

         -xregs=r[,r...]
                   (SPARC プラットフォームのみ) スクラッチレジスタの
                   使用を制御します。

                   コンパイラは一時記憶領域で使用できるレジスタ (スク
                   ラッチレジスタ) が多いほど、高速なコードを生成でき
                   ます。このオプションによって、使用可能なスクラッチ
                   レジスタが追加されますが、追加することが適当でない
                   場合もあります。

                   r には、次の値のいずれか 1 つを指定するか、または
                   複数をコンマで区切って指定します。

                   [no%]appl
                            アプリケーションレジスタをスクラッチレジ
                            スタとして使用するコードを、コンパイラが
                            生成することを、許可します[しません]。ア
                            プリケーションレジスタは以下のものです。

                            g2、g3、g4 (v8a、v8、v8plus、v8plusa、
                            v8plusb)
                            g2、g3 (v9、v9a、v9b)

                            すべてのシステムソフトウェアおよびライブ
                            ラリは、-xreg=no%appl を使ってコンパイル
                            することを強く推奨します。システムソフト
                            ウェア (共用ライブラリを含む) は、アプリ
                            ケーションのためにレジスタの値を保持する
                            必要があります。レジスタの使用はコンパイ
                            ルシステムで制御されるよう意図されてお
                            り、アプリケーション全体で一貫していなけ
                            ればなりません。

                            SPARC ABI では、これらのレジスタはアプリ
                            ケーションレジスタと説明されています。こ
                            れらのレジスタを使用すると、必要なロード
                            およびストア命令の数が少なくなるため、パ
                            フォーマンスが改善されます。しかし、こう
                            した使用は、アセンブリコードで書かれた一
                            部の古いライブラリプログラムと矛盾する場
                            合があります。

                            SPARC 命令セットの詳細については -xarch
                            を参照してください。

                   [no%]float
                            整数値のためのスクラッチレジスタとして浮
                            動小数点レジスタを使用するコードを、コン
                            パイラが生成することを、許可します[しませ
                            ん]。浮動小数点の値を使用する場合、このオ
                            プションと関係なくこれらのレジスタが使用
                            される場合があります。 -xregs=no%float を
                            指定すると、ソースファイルには浮動小数点
                            のコードをまったく含むことができません。

                   デフォルト:

                   -xregs を指定しない場合、 -xregs=appl,float が仮定
                   されます。

         -xs       オブジェクトファイルなしで dbx によるデバッグがで
                   きるようにします。

                   このオプションは、デバッグ情報すべてを実行可能ファ
                   イルにコピーします。dbx のパフォーマンスやそのプロ
                   グラムの実行時のパフォーマンスにはほとんど影響を与
                   えませんが、使用するディスクスペースの量は増えま
                   す。

         -xsafe=mem
                   (SPARC プラットフォーム) メモリーに関するトラップ
                   が発生しないとみなします。

                   このオプションは、コンパイラが、SPARC V9 アーキテ
                   クチャで障害発生を想定しないロード命令を使用するこ
                   とを許可します。

                   警告:

                   障害発生を想定しないロード命令は、アドレス割り当て
                   の失敗やセグメント違反のような障害が発生した場合で
                   も、トラップを発生させません。そのためこのオプショ
                   ンは、そのような障害が起こり得ないプログラムでのみ
                   使用してください。メモリーに基づくトラップを発生さ
                   せるプログラムはごく少数なので、このオプションはほ
                   とんどのプログラムで安全に使用できます。しかし、例
                   外的な状態を処理するために、メモリーに基づいたト
                   ラップを明示的に使用しているプログラムでは、このオ
                   プションは使用しないでください。

                   相互の関連性:

                   このオプションは、 -xO5 の最適化レベルで、かつ、次
                   のいずれかの値をとる -xarch オプションと一緒に使用
                   された場合にのみ有効です。

                   v8plus、 v8plusa、 v8plusb、 v9、 v9a、 v9b

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

                   このオプションにより、 CC ドライバは、ソースブラウ
                   ザの SunWS_cache サブディレクトリにシンボルテーブ
                   ル情報を追加生成します。

                   関連項目:

                   -xsbfast

         -xsbfast  コンパイルせずに、ソースブラウザ情報だけを生成しま
                   す。

                   このオプションでは、 ccfe の段階だけを実行して、
                   ソースブラウザの SunWS_cache サブディレクトリにシ
                   ンボルテーブル情報を追加生成します。オブジェクト
                   ファイルは生成されません。

         -xspace   (SPARC プラットフォーム) コードサイズが大きくなる
                   ような最適化は行いません。

         -xtarget=t
                   命令セットと最適化処理の対象システムを指定します。

                   このオプションはマクロです。 -xtarget の値は、
                   -xarch、 -xchip、および -xcache オプションの値の
                   セットに展開されます。fpversion(1) コマンドを使用
                   して、実行中のシステムの -xtarget=native の展開を
                   判断します。展開される値については、『C++ ユーザー
                   ズガイド』の -xtarget に関する項目を参照してくださ
                   い。

                   -xtarget によって、 -xarch、-xchip、 -xcache の組
                   み合わせを素早く簡単に指定することができます。
                   -xtarget は、展開されて初めて意味をなすものです。

                   注: あるホストプラットフォームでの -xtarget は、そ
                   のプラットフォームで -xtarget=native をコンパイル
                   したのと同じ -xarch、-xchip、-xcache の設定に展開
                   されない場合があります。

                   -xtarget=native は「-xarch=native, -xchip=native,
                   -xcache=native」と指定することと同じです。

                   -xtarget=native64 は「-xarch=native64,
                   -xchip=native64, -xcache=native」と指定することと
                   同じです。

                   -xtarget=generic は「-xarch=generic,
                   -xchip=generic, -xcache=generic」と指定することと
                   同じです。

                   -xtarget=generic64 は「-xarch=generic64,
                   -xchip=generic64, -xcache=generic」と指定すること
                   と同じです。

                   値：

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

                   値          意味

                   native    ホストシステムで最高のパフォーマンスを得
                             ることができます。

                             コンパイラはホストシステムで最高のパ
                             フォーマンスが得られるコードを生成しま
                             す。コンパイラが動作しているマシンで使用
                             できるアーキテクチャ、チップ、キャッシュ
                             の属性を指定します。

                   native64  ホストの環境 (64 ビットアーキテクチャを
                             想定) で、最高のパフォーマンスを得るため
                             のパラメータを設定します。

                   generic   汎用アーキテクチャ、チップ、キャッシュで
                             最高のパフォーマンスが得られます。

                             コンパイラは、-xtarget=generic を
                             -xarch=generic -xchip=generic
                                -xcache=generic に展開します。これは
                             デフォルト値です。

                   generic64 ほとんどの 64 ビットプラットフォームアー
                             キテクチャで、最高のパフォーマンスを得る
                             ためのパラメータを設定します。

                   platform-name
                             指定したシステムにおいて最高のパフォーマ
                             ンスが得られます。

                             platform-name に指定できる有効な値は、次
                             のとおりです。

                             sun4/15, sun4/20, sun4/25, sun4/30,
                             sun4/40, sun4/50, sun4/60, sun4/65,
                             sun4/75, sun4/110, sun4/150, sun4/260,
                             sun4/280, sun4/330, sun4/370, sun4/390,
                             sun4/470, sun4/490, sun4/630, sun4/670,
                             sun4/690, sselc, ssipc, ssipx, sslc,
                             sslt, sslx, sslx2, ssslc, ss1, ss1plus,
                             ss2, ss2p, 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/120, ss600/140, ss600/412,
                             ss600/512, ss600/514, ss600/612, ss1000,
                             sc2000, cs6400, solb5, solb6, ultra,
                             ultra2, ultra2e、ultra2i, ultra1/140,
                             ultra1/170, ultra1/200, ultra2/1170,
                             ultra2/1200, ultra2/1300, ultra2/2170,
                             ultra2/2200, ultra2/2300, ultra3, entr2,
                             entr2/1170, entr2/2170, entr2/1200,
                             entr2/2200, entr150, entr3000, entr4000,
                             entr5000, entr6000

                             プラットフォーム名についての詳細は、
                             『C++ ユーザーズガイド』の -xtarget に関
                             する項目を参照してください。

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

                        o native

                        o generic

                        o 386 (Intel 80386 マイクロプロセッサで最高の
                          パフォーマンスが得られるように、コードを生
                          成します)

                        o 486 (Intel 80486 マイクロプロセッサで最高の
                          パフォーマンスが得られるように、コードを生
                          成します)

                        o pentium (Pentium マイクロプロセッサで最高の
                          パフォーマンスが得られるように、コードを生
                          成します)

                        o pentium_pro (Pentium Pro マイクロプロセッサ
                          で最高のパフォーマンスが得られるように、
                          コードを生成します)

                   相互の関連性:

                   SPARC または UltraSPARC V9 で 64 ビット Solaris 7
                   または Solaris 8 ソフトウェアをコンパイルするとき
                   は、 -xarch=v9、 -xarch=v9a、 -xarch=v9b のいずれ
                   かのフラグを指定します。 -xtarget=ultra、 ultra2、
                   または ultra3 の指定は必要ありません (指定する場合
                   は、この設定では不十分です)。 -xtarget を指定する
                   ときは、 -xtarget の後に、 -xarch=v9、
                   -xarch=v9a、 -xarch=v9b のいずれかを指定する必要が
                   あります。たとえば、次のとおりです。

                      -xtarget=ultra2 ... -xarch=v9

                   この指定がないと、 -xtarget の指定により、 -xarch
                   の値が、 v8 に戻されます。

         -xthreadvar[=o]
                   (SPARC) __thread 宣言指定子とともに働き、スレッド
                   ローカルな記憶領域に関するコンパイラの機能が使用さ
                   れます。__thread 指定子でスレッド変数を宣言した後
                   で、 -xthreadvar を指定すると、動的 (共用) ライブ
                   ラリの位置依存コード (非 PIC コード) で、スレッド
                   ローカルな記憶領域の使用が可能になります。__thread
                   の使用法の詳細については、『C++ ユーザーズガイド』
                   を参照してください。

                   値

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

                   値          意味

                   [no%]dynamic
                             動的ロードのための変数をコンパイルします
                             [しません]。スレッド変数へのアクセスは、
                             -xthreadvar=no%dynamic の場合に著しく向
                             上しますが、動的ライブラリの中ではオブ
                             ジェクトファイルを使用できません。つま
                             り、実行可能ファイルの中でオブジェクト
                             ファイルを使用できないということです。

                   デフォルト

                   -xthreadvar を指定しないと、コンパイラの使用するデ
                   フォルトは、位置独立コードが有効かどうかによって異
                   なります。位置独立コードが有効であれば、このオプ
                   ションは  -xthreadvar=dynamic に設定されます。位置
                   独立コードが有効でない場合は、オプションは
                   -xthreadvar=no%dynamic に設定されます。

                   -xthreadvar 指定して引数を指定しない場合、オプショ
                   ンは -xthreadvar=dynamic に設定されます。

                   相互の関連性

                   バージョンの異なる Solaris ソフトウェアでスレッド
                   変数を使用するには、コマンド行に異なるオプションを
                   指定する必要があります。

                   Solaris 8 ソフトウェアの場合、__thread を使うオブ
                   ジェクトは -mt を指定してコンパイルしなければなら
                   ず、また -mt -L/usr/lib/lwp -R/usr/lib/lwpsoftware
                   でリンクしなければなりません。

                   Solaris 9 ソフトウェアの場合、__thread を使うオブ
                   ジェクトは、 -mt を指定してコンパイルおよびリンク
                   しなければなりません。

                   警告

                   位置依存コードが動的ライブラリ内にある場合は、
                   -xthreadvar を指定しなければなりません。

                   リンカーは、動的ライブラリ中の位置依存コード (非
                   PIC) スレッド変数と同等のものをサポートできませ
                   ん。また、非 PIC スレッド変数は非常に高速なため、
                   実行可能ファイルのデフォルトとして指定できます。

                   関連項目

                   -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}
                   ISO10646 UTF-16 文字列リテラルを使用する国際化され
                   たアプリケーションをサポートする必要があれば、
                   -xustr=ascii_utf16_ushort を指定します。言い換えれ
                   ば、コードに文字列リテラルがあり、オブジェクトファ
                   イルではそれを UTF-16 文字列に変換するようコンパイ
                   ラに求める場合は、このオプションを使います。このオ
                   プションを指定しないと、コンパイラは 16 ビット文字
                   列リテラルの生成、認識のいずれも行ないません。この
                   オプションは U"ASCII_string" 文字列リテラルを符号
                   なし短整数の配列として認識できるようにします。この
                   ような文字列はまだ規格の一部となっていないので、こ
                   のオプションは非標準 C++ の認識を可能にします。

                   -xustr=no を使用することで、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

         -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      ゼロ以外の終了状態を返すことによって、すべての警告
                   をエラーとして扱います。

         -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 rarely_called
         #pragma returns_new_memory
         #pragma unknown_control_flow
         #pragma weak

         SPARC のみ:
         #pragma no_side_effect
         #pragma pack

         これらのプラグマの詳細については、『C++ ユーザーズガイド』を
         参照してください。

## 注意事項

         C++ コンパイラは静的ライブラリ libC.a および libCrun.a を含
         んでいます。ただし、それらに対応するバンドルされた共有ライブ
         ラリ libC.so.5 および libCrun.so.1 は、バージョン 7 および 8
         の Solaris 動作環境で、Sun WorkShop C++ (5.0) コンパイラと
         Sun WorkShop 6 C++ (5.1) コンパイラと同期しません。Solaris 7
         および Solaris 8 のオペレーティング環境でコンパイラを共有ラ
         イブラリとともに正常に機能させるには、適切な OS パッチをイン
         ストールしなければなりません。README を参照してください。

         詳細を参照するには、 CC -xhelp=readme と入力してください。

## ファイル

         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)、 ild(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++」