# マニュアルページ acc.1

## 名前

         acc - C コンパイラ

## 形式

         acc [ -A <名前> ] [ <トークン> ] [ -a ]
         [ -B [static|dynamic] ] [ -C ] [ -c ] [ -cg89 ]
         [ -cg92 ] [ -D<名前> [ <トークン> ] ] [ -dalign ]
         [ -d [y|n] ] [ -dryrun ] [ -E ] [ -fast ] [ -fd ]
         [ -flags ] [ -fnonstd ] [ -fns ] [ -fround=r ]
         [ -fsimple[=n] ] [ -fsingle ] [ -ftrap=t ] [ -G ]
         [ -g ] [ -H ] [ -help ] [ -h <名前> ] [ -I <ディレクトリ> ]
         [ -inline= [<関数 1>,...,<関数 n > ] ] [ -KPIC ]
         [ -Kpic ] [ -keeptmp ] [ -L <ディレクトリ> ]
         [ -l <名前> ] [ -libmieee ] [ -libmil ] [ -M ]
         [ -misalign ] [ -misalign2 ] [ -mt ] [ -native ] [ -nolib  ]
         [ -nolibmil ] [ -noqueue ] [ -O[1|2|3|4|5] ]
         [ -o <出力ファイル> ] [ -P ] [ -p ] [ -pg ] [ -PIC ]
         [ -pic ] [ -Qdir <ディレクトリ> ] [ -Qoption c <引数> ]
         [ -Qpath <ディレクトリ> ] [ -Qproduce<ソース種類> ]
         [ -qdir <ディレクトリ> ] [ -qoption c <引数> ]
         [ -qpath <ディレクトリ> ] [ -qproduce<ソース種類> ]
         [ -R <ディレクトリ> [ :<ディレクトリ> ] ] [ -S ] [ -s ]
         [ -sb ] [ -sbfast ] [ -strconst ] [ -temp= <ディレクトリ>  ]
         [ -time ] [ -U <名前> ] [ -unroll =n ] [ -V ] [ -v ]
         [ -vc ] [ -w ] [ -X [a |c |s |t ]] [ -xa ]
         [ -xarch=a ] [ -xautopar ] [ -xcache=c ] [ -xCC ]
         [ -xcg89 ] [ -xcg92 ] [ -xchip=c ] [ -xdepend ]
         [ -xe ] [ -xexplicitpar ] [ -xF ] [ -xhelp=f ] [ -xildoff ]
         [ -xildon ] [ -xinline=[<関数 1>,...,<関数 n>] ]
         [ -xlibmieee ] [ -xlibmil ] [ -xlicinfo ]
         [ -xlic_lib_=l ] [ -xloopinfo ]
         [ -xM ] [ -xM1 ] [ -xMerge ] [ -xnolib ] [ -xnolibmil ]
         [ -xO[1|2|3|4|5] ] [ -xP ] [ -xparallel ] [ -xpg ]
         [ -xprofile=p ] [ -xreduction ] [ -xregs=r ]
         [ -xrestrict=f ] [ -xs ] [ -xsafe=mem ] [ -xsb ]
         [ -xsbfast ] [ -xsfpconst ] [ -xspace ]
         [ -xstrconst ] [ -xtarget=t ] [ -xtemp= <ディレクトリ> ]
         [ -xtime ] [ -xtransition ] [ -xunroll=n ] [ -xvpara ]
         [ -Y, <ディレクトリ> ] [ -Zll ] [ -Zlp ] [ -Ztha ]

## 機能説明

         acc (SPARC のみ) は Solaris 上で直接使用するためのものではあ
         り ま せ ん。 Solaris  上 で  acc を使用可能にしているのは、
         /usr/ucb/cc を使用可能にするためです。これを使用するにはパッ
         ケー ジ SUNWscpu が必要になります。 /usr/ucb/cc のオプション
         は、 acc のオプションと同じです。このマニュアルページにて 詳
         しく説明します。

         acc は C コンパイラです。C プログラミング言語で書かれたプ ロ
         グ ラムを実行可能なロードモジュール、または後で ld(1) リンク
         エディタでロードできる再配置可能なバイナリプログラムに変換し
         ます。
         acc は多彩なオプションに加え、いくつかの種類のファイル名引数
         を受け付けます。たとえば、名前が .c で終わるファイルは、C の
         ソースプログラムとして処理されます。これらのファイルはコンパ
         イ ル され、その結果生成されるオブジェクトプログラムが現作業
         ディレクトリに格納されます。このオブジェクトファイルの名前に
         は、 ソー スプログラムの接尾辞 .c の代わりに .o が付けられま
         す。同様に、 .s で終わる名前のファイルはアセンブリソースプロ
         グラムとして処理されます。これらのファイルはアセンブルされた
         後、接尾辞 .o が付いたファイルが生成されます。この 他、  .il
         で終わるファイル名を持つファイルは、インラインコード展開用の
         テンプレートファイルとして扱われます。これらのファイ ル は、
         コード最適化オプションが指定されている場合に、選択されたルー
         チンの呼び出しをインライン展開するときに使用します。コンパイ
         ラに関連するファイル名の接尾辞については、後述の「ファイル」
         の項を参照してください。

         その他の引数は、アセンブラやローダーのオプション、オブジェク
         トプログラム、オブジェクトライブラリなどを指定するためのもの
         です。 -c、 -S、 -E 、 -P 、または -Qproduce が指定されな い
         かぎり、これらのプログラムやライブラリは、指定されたコンパイ
         ルあるいはアセンブリの結果生成されるコードとともに (指定の順
         序 で) リンクされ、出力ファイル a.out を生成します。 -o オプ
         ションを使用すれば、実行可能ファイルの名前に指定することがで
         きます。

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

         ライブラリを検索するデフォルトのディレクトリを変更する方法に
         つ いては、 -Y, <ディレクトリ> を参照してください。<ディレク
         トリ> には、パスをコロンで区切って指定してください。cc の デ
         フォルトのライブラリ検索パスは、次のとおりです。
                 /opt/SUNWspro/SC5.0/lib
                 /usr/ccs/lib
                 /usr/lib

## オプション

         プラットフォームに固有のオプションは、エラーなどの表示なしで
         受け入れられます。例外がある場合は、各オプションの説明で明記
         しています。

         -g または -pg オプションを使用してそれぞれデバッグ中またはプ
         ロファイリング中のオブジェクトをコンパイルする場合、それらを
         リンクするための ld コマンドにも、適切なオプションを含める必
         要があります。

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

         -a   各基本ブロックの実行回数をカウントするためのコードを 挿
              入します。これは、tcov についての旧形式の基本ブロックプ
              ロファイリングです。新形式のプロファイリング情報につ い
              て は  -xprofile=tcov を、また詳細については tcov(1) マ
              ニュアルページを参照してください。すべての .c ファイ ル
              に ついて .d ファイルを作成する実行時記録メカニズムを呼
              び出します (正常終了時)。この .d ファイルには、対応する
              ソー ス ファ イルに関する実行データが記録されます。この
              後、 tcov(1) ユーティリティをこのソースファイルに対して
              実 行し、プログラムに関する統計データを生成することがで
              きます。このオプションは、 -g とは互換性がありません。

         -A<名前>[(<トークン>)]
              #assert 前処理指令で指定する場合と同様、<名前> を述語と
              して、指定された <トークン> と関連付けます。
              事前表明:   system(unix)
                          cpu(sparc)
                          machine(sparc)

              上記は -Xc モードでは事前定義されません。

              -A の後にハイフン (-) しかない場合、事前定義されてい る
              す べてのマクロ ( __ で始まるマクロを除く) および事前定
              義されている表明がすべて放棄されます。

         -B[static|dynamic]
              -Bdynamic を指定すると、 -lx オプションが同時に指定され
              ている場合、リンクエディタは libx.so という名前のファイ
              ルを検索した後、libx.a という名前のファイルを検索 し ま
              す。  -Bstatic  を指定した場合、リンクエディタは libx.a
              という名前のファイルのみを検索します。このオプション は
              切 り替えオプションとして、コマンド行で何回でも指定する
              ことができます。なお、このオプションと引数は ld に引 き
              渡されます。

         -C   プリプロセッサ (前処理部) は前処理指令の行にあるコメ ン
              ト以外のすべてのコメントを削除しません。

         -c   ld(1) とのリンクを行わず、各ソースファイル ご と に  .o
              ファ イルを生成します。 -o オプションを使用して、1 つの
              オブジェクトファイルに明示的に名前を付けることができ ま
              す。

         -cg89
              このオプションは、 -xarch=v7 -xchip=old -xcache=64/32/1
              のマクロです。

         -cg92
              このオプションは、 -xarch=v8 -xchip=super
              -xcache=16/32/4:1024/32/1" のマクロです。

         -D<名前>[=<トークン>]
              #define 前処理指令を実行するのと同様に、<名前> と指定さ
              れ た <トークン> を関連付けます。=<トークン> が指定され
              ない場合、トークン 1 が指定されたものと見なします。
              事前定義:       sparc
                              sun
                              unix

              上記は、 -Xc モードでは事前定義されません。
              次に挙げる事前定義は、すべてのモードで有効です。
                       __sparc
                       __unix
                       __sun
                       __BUILTIN_VA_ARG_INCR
                       __SUNPRO_C=0x420
                       __SVR4
                       __`uname -s` `uname -r`

         -dalign
              パフォーマンスに改善の余地があれば、ダ ブ ル ワー ド の
              load/store 命令を生成します。double および long long 型
              のデータはすべてダブルワードの境界整列がされているも の
              と みなされます。正しい境界整列が保証されないときは、こ
              のオプションを使用しないようにしてください。

         -d [y|n]
              -dy は、リンクエディタに動的リンクを行うよう指定しま す
              (デフォルトの設定)。 -dn は、リンクエディタに静的リンク
              を行うよう指定します。このオプションとその引数は ld  に
              渡されます。

         -dryrun
              コンパイラドライバで生成されたコマンドを表示します ( 実
              行はしません)。

         -E   指定された C ファイルの前処理のみ行い、その結果を標準出
              力 に送ります。この出力には、コンパイルの次の段階で使用
              するための前処理指令が含まれています。

         -fast
              速度を重視したコンパイルオプションの最適な組み合わせ を
              選 択します。ほとんどの現実的なアプリケーションで最高に
              近いパフォーマンスが得られるはずです。 -fast オプション
              を 使用してコンパイルしたモジュールについては、リンク時
              にも -fast オプションを指定しなければなりません。

              このオプションを使用すれば、コンパイル時に使用する ハー
              ド ウェア上で利用可能な最速のコード生成オプション、最適
              化レベル -O2、一連のインライン展開テンプレー ト、  -fns
              オプション、 -ftrap=%none オプション、および -dalign オ
              プションが自動的に選択されます。

              他のオプションと一緒に -fast オプションを使用した場合に
              は、 最後の指定が使用されます。コード生成オプション、最
              適化レベル、インラインテンプレートファイルの使用は、 こ
              の オプションの後ろにスイッチを指定することにより変更で
              きます。たとえば、 -fast の最適化レベルが最初は -O4  で
              あっても、次に -fast -O1 と指定すると、最適化オプション
              は -O1 になります。

              IEEE 標準の例外処理に依存しているプログラムにはこのオプ
              ショ ンを使用しないでください。使用した場合には、異なる
              数値結果が得られたり、プログラムが処理の途中で終了し た
              り、 予 想 しない SIGFPE シグナルを受け取ることがありま
              す。

         -fd  旧式の関数宣言と定義を報告します。

         -flags
              利用可能なオプションについて 1 行にまとめて表示します。

         -fnonstd
              このオプションは、 -fns および -ftrap=common のマクロで
              す。

         -fns SPARC 非標準の浮動小数点モードを起動します。デフォル ト
              は、SPARC 標準浮動小数点モードです。あるルーチンを -fns
              でコンパイルした場合は、すべてのプログラムルーチンを
              -fns でコンパイルする必要があります。途中から異なるオプ
              ショ ンを使用すると、予期しない結果が生じることがありま
              す。

         -fround=r
              プログラム初期化中、実行時に確立される IEEE 754 小数 点
              丸めモードを設定します。

              r は、 nearest、 tozero、 negative、 positive、のいずれ
              かでなければなりません。デフォルト値は、
              -fround=nearest です。

              その意味は、ieee_flags サブルーチンの場合と同じです。あ
              るルーチンを -fround=r でコンパイルした場合は、すべての
              プログラムルーチンを -fround=r オプションでコンパイルす
              る 必 要 があります。途中から異なるオプションを使用する
              と、予期しない結果が生じることがあります。

         -fsimple[=n]
              オプティマイザが浮動小数点演算に関する前提事項を単純 化
              で きるようにします。n を指定する場合は、0、1、2 のいず
              れかでなければなりません。

              デフォルトは次のとおりです。
              o -fsimple[=n] を指定しない場合、コンパイラは
              -fsimple=0 を使用します。
              o -fsimple
               のみを指定して =n を指定しない場合、コンパイラは
              -fsimple=1
               を使用します。

              -fsimple=0
              前提事項の単純化を行えないようにします。厳密に IEEE 754
              に準拠します。

              -fsimple=1
              適度の単純化を行えるようにします。結果として作成され る
              コードは、IEEE 754 に厳密には準拠していませんが、ほとん
              どのプログラムの数値結果は変更されていません。

              -fsimple=1 の場合、オプティマイザは以下の事項を前提とし
              ます。
              o IEEE 754 のデフォルトの丸めモードおよびトラップモード
              は、プロセスの初期化後も変化しない。
              o 潜在的な浮動小数点例外以外の目に見える結果を作成し な
              い演算は、削除できる。
              o 無限大または非数をオペランドとして持つ計算は、非数 を
              その結果に伝える必要はない。たとえば、x*0 は 0 で置き換
              えることができる。
              o 演算はゼロの符号には依存しない。

              -fsimple=1 を指定した場合は、オプティマイザは必ず四捨五
              入 または例外に応じた最適化を行います。特に浮動小数点演
              算は、実行時に丸めモードを一定に保持して異なる結果を 作
              成する演算で置き換えることはできません。-fast は
              -fsimple=1 が暗黙的に設定されます。

              -fsimple=2
              多くのプログラムで丸め方法を変更して異なる数値を結果 と
              し て作成するような、積極的な浮動小数点演算の最適化を可
              能とします。たとえば、オプティマイザは与えられたルー プ
              内 のすべての x/y の演算を x*z で置き換えることができま
              す。ただし、x/y はそのループで少なくとも 1 回は必ず評価
              され、z=1/y であり、y および z の値はループの実行中は一
              定の値をとるものとされます。

              -fsimple=2 の場合でも、オプティマイザは何も作成しないプ
              ロ グラムに浮動小数点例外を導入することは許されていませ
              ん。

         -fsingle
              ( -Xt および -Xs モードのみ) このオプションを使用 す る
              と、 コンパイラは型の式を倍精度ではなく単精度で評価しま
              す (コンパイラを -Xa または -Xc モードで使用する場 合、
              float  型の式は単精度で評価されるため、このオプションは
              意味を持ちません)。

         -ftrap=t
              起動時に IEEE 754 トラップモードを有効にします。

              t  に は、  %all、  %none、   common、   [no%]invalid、
              [no%]overflow、     [no%]underflow、    [no%]division、
              [no%]inexact の 1 つ以上をコンマで区切って指定します。
              デフォルト値は -ftrap=%none です。

              このオプションは、プログラムの初期化時に確立される IEEE
              754  トラップモードを設定します。処理は左から右に行われ
              ます。common は定義により、無効、0 除算、オーバーフロー
              の例外を指します。

              例:  -ftrap=%all,no%inexact は、 inexact を除くすべての
              トラップを設定します。

              意味は、以下に示すことを除き ieee_flags サブルーチン の
              場合と同じです。
              o %all はすべてのトラップモードを起動します。
              o %none はデフォルト設定されており、すべての ト ラッ プ
              モードを終了します。
              o no% を接頭辞としてつけると、そのトラップモードだけ を
              終了します。

              1 つのルーチンを -ftrap=t でコンパイルした場合は、そ の
              プ ログラムのすべてのルーチンを -ftrap=t オプションでコ
              ンパイルする必要があります。途中から異なるオプション を
              使用すると、予期しない結果を生じることがあります。

         -G   動的にリンクされる実行可能プログラムではなく共 有 オ ブ
              ジェ クトを生成するようリンクエディタに指令します。この
              オプションは ld に渡されます。なお、このオプションは
              -dn オプションと一緒には使用できません。

         -g   dbx(1) 用の追加シンボルテーブル情報を生成します。

              -g オプションを指定すると、 -xildon がデフォルト設定 の
              イ ンクリメンタルリンカーのオプションとなります。 -xil-
              don を参照してください。 -G オプションが指定さ れ て い
              る、
              -xildoff オプションが指定されている、何らかのソースファ
              イル名がコマンド行に指定されている、という 3 つの条件が
              いずれも当てはまらない場合は、 ld の代わりに ild が呼び
              出されます。

              このオプションを -O オプションと共に指定した場合、特 定
              の範囲だけをデバッグすることができます。-xO4 と -g を組
              み合わせて指定すると、通常は -xO4 で行われるインライ ン
              化が取り消されます。

         -H   現在のコンパイル中に取り込まれた各ファイルのパス名を  1
              行に 1 つずつ標準エラー出力に書き出します。

         -h<名前>
              共有動的ライブラリを指定します。このオプションは、共 有
              動 的ライブラリに <名前> を割り当てます。これによって、
              複数の共有動的ライブラリを作成できます。通常、 -h に 続
              け て指定する名前は、 -o の後に指定した名前と同一にしま
              す。 -h と <名前> の間にはスペースを入れても入れなく て
              もかまいません。このオプションは ld に渡されます。

         -help
              コンパイラオプションの要約を 1 行ずつ表示します。

         -I<ディレクトリ>
              相対ファイル名 (先頭が / でないファイル名) で指定された
              #include ファイルの検索ディレクトリリストにパス名 <ディ
              レクトリ> を追加します。プリプロセッサはま ず、 ソー ス
              ファ イルが含まれているディレクトリ、次に -I オプション
              で指定されたディレクトリ  ( も し あ れ ば )、 最 後 に
              /usr/include ディレクトリの順に #include ファイルを検索
              します。

         -inline=[<関数 1>,...,<関数 n>]
              ユーザーが作成したルーチンの場合、<関数 1> から < 関 数
              n> の並びに指定した名前 (複数指定可) だけをインライン化
              するように試みます。コンパイル中のファイルに含まれて い
              るルーチンだけが操作の対象になります。<関数 1> から <関
              数 n> には、関数およびサブルーチンをコンマで区切って 指
              定してください。

              -O3 オプションとともに使用すると、いくつかのルーチン を
              インライン化することで更に最適化が行われます。 -O3 だけ
              を指定しても、インライン化は行われません。

              -O4 オプションとともに使用すると、インライン化の対象 が
              指定したルーチンに制限されるため、 -O4 だけを指定した場
              合ほど最適化されない可能性があります。通常、 -O4 を指定
              す ると、コンパイラはユーザーが作成したすべてのサブルー
              チンと関数のインライン化を試みます。 -inline= の右辺 に
              何 も指定しないと、ソースファイルのどのルーチンもインラ
              イン化されません。

              以下のいずれかの場合、ルーチンはインライン化されませ ん
              (このとき、警告はありません)。
              o 最適化のレベルが -O3 より低いとき
              o 該当するルーチンが見つからないとき
              o iropt によって、該当するルーチンのインライン化によ る
              効果または安全性が認められないとき
              o 該当するルーチンのソースがコンパイル中のファイルに な
              いとき

         -KPIC
              位置に依存しないコードを生成します。大域的なデータへ の
              参 照は、大域的なオフセットテーブル内のポインタの間接参
              照として生成されます。各関数呼び出しは、手続き の リ ン
              ケー ジテーブルによって PC 相対アドレス指定モードで生成
              されます。

              -Kpic の大域的なデータオブジェクトの数があまりにも多 い
              と き には、 -KPIC により、大域的なオフセットテーブルを
              32 ビットアドレスの範囲に拡張します。

         -Kpic
              -KPIC と同じですが、大域的なオフセットテーブルのサイ ズ
              は 8K に制限されます。

         -keeptmp
              コンパイル時に生成されたファイルを、自動的に削除せず 保
              持します。

         -L<ディレクトリ>
              オブジェクトライブラリルーチン ( ld(1) でリンクを行うた
              め のルーチン) を収めているディレクトリリストに <ディレ
              クトリ> を追加します。

         -l<名前>
              オブジェクトライブラリ <名前> をリンクします ( ld(1) で
              使用)。このオプションは <ソースファイル> 引数の後に指定
              しなければなりません。

         -libmieee
              数学ルーチンについて例外発生時に IEEE 754 型の戻り値 を
              返 すようにします。このような場合、例外メッセージは出力
              されず、 errno の価は信頼できません。

         -libmil
              より高速に実行するためいくつかのライブラリルーチンを イ
              ンライン化します。

         -M   指定された C プログラムについて前処理 (cpp) の み を 行
              い、 メークファイルの依存関係を生成して、その結果を標準
              出力に書き出すよう要求します (メークファイルと依存関 係
              の詳細については、 make(1) を参照してください)。

         -misalign
              -misalign は、データが適正に整列していることは想定し て
              い ないため、データについては非常に限定的なロードとスト
              ア (一度に 1 バイトずつ) を行う必要があります。このオプ
              ショ ンを指定すると、プログラムの実行時のパフォーマンス
              が極端に低下します。

         -misalign2
              -misalign2 は -misalign と同様に、データが適正に整列 し
              て い な いことを想定しますが、データが少なくともハーフ
              ワード配列であるとして扱います。データについては限定 的
              な ロードおよびストアを行う必要がありますが、プログラム
              実行時のパフォーマンス低下は -misalign の場合ほど極端で
              はありません。

         -mt  D_REENTRANT をプリプロセッサに渡し、 -l thread を付加し
              ま す。マルチスレッドのプログラムに対しては、コンパイル
              およびリンク時点で -mt オプションを使用しなければなりま
              せ ん。 実 行を高速化する場合、このオプションは複数プロ
              セッサシステムを必要とします。単一プロセッサシステム で
              は、 このオプションを指定した結果として作成される実行可
              能プログラムは、実行速度が遅くなります。

         -native
              コンパイラを実行するマシンで使用可能なコード生 成 オ プ
              ショ ンを確認し、コンパイラに対してそのマシンを対象にし
              たコードを生成するよう指示します。

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

              -fast マクロの展開には、 -native が含まれています。

         -nolib
              デフォルトのライブラリをいっさいリンクしません。すな わ
              ち、 -l オプションは ld には渡されません。通常、 acc ド
              ライバは -lm -lansi -lc を ld に渡します。

              -nolib を使用した場合には、すべての -l オプションをプロ
              グ ラマ自身の手で渡さなければなりません。たとえば、次の
              ように指定した場合、 libm は静的に、その他のライブラ リ
              は動的にリンクされます。
                   acc test.c -nolib -lansi -Bstatic -lm -Bdynamic
                   -lc

         -nolibmil
              -fast をリセットし、インラインテンプレートを取り込み ま
              せん。このオプションは、 -fast オプションの後に指定しま
              す。たとえば、 cc fast nolibmil ... のように指 定 し ま
              す。

         -noqueue
              ライセンスを取得できないと、このコンパイル要求を待ち 行
              列に入れません。

         -O[1|2|3|4|5]
              オブジェクトコードを最適化します。これは、 -g と共に 使
              用 可能ですが、-xa とともに使用できません。 -O を指定す
              ることは、 -O2 を指定することと等価です。数字の意味は、
              以下のとおりです。

                   1    基本的な局所的最適化 (ピープホール) を行い ま
                        す。

                   2    基本的な局所的および大域的最適化を行いま す。
                        帰 納変数の削除、局所的および大域的な共通部分
                        式の削除、計算の簡略化、コピーの伝達、定数 の
                        伝 達、 ルー プ不変式の最適化、レジスタ割り当
                        て、基本ブロックのマージ、末尾再帰 の 削 除、
                        デッ ドコードの削除、末尾呼び出しの削除、複雑
                        な式の展開などを行います。

                        -O2 レベルでは、大域、外部、間接の参照や定 義
                        は レジスタに割り当てられません。これらの参照
                        や定義は、あたかも volatile 型として宣言さ れ
                        た かのように取り扱われます。一般的に、コード
                        サイズは最も小さくなります。

                   3    -O2 の最適化に加えて、外部変数の参照と定義 も
                        最 適化します。ループの展開やソフトウェアのパ
                        イプラインなども実行されます。ポインタ代入 の
                        影 響を追跡しません。デバイスドライバのコンパ
                        イル時、あるいはシグナルハンドラ内から外部 変
                        数 を 変 更するプログラムのコンパイル時には、
                        volatile 型の修飾子を使用してオブジェクトが最
                        適 化 さ れないようにする必要があります。一般
                        に、このレベルの最適化では、コードのサイズ が
                        大きくなります。

                   4    -O3 の最適化に加えて、同じファイル内の関数 を
                        自 動 的 にインライン化します。通常は、これに
                        よって実行速度が改善されます。このレ ベ ル で
                        は、 ポインタ代入の結果が追跡され、通常はコー
                        ドサイズが増大します。

                   5    最高レベルの最適化を行います。より長いコン パ
                        イ ル時間を必要とするコンパイルアルゴリズム、
                        または実行時間の改善と同じ確実性を持たない コ
                        ン パイルアルゴリズムを使用します。このレベル
                        の最適化をプロファイルのフィードバックと共 に
                        使 用 す ると、更にパフォーマンスを向上させま
                        す。

                   オプティマイザは、その実行中にメモリが足りなくなる
                   と、最適化レベルを下げて現在の手続きを再試行するこ
                   とによって回復し、コマンド行オプションで指定された
                   元のレベルでそれ以降の手続きを再開します。

                   (同一の手続きが数千行のコードで構成されるよう な )
                   非常に大きな手続きを -O3 あるいは -O4 レベルで最適
                   化する場合、オプティマイザは大容量の仮想メモリを必
                   要とします。その場合には、コンピュータのパフォーマ
                   ンスが低下することがあります。

         -o   <出力ファイル> 出力ファイルを指定します。<出力ファイル>
              に は、コンパイルで生成するファイルの種類を示す適切な接
              尾辞を付ける必要があります (後述の「ファイル」の項を 参
              照 してください)。<出力ファイル> と <ソースファイル> を
              同じ名前にすることはできません (コンパイラはソース ファ
              イルに上書きしません)。

         -P   前処理だけ行います。出力は接尾辞 .i を持つファイルに 書
              き 出されます。この出力には、 -E オプションと異なり、前
              処理指令は含まれません。

         -p   prof(1) でプロファイルを生成するためのデータを収集す る
              オ ブ ジェ クトコードを作成します。正常終了時にファイル
              mon.out を生成する実行時記録メカニズムを呼び出します。

         -pg  gprof(1) でプロファイルを生成するためのデータを収集する
              オ ブ ジェクトコードを作成します。正常終了時に gmon.out
              ファイルを生成する実行時記録メカニズムを呼び出します。

         -PIC -KPIC と同様です。

         -pic -Kpic と同様です。

         -Qdir <ディレクトリ>
              <ディレクトリ> でコンパイラの構成要素を検索します。

         -Qoption c <引数>
              オプション <引数> を構成要素 c に渡します。このオプショ
              ン は該当の構成要素に適切なものとし、ハイフンで始まるも
              のがあります。 c には、次のいずれかを使用 で き ま す。
              acomp、 fbe、 cg、 iropt、 ld

         -Qpath <ディレクトリ>
              <ディレクトリ> をコンパイル検索パスに挿入します。< ディ
              レクトリ> は acomp(1) や ld(1) などのコンパイルプログラ
              ムの代替バージョンの検索に使用されます。このパスは、 た
              と えば *crt*.o や bb_link.o など、コンパイラドライバが
              暗黙に参照される特定の再配置可能オブジェクトファイル が
              最初に検索されます。

         -Qproduce<ソース種類>
              <ソース種類> で指定した種類のソースコードを生成します。
              <ソース種類> には次のものがあります。
                   .i   前処理された C ソース
                   .o   オブジェクトファイル
                   .s   アセンブラソース

         -qdir <ディレクトリ>
              -Qdir <ディレクトリ> と同様です。

         -qoption c <引数>
              -Qoption c <引数> と同様です。

         -qpath <ディレクトリ>
              -Qpath <ディレクトリ> と同様です。

         -qproduce<ソース種類>
              -Qproduce<ソース種類> と同様です。

         -R<ディレクトリ>[:<ディレクトリ>]
              実行時リンカーにライブラリ検索ディレクトリを指 定 し ま
              す。 各ディレクトリはコロンで区切って並べます。このリス
              トが存在し、しかも空でない場合、出力されるオブジェク ト
              ファ イ ル に 記 録 さ れ、実行時リンカーに渡されます。
              LD_RUN_PATH と -R オプションを両方とも指定した 場 合 に
              は、 -R オプションの方が優先されます。

         -S   プログラムをアセンブルせず、アセンブリソースファイル を
              生成します。

         -s   すべてのシンボリックデバッグ情報を出力オブジェクト ファ
              イルから取り除きます。 ld(1) に渡されます。

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

         -sbfast
              ソースブラウザ用のデータベースを作成しますが、実際の コ
              ンパイルは行いません。

         -strconst
              文字列リテラルをデータセグメンにではなく、テキストセ グ
              メントの読み出し専用データセクションに挿入します。

         -temp= <ディレクトリ>
              一時ファイルのディレクトリを <ディレクトリ> に設定し ま
              す。

         -time
              各種のコンパイルパスの実行時間を報告します。

         -U <名前>
              <名前> の定義を解除します。これは、前処理指 令 で あ る
              #undef を使用した場合と同じことです。 -D と -U について
              同じ <名前> を指定した場合には、これらのオプションの 指
              定順序に関係なく <名前> は定義されません。

         -unroll=n
              コンパイラにループを最適化 (展開) させるかどうかを指 定
              します。 n は正の整数です。 n が 1 の場合、それはコマン
              ドであり、コンパイラはループの最適化を行いません。 n が
              1 より大きい場合は、コンパイラに対して n 回展開するよう
              指示します。

         -V   コンパイラ実行時に各処理過程の名前とバージョン ID を 表
              示します。

         -v   詳細情報モード。コンパイラのバージョン番号と、コンパ イ
              ラが実行する各プログラムの名前を表示します。

         -vc  より厳しい意味検査を行い、 lint による検査と類似した 検
              査も可能にします。

         -w   警告を表示しないようにします。

         -X[a|c|s|t]
              ANSI C 標準への準拠の程度を指定します。準拠の程度は次の
              ように指定します。

              a (ANSI)
                   ANSI C と Sun C の拡張互換性が含まれます。 ANSI  C
                   に従って意味処理が行われます。Sun C と ANSI C の意
                   味処理が異なる場合、コンパイラはその矛盾を指摘する
                   警 告を出し、ANSI C に準拠した解釈を行います。これ
                   は、デフォルトデフォルトのモードです。

              c (conformance - 準拠)
                   Sun C の拡張互換性を含まず、ANSI C に最大限に準 拠
                   し ます。コンパイラは、ANSI C 以外の構造を持ってい
                   るプログラムに対してエラーメッセージや警告メッセー
                   ジを表示します。

              s (Sun C)
                   コンパイル後の言語には、ANSI 以前の Sun C との互換
                   性を持つすべての機能が含まれます。コンパイラは Sun
                   ANSI C と旧 Sun C での動作が異なるすべての言語構造
                   について警告を出します。このオプションでは前処理用
                   に cpp が呼び出され、 __STDC__ は定義されません。

              t (transition - 移行)
                   ANSI C と Sun C の拡張互換性が含まれます。 ANSI  C
                   に 従った意味処理の変更は行いません。Sun C と ANSI
                   C の意味が異なる場合、コンパイラはその矛盾を指摘す
                   る警告を出し、Sun C の解釈を行います。

              事前定義済みのマクロ __STDC__ は -Xt と -Xa について は
              値  0 を、 -Xc については値 1 を持っています ( -Xs に関
              する定義はありません)。異なる動作に関する警告メッセージ
              は すべて、適切なコーディングによって排除することができ
              ます。たとえば、キャストを使用することによって、整数 拡
              張の変更に関する警告を回避できます。

         -xa  -a と同様です。

         -xarch=a
              コンパイラが使用する命令セットを制限します。

              a は、 generic、 v7、 v8a、 v8、 v8plus、 v8plusa の い
              ずれか 1 つでなければなりません。

              このオプションは単独でも使用可能ですが、本来は -xtarget
              オ プションの展開の一部です。これはおもに、 -xtarget オ
              プションで指定された値を上書きする際に使用します。

              このオプションは、生成される命令を指定されたアーキテ ク
              チャ の命令に限定し、指定された命令セットだけが生成され
              るようにします。このオプションで生成された特定のセッ ト
              が 使用されるとは限りませんが、最適化を行う際には、通常
              そのセットが使用されます。

              このオプションを最適化と併せて使用する場合、適切な アー
              キ テクチャを選択をすると、指定されたアーキテクチャ上で
              の実行パフォーマンスを向上させることができま す。 た だ
              し、 不適切な選択を行うと、パフォーマンスが極端に低下す
              ることがあります。

              v7、 v8、および v8a のバイナリは、すべて互換性があり ま
              す。 v8plus および v8plusa は互いにバイナリ互換性があり
              ますが、上位互換性のみで、下位互換性はありません。い ず
              れ の選択を行なっても、古いアーキテクチャでは、実行速度
              が遅くなる可能性があります。詳細について は、 『C  ユー
              ザーズガイド』を参照してください。

              -xarch の値は次のとおりです。

              generic
                    ほとんどの SPARC で良好なパフォーマンスが得られま
                    す。 どんな場合もパフォーマンスが大きく低下するこ
                    とはありません。これはデフォルト設定され て い ま
                    す。

              v7    命令セットを V7 アーキテクチャに限定します。

              v8a   命令セットを V8 アーキテクチャの V8a バージョンに
                    限定します。

              v8    命令セットを V8 アーキテクチャに限定します。

              v8plus
                    命令セットを V9 アーキテクチャの V8plus バー ジョ
                    ンに限定します。

              v8plusa
                    命令セットを V9 アーキテクチャの V8plusa バージョ
                    ンに限定します。

         -xautopar
              複数プロセッサの自動並列化を有効にします。依存関係の 解
              析  (ループの繰り返し内部でのデータ依存依存性の解析) お
              よびループの再構成を行います。最適化が -xO3 より低い 場
              合は、-xO3 に上げ、警告を発します。

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

              c は次のいずれか 1 つでなければなりません。

              o generic

              o s1/l1/a1

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

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

              si/li/ai は次のように定義されます。

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

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

              ai
                レベル i のデータキャッシュの関連性

              このオプションは単独でも使用可能ですが、 -xtarget オ プ
              ショ ン の 展開に含まれています。これは、 -xtarget オプ
              ションで指定された値を変更するのが主な目的です。

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

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

              generic
                    ほとんどの SPARC で良好なパフォーマンスを提供する
                    キャッ シュプロパティを定義します。これは、デフォ
                    ルト設定されています。

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

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

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

         -xCC C++ 書式のコメントを受け入れます。

         -xcg89
              -cg89 と同様です。

         -xcg92
              -cg92 と同様です。

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

              c は、 generic、 old、 super、 super2、 micro、
              micro2、 hyper、 hyper2、 powerup、 ultra のいずれか 1
              つでなければなりません。

              このオプションは単独でも使用可能ですが、 -xtarget オプ
              ションの展開に含まれています。これはおもに、 -xtarget
              オプションで指定された値を無効にするために使用します。

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

              これは次に影響を与えます。

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

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

              o 意味論的に等しい命令が複数ある場合に、実際に使用する
                命令

              -xchip 値は次のとおりです。

              generic
                     ほとんどの SPARC で良好なパフォーマンスを得るた
                     めのタイミング特性を使用します。

              old    SuperSPARC より旧式のプロセッサのタイミング特性
                     を使用します。

              super  SuperSPARC チップのタイミング特性を使用します。

              super2 SuperSPARC II チップのタイミング特性を使用しま
                     す。

              micro  microSPARC チップのタイミング特性を使用します。

              micro2 microSPARC II チップのタイミング特性を使用しま
                     す。

              hyper  hyperSPARC チップのタイミング特性を使用します。

              hyper2 hyperSPARC II チップのタイミング特性を使用しま
                     す。

              powerup
                     Weitek PowerUp チップのタイミング特性を使用しま
                     す。

              ultra  UltraSPARC チップのタイミング特性を使用します。

         -xdepend
              ループを解析して繰り返し間のデータ依存関係を調べます。
              依存関係の解析は -xautopar に含まれています。依存関係の
              解析はコンパイル時に行われます。 -xdepend オプション
              は、 -xO3 または -xO4 が明示的にオンとなっている場合を
              除き無視され、または他のオプションにより無視されます。

         -xe  ソースファイルのエラーチェックだけを行い、オブジェクト
              ファイルや実行可能ファイルを生成しません。

         -xexplicitpar
              指定されたループを並行化します。依存関係の解析、つまり
              繰り返しの間のループおよびデータ依存関係の解析は、ユー
              ザーの責任です。ソフトウェアが指定されたループを並行化
              します。最適化が -xO3 より低い場合は、 -xO3 まで上げら
              れます。

              スレッド管理をご自身で行う場合は、 -xexplicitpar は指定
              しないでください。

              -xexplicitpar オプションは、SPARCworks/iMPact マルチプ
              ロセッサ拡張パッケージを必要とします。より高速なコード
              を得るためには、複数プロセッサシステムでこのオプション
              を使用します。単独プロセッサシステムの場合、生成された
              コードは通常は低速で実行されます。並行化するループを識
              別し、そのループに依存関係がある場合、不正な結果が得ら
              れ、多くの場合実行するたびに結果が異なり、警告は発せら
              れません。縮約ループには、明示的な並行プラグマは適用し
              ないでください。明示的な並行化が行われますが、ループの
              縮約については行われず、結果が不正となることがありま
              す。

              -xexplicitpar を使用してコンパイルとリンクを同時に実行
              する場合は、自動的にマイクロタスキング・ライブラリおよ
              びスレッドに対して安全な C 実行時ライブラリを含まれま
              す。 -xexplicitpar を使用して、個別にコンパイルとリンク
              を行う場合は、リンク時にも -xexplicitpar を指定する必要
              があります。

         -xF  アナライザとデバッガを使用して実行可能ファイルのパ
              フォーマンス解析を可能にします ( analyzer(1) と
              debugger(1) のマニュアルページを参照してください)。関数
              レベルで順序付けし直すことができるコードを生成します。
              ファイル内の各関数が、それぞれ別のセクションに設定され
              ます。たとえば、 foo() や bar() などの関数はそれぞれセ
              クション .text%foo および .text%bar に設定されます。実
              行可能ファイル内での関数の順序付けは、 -xF と、 ld の
              -M オプションを使用することにより制御できます ( ld(1)
              を参照してください)。

         -xhelp=f
              オンラインヘルプ情報を表示します。

              -xhelp=flags はコンパイラオプションの要約を表示し、
              -xhelp=readme は README ファイルを表示し、
              -xhelp=errors はエラーおよび警告メッセージファイルを表
              示します。

         -xildoff
              インクリメンタルリンカーを無効にし、 ld を強制的に使用
              します。このオプションは、 -g オプションを使用しない、
              -G オプションを使用する、またはコマンド行に何らかのソー
              スファイルがある、という 3 つの条件のうち 1 つでも当て
              はまる場合に、デフォルトになります。

         -xildon
              インクリメンタルリンカーを起動し、 ild をインクリメンタ
              ルモードで強制的に使用します。このオプションは、 -g オ
              プションを使用する、 -G オプションを使用しない、コマン
              ド行にソースファイルがないという 3 つの条件がすべて当て
              はまる場合に、デフォルトになります。

         -xinline=[<関数 1>,...,<関数 n>]
              -inline と同様です。

         -xlibmieee
              -libmieee と同様です。

         -xlibmil
              -libmil と同様です。

         -xlic_lib_=l
              l に指定した、サンの提供するライブラリとリンクします。l
              には、ライブラリをコンマで区切って指定してください。

         -xlicinfo
              ライセンスシステムに関する情報を返します。具体的には、
              ライセンスサーバーの名前、ライセンスが検査されたユー
              ザーのユーザーID を返します。このオプションを使用する
              と、コンパイラは起動されず、ライセンスも検査されませ
              ん。

         -xloopinfo
              並行化されているループと並行化されていないループを表示
              します。このオプションは通常、 -xautopar および -xex-
              plicitpar オプションと共に使用します。このオプション
              は、SPARCworks/iMPact マルチプロセッサ拡張パッケージを
              必要とします。

         -xM  メークファイル用の依存性を生成します。

         -xM1 -xM と同様です。
         -xMerge
              このオプションの指定があると、 acc は、アセンブラのため
              にデータセグメントとテキストセグメントをマージします。
              このコンパイルで生成されたオブジェクトファイルの初期化
              されたデータは読み取り専用で、( ld -N コマンドでリンク
              されないかぎり) プロセス間で共有されます。

         -xnolib
              -nolib と同様です。

         -xnolibmil
              -nolibmil と同様です。

         -xO[1|2|3|4|5]
              -O[1|2|3|4|5] と同様です。

         -xP  K&R C 関数定義のプロトタイプを出力します。

         -xparallel
              自動および明示ループの両方を並行化します。このオプショ
              ンは、 -xautopar、 -xdepend、および -xexplicitpar を呼
              び出します。これは不正な結果を作成する危険性がありま
              す。

              スレッド管理をご自身で行う場合は、 -xparallel を使用し
              ないでください。

              このオプションは、SPARCworks/iMPact マルチプロセッサ拡
              張パッケージを必要とします。より高速なコードを作成する
              ためには、このオプションを複数プロセッサ SPARC システム
              で使用してください。単一プロセッサシステムでは、生成さ
              れたコードは通常低速で実行されます。

              -xautopar オプション (それに -xparallel オプション) に
              は、依存関係の解析が含まれています。そのため、
              -xautopar を -xdepend と共に使用してもしなくても、大き
              な相違はありません。

              一度にコンパイルとリンクを行う場合、 -xparallel はマイ
              クロタスキングライブラリとスレッドに対して安全な C 実行
              時ライブラリとリンクします。コンパイルとリンクを個別ス
              テップで行い、またコンパイルを -xparallel で行う場合、
              リンクも -xparallel で行なってください。

         -xpg -pg と同様です。

         -xprofile=p
              プロファイル用のデータを収集、または最適化するためにプ
              ロファイルを使用します。

              p は、 collect、 use[: <ディレクトリ> ] または tcov で
              なければなりません。
              このオプションにより、実行中に実行の頻度データを収集し
              て保存します。このデータは以降の実行パフォーマンスを向
              上させるために使用することができます。このオプション
              は、最適化レベルが指定されている場合にのみ、有効です。

              collect
                   後でオプティマイザが使用する実行頻度データを収集し
                   て、保存します。

              use [:<ディレクトリ>]
                   コンパイラが保存した実行頻度データを使用します。
                   <ディレクトリ> には、プロファイルデータのあるディ
                   レクトリを指定してください。

              tcov ヘッダーファイルにソースコードを持つプログラム、ま
                   たは C++ テンプレートを使用するプログラムのデータ
                   を正しく収集します。 -xa を参照してください。

         -xreduction
              自動並行化の縮約のループを解析します。縮約ループの並行
              化を可能とするためには、 -xreduction と -xautopar の両
              方を指定してください。

              -xreduction を指定して、 -xautopar を指定しないと、コン
              パイラは警告を発します。

              このオプションは、SPARCworks/iMPact マルチプロセッサ拡
              張パッケージを必要とします。より高速なコードを作成する
              ためには、このオプションを複数プロセッサ SPARC システム
              で使用してください。単一プロセッサシステムでは、生成さ
              れたコードは通常低速で実行されます。

              縮約時には常に四捨五入誤りが発生する可能性があります。

              並列化する縮約ループがある場合は、 -xreduction を
              -xautopar と共に使用してください。明示的なプラグマは使
              用しないでください。それは、明示的なプログラムを使用す
              るとそのループの縮約が行われず、不正な結果が返されま
              す。

         -xregs=r
              生成されたコードのレジスタの使用方法を指定します。

              r には [no%]appl と [no%]float の 1 つ以上をコンマで区
              切って指定します。

              例: -xregs=appl,no%float

              その意味は次のとおりです。

              appl   レジスタ g2、 g3、および g4 の使用を可能としま
                     す。

              no%appl
                     appl レジスタを使用しません。

              float  SPARC ABI で指定した浮動小数点レジスタを使用可能
                     とします。

              no%float
                     浮動小数点レジスタを使用しません。

              デフォルト値は、 -regs=appl,float です。

         -xrestrict=f
              ポインタ値の関数引数を制限付き (restricted) ポインタと
              して扱います。f には、関数引数、%all、%none の 1 つ以上
              をコンマで区切って指定します。このコマンド行オプション
              は、単独でも使用できますが、 -xO3 以上の最適化と共に使
              用するのが最適です。

              デフォルト値は %none です。 -xrestrict を指定すること
              は、 -xrestrict=%all を指定することと等価です。

         -xs  dbx のための自動読み取りを無効にします。このオプション
              は .o ファイルを一緒に保存しておくことができない場合に
              使用します。-s オプションはアセンブラに引き渡されます。

              自動読み取りを使用しないと、旧来の方法によるシンボル
              テーブルのロードを行います。この場合、実行可能ファイル
              に dbx のすべてのシンボルテーブルを設定します。

              自動読み取りは、シンボルテーブルをロードするための新し
              い方法で、これはデフォルト設定されています。自動読み取
              りを使用すると、情報が .o ファイルに分散されるため、
              dbx は、シンボルテーブル情報を必要なときにだけロードし
              ます。そのため、リンカーによるリンクと dbx による初期化
              が高速で行われます。

              -xs の場合、実行可能ファイルを他のディレクトリに移動し
              て dbx を使用すれば、オブジェクトファイル (.o) を無視し
              てもかまいません。

              -xs を使用しない場合、実行可能ファイルを移動するとき
              は、ソースファイルとオブジェクトファイル (.o) の両方を
              移動するか、 dbx パスマップでパスを設定するか、またはコ
              マンドを使用しなければなりません。

         -xsafe=mem
              コンパイラは、メモリーに基づくトラップが発生しないこと
              を前提として動作します。

              このオプションは、V9 マシン上で推測的ロード命令を使用す
              る許可を与えます。

         -xsb -sb と同様です。

         -xsbfast
              -sbfast と同様です。

         -xsfpconst
              接尾辞を持たない浮動小数点定数を、デフォルトモードの倍
              精度ではなく、単精度として表現します。これは、 -Xc と共
              に使用することはできません。

         -xspace
              コードサイズを拡大するような最適化は行いません。たとえ
              ば、ループの展開は行いません。

         -xstrconst
              -strconst と同様です。

         -xtarget=t
              命令セットと最適化のためのターゲットシステムを指定しま
              す。

              t は、 native、 generic、<システム名> のいずれか 1 つで
              なければなりません。

              -xtarget オプションは、実際のシステムで発生する
              -xarch、 -xchip、および -xcache の組み合わせを迅速に、
              かつ容易に指定可能とします。 -xtarget の存在意義は、
              = の後に指定した値を展開したものにあります。

              -xtarget の値は次のとおりです。

              native   ホストシステム上で最上のパフォーマンスを取得し
                       ます。

              generic  汎用アーキテクチャ、チップ、およびキャッシュの
                       最上のパフォーマンスを取得します。これはデフォ
                       ルトです。

              <システム名>
                       指定されたシステムについて最上のパフォーマンス
                       を取得します。
                       有効なシステム名は次のとおりです。
                       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、ss5、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/hs11、ss20/hs12、
                       ss20/hs14、ss20/hs21、ss20/hs22、ss20/51、
                       ss20/61、ss20/71、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, ultra1/140, ultra1/170, ultra1/200,
                       ultra2/1170, ultra2/1200, ultra2/1300,
                       ultra2/2170, ultra2/2200, ultra2/2300, entr2,
                       entr2/1170, entr2/2170, entr2/1200,
                       entr2/2200, entr150, entr3000, entr4000,
                       entr5000, entr6000.

                       実際のシステム名と番号のニーモニックコードを示
                       す -xtarget 展開については、『C ユーザーズガイ
                       ド』の -xtarget=t の項を参照してください。

              このオプションはマクロです。
              -xtarget のそれぞれの値は、 -xarch、
              -xchip、および -xcache オプションの特定の値の組み合わせ
              に展開されます。たとえば、 -xtarget=sun4/15 は、
              -xarch=v8a -xchip=micro -xcache=2/16/1 と等価です。

         -xtemp= <ディレクトリ>
              一時ファイルのディレクトリを <ディレクトリ> に設定しま
              す。

         -xtime
              -time と同様です。

         -xtransition
              K&R C と ANSI C 間の相違について、警告を発します。

         -xunroll=n
              -unroll と同様です。

         -xvpara
              並行化すると安全が保証されない可能性のあるループについ
              て、警告を発します。コンパイラは、依存関係を持つ明示的
              に並行化された各ループを検出すると、警告メッセージを発
              行しますが、ループは並行化します。これは、
              -xexplicitpar オプションおよび #pragma MP 指示語と共に
              使用してください。

              このオプションは、SPARCworks/iMPact マルチプロセッサ拡
              張パッケージを必要とします。

         -Yc, <ディレクトリ>
              ライブラリファイルを探すデフォルトディレクトリを変更し
              ます。

         -Zll SPARCworks/iMPact 製品に含まれている lock_lint(1) プロ
              グラム用にコンパイルされた各 .c ファイルにつき 1 つの
              lock_lint データベースファイル (.ll ファイル) を作成し
              ます。実際のコンパイルは行いません。

         -Zlp ループプロファイラである looptool のためのオブジェクト
              ファイルを準備します。その後、looptool(1) ユーティリ
              ティを実行して、プログラムについてのループ統計値を生成
              することができます。このオプションは、 -xdepend と共に
              使用してください。 -xdepend が明示的にも暗黙的にも指定
              されていないと、 -xdepend を起動して、警告を発します。
              最適化が -O3 以上でない場合、最適化は -O3 に上げられ、
              警告が発せられます。

              -Zlp オプションは、SPARCworks/iMPact マルチプロセッサ拡
              張パッケージを必要とします。

         acc は、-r、-u、 -YP,<ディレクトリ>、-z を認識し、これらのオ
         プションとそれぞれの引数を ld に渡します。また、認識できな
         かったオプションも ld に渡し、そのことに対する警告を出しま
         す。

      プラグマ
         コンパイルシステムは以下の #pragmaを認識します。
         #pragma align, #pragma fini, #prama init, #pragma ident,
         #pragma int_to_unsigned, #pragma MP serial_loop, #pragma MP
         serial_loop_nested, #pragma MP taskloop, #pragma
         nomemorydepend, #pragma no_side_effect, #pragma pack,
         #pragma pipeloop, #pragma redefine_extname, #pragma
         unknown_control_flow, #pragma unroll, #pragma weak.

         #pragma redefine_extname に関する注意事項
         このプラグマにより、オブジェクトコード中で外部から参照できる
         ように定義された旧外部参照名は、新外部参照名に再定義されま
         す。これにより、リンク時にローダーから参照される名前は、新外
         部参照名だけになります。

         関数定義、初期設定子、または式のいずれかとして旧外部参照名を
         最初に使用した後、pragma redefine_extname が指定されている
         と、結果は未定義になります。

         コンパイラは、オブジェクト形式のマクロ
         _PRAGMA_REDEFINE_EXTNAME を事前定義して、このプラグマが認識
         可能であることを示します。

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

## ファイル

         a.out               実行可能出力ファイル
         <ファイル>.a        オブジェクトファイルのライブラリ
         <ファイル>.c        C ソースファイル
         <ファイル>.d        tcov(1) テストカバレージ入力ファイル
         <ファイル>.i        プリプロセッサ処理後の C ソースファイル
         <ファイル>.il        インライン展開ファイル
         <ファイル>.o        オブジェクトファイル
         <ファイル>.s        アセンブラソースファイル
         <ファイル>.tcov       tcov(1) からの出力ファイル
         acc                 コンパイラコマンド行ドライバ
         acomp               コンパイラフロントエンド
         cg                  コード生成部
         crt1.o              実行時起動コード
         crti.o              実行時起動コード
         crtn.o              実行時起動コード
         fbe                 アセンブラ
         gcrt1.o             gprof(1) でプロファイルを生成するための
                             実行開始コード
         gmon.out            -pg 用のデフォルトのプロファイルファイル
         iropt               大域オプティマイザ
         mcrt1.o             prof(1) および intro(3) でプロファイルを
                             生成するための実行開始コード
         mon.out             -p 用のデフォルトのプロファイルファイル
         SunWS_cache         -xsb または -xsbfast フラグが指定されて
                             いる際に、 sbrowser(1) のデータを格納す
                             るために使用するディレクトリ

## 関連項目

         ar(1), as(1), cflow(1), ctags(1), cxref(1), dbx(1),
         gprof(1), ld(1), lint(1), m4(1), make(1S), prof(1), tcov(1)

         『C ユーザーズガイド』

         『プログラミング言語 C』第 2 版、B. W. Kernighan、D. M.
         Ritchie 共著、共立出版

## 診断

         C コンパイラから出される診断は、できるだけ自明で分かりやすい
         ように心掛けています。ただしプリプロセッサ、アセンブラ、ロー
         ダーからは、不明瞭なメッセージが出されることがあります。