この章では、Solaris 2.5.1、2.6、7 で動作する CC コンパイラのコマンド行オプションについて詳しく説明します。ここで説明する機能は、特に断りがない限りすべてのプラットフォームに適用されます。特定のプラットフォームだけに有効な機能は SPARC または x86 と明示します。このマルチプラットフォーム対応の説明については、「マルチプラットフォーム対応」を参照してください。
次の表は、一般的なオプション構文の形式の例です (option はオプション名を示します。value は値を示します)。
構文形式 |
例 |
---|---|
-option |
-E |
-optionvalue |
-Ipathname |
-option=value |
-xunroll=4 |
-option value |
-o filename |
各オプションの説明での表記規則は 「書体と記号について」を参照してください。
角括弧、丸括弧、波括弧、パイプ記号、省略記号は、オプションの説明に使用しているもので、オプションの一部ではありません。
オプションを使用する際の一般的な注意事項は次のとおりです。
-llib オプションは、ライブラリ liblib.a (または liblib.so) とリンクするときに使用します。ライブラリが正しい順序で検索されるように、-llib オプションは、ソースやオブジェクトのファイル名の後に指定する方が安全です。
一般にコンパイラオプションは左から右に処理され、マクロオプション (他のオプションを含むオプション) は条件に応じて内容が変更されます (ただし-U オプションだけは、すべての -D オプション後に処理されます)。これはリンカーオプションには当てはまりません。
-I、-L、-pti、-R 、-xinline オプションで指定した内容は累積され、変更はされません。
ソースファイル、オブジェクトファイル、ライブラリは、コマンド行に指定された順序にコンパイルおよびリンクされます。
この節には、参照しやすいように、コンパイラオプションが機能別に分類されています。
処理 |
オプション |
詳細 |
---|---|---|
コンパイラの主要リリースとの互換モードを設定する。 |
-compat | |
C++ インライン関数を展開しない。 |
+d | |
仮想テーブル生成を制御する。 |
-e(0|1) | |
デバッグ用にコンパイルする。 |
-g | |
位置に依存しないコードを生成する。 |
-KPIC | |
位置に依存しないコードを生成する。 |
-Kpic | |
マルチスレッドコード用のコンパイルとリンクを行う。 |
-mt | |
コードのアドレス空間を指定する。 |
-xcode=a | |
データセグメントとテキストセグメントをマージする。 |
-xMerge |
処理 |
オプション |
詳細 |
---|---|---|
C++ インライン関数を展開しない。 |
+d | |
ドライバによって作成されるコマンドを表示するが、 コンパイルはしない。 |
-dryrun | |
ソースファイルに対しプリプロセッサを実行するが、 コンパイルはしない。 |
-E | |
コンパイラオプションの要約を一覧表示する。 |
-flags | |
デバッグ用にコンパルする。 |
-g | |
デバッグ用にコンパイルするが、インライン機能は無効にしない。 |
-g0 | |
インクルードされたファイルのパス名を出力する。 |
-H | |
コンパイラオプションの要約を一覧表示する。 |
-help | |
コンパイルで作成される一時ファイルを保存する。 |
-keeptmp | |
5.0 への移行に関する情報の参照先を表示する。 |
-migration | |
ソースの前処理だけを行う。.i ファイルに出力する。 |
-P | |
オプションをコンパイル中の各処理に直接渡す。 |
-Qoption | |
README ファイルの内容を表示する。 |
-readme | |
実行可能ファイルからシンボルテーブルを取り除く。 |
-s | |
一時ファイルのディレクトリを指定する。 |
-temp=dir | |
コンパイラのメッセージの詳細度を制御する。 |
-verbose=vlst | |
インクリメンタルリンカーを無効にする。 |
-xildoff | |
インクリメンタルリンカーを有効にする。 |
-xildon | |
オブジェクト (.o) ファイルなしに dbx でデバッグできるようにする。 |
-xs | |
WorkShop ソースコードブラウザ用のテーブル情報を 作成する。 |
-xsb | |
ソースブラウザ情報を作成するだけでコンパイルは しない。 |
-xsbfast |
処理 |
オプション |
詳細 |
---|---|---|
SPARC 非標準浮動小数点モードを有効または無効にする。 |
-fns[=(no|yes)] | |
(x86)浮動小数点精度モードを設定する。 |
-fprecision=p | |
起動時に IEEE 丸めモードを有効にする。 |
-fround=r | |
浮動小数点最適化の設定を行う。 |
-fsimple=n | |
(x86) 浮動小数点式の精度を変換する。 |
-fstore | |
起動時に IEEE トラップモードを有効にする。 |
-ftrap=t | |
(x86) 浮動小数点式の精度を変換しない。 |
-nofstore | |
例外時に libm が数学ルーチンに対し IEEE 754 の値を返す。 |
-xlibmieee |
処理 |
オプション |
詳細 |
---|---|---|
コンパイラの主要リリースとの互換モードを設定する。 |
-compat | |
さまざまな C++ 言語機能を有効または無効にする。 |
-features=alst |
ライブラリリンクオプションの要約をアルファベット順に示します。
処理 |
オプション |
詳細 |
---|---|---|
ライブラリのリンク形式が動的か静的かを指定する。 |
-Bbinding | |
実行可能ファイル全体に対し動的ライブラリを使用できるかどうか指定する。 |
-d(y|n) | |
実行可能ファイルではなく動的共有ライブラリを構築する。 |
-G | |
生成される動的共有ライブラリに名前を割り当てる。 |
-hname | |
ld(1) がどのような LD_LIBRARY_PATH 設定も 無視する。 |
-i | |
dir に指定したディレクトリを、ライブラリの検索に使用するディレクトリとして追加する。 |
-Ldir | |
リンカーのライブラリ検索リストに liblib.a または liblib.so を追加する。 |
-llib | |
特定のライブラリとそれに対応するファイルをコンパイルとリンクに強制的に組み込む。 |
-library=llst | |
マルチスレッドコード用のコンパイルとリンクを行う。 |
-mt | |
ライブラリのパスを実行可能ファイルに組み込まない。 |
-norunpath | |
共有動的ライブラリの検索パスを実行可能ファイルに組み込む。 |
-R pathname | |
静的にリンクする C++ ライブラリを指定する。 |
-staticlib=llst | |
アーカイブライブラリを作成する。 |
-xar | |
例外時に libm が数学ルーチンに対し IEEE 754 の値を 返す。 |
-xlibmieee | |
最適化のために、選択された libm ライブラリルーチンをインライン展開する。 |
-xlibmil | |
最適化された数学ルーチンを使用する。 |
-xlibmopt | |
ライセンスを必要とするサン提供のライブラリとリンクする。 |
-xlic_lib=llst | |
デフォルトのシステムライブラリとのリンクを無効にする。 |
-xnolib | |
コマンド行の -xlibmil を取り消す。 |
-xnolibmil | |
数学ルーチンライブラリを使用しない。 |
-xnolibmopt | |
書き込み不可で割り当て可能なセクションに対する 再配置が残っている場合には致命的エラーとする。 |
-ztext |
処理 |
オプション |
詳細 |
---|---|---|
ライセンスの待ち行列化を無効にする。 |
-noqueue | |
ライセンスを必要とするサン提供のライブラリと リンクする。 |
-xlic_lib=llst | |
ライセンスサーバー情報を表示する。 |
-xlicinfo |
処理 |
オプション |
詳細 |
---|---|---|
本文を参照。 |
-vdelx |
処理 |
オプション |
詳細 |
---|---|---|
コンパイルのみ。オブジェクト (.o) ファイルを作成するが、リンクはしない。 |
-c | |
コンパイラが呼び出すドライバに渡されるオプションを表示するが、コンパイルはしない。 |
-dryrun | |
C++ ソースファイルに対しプリプロセッサを実行し、結果を stdout に出力するが、コンパイルはしない。 |
-E | |
-help と同じ。 |
-flags | |
実行可能ファイルではなく動的共有ライブラリを 構築する。 |
-G | |
組み込むファイルのパス名を出力する。 |
-H | |
5.0 への移行に関する情報の参照先を表示する。 |
-migration | |
出力ファイルや実行可能ファイルの名前を filename にする。 |
-o filename | |
ソースの前処理だけを行い、.i ファイルに出力する。 |
-P | |
CC ドライバが、型が sourcetype の出力を作成する。 |
-Qproduce sourcetype | |
README ファイルの内容を表示する。 |
-readme | |
実行可能ファイルからシンボルテーブルを取り除く。 |
-s | |
コンパイラの冗長性を制御する。 |
-verbose=vlst | |
必要に応じて追加の警告を出力する。 |
+w | |
警告メッセージを抑止する。 |
-w | |
メークファイルの依存情報を出力する。 |
-xM | |
依存情報を生成するが、/usr/include は除く。 |
-xM1 | |
Sun WorkShop ソースコードブラウザ用のテーブル情報を作成する。 |
-xsb | |
ソースブラウザ情報を作成するだけでコンパイルは しない。 |
-xsbfast | |
コンパイル処理ごとの実行時間を報告する。 |
-xtime | |
ゼロ以外の終了状態を返すことによって、すべての警告をエラーに変換する。 |
-xwe |
パフォーマンスオプションの要約をアルファベット順に示します。
処理 |
オプション |
詳細 |
---|---|---|
最適な実行速度が得られるコンパイルオプションの組み合わせを選択する。 |
-fast | |
実行可能ファイルからシンボルテーブルを取り除く。 |
-s | |
ターゲットのアーキテクチャ命令セットを指定する。 |
-xarch=a | |
(SPARC) オプティマイザのターゲットキャッシュ属性を定義する。 |
-xcache=c | |
一般的な SPARC アーキテクチャ用のコンパイルを行う。 |
-xcg89 | |
SPARC V8 アーキテクチャ用のコンパイルを行う。 |
-xcg92 | |
ターゲットのプロセッサチップを指定する。 |
-xchip=c | |
リンカーによる関数の順序変更を有効にする。 |
-xF | |
最適な速度を得るために指定のルーチンをインライン 展開する。 |
-xinline=rlst | |
最適化のために、選択された libm ライブラリルーチンをインライン展開する。 |
-xlibmil | |
(SPARC) 最適化された数学ルーチンライブラリを 使用する。 |
-xlibmopt | |
コマンド行の -xlibmil を取り消す。 |
-xnolibmil | |
数学ルーチンライブラリを使用しない。 |
-xnolibmopt | |
最適化レベルを level にする。 |
-xOlevel | |
(SPARC) 一時レジスタの使用を制御する。 |
-xregs=r | |
(SPARC) メモリーに関するトラップを起こさないものとする。 |
-xsafe=mem | |
(SPARC) コードサイズを増やす最適化は行わない。 |
-xspace | |
ターゲットの命令セットと最適化のシステムを指定する。 |
-xtarget=t | |
可能であればループの最適化を行う。 |
-xunroll=n |
プリプロセッサオプションの要約をアルファベット順に示します。
処理 |
オプション |
詳細 |
---|---|---|
シンボル name をプリプロセッサに定義する。 |
-Dname[=def] | |
C++ ソースファイルに対しプリプロセッサを実行し、結果を stdout に出力するが、コンパイルはしない。 |
-E | |
ソースの前処理だけを行い、.i ファイルに出力する。 |
-P | |
プリプロセッサシンボル name の初期定義を削除する。 |
-Uname | |
メークファイルの依存情報を出力する。 |
-xM | |
依存情報を生成するが、/usr/include は除く。 |
-xM1 |
プロファイルオプションの要約についてアルファベット順に示します。
処理 |
オプション |
詳細 |
---|---|---|
prof でプロファイル処理するためのデータを収集するオブジェクトコードを用意する。 |
-p | |
プロファイル処理のためのコードを生成する。 |
-xa | |
gprof プロファイラによるプロファイル処理用にコンパイルする。 |
-xpg | |
実行時プロファイルデータを収集したり、このデータを使って最適化する。 |
-xprofile=tcov |
次のオプションはコンパイラ情報を簡単に参照するためのものです。
処理 |
オプション |
詳細 |
---|---|---|
コンパイラオプションの要約を一覧表示する。 |
-flags | |
コンパイラオプションの要約を一覧表示する。 |
-help | |
5.0 への移行に関する情報の参照先を表示する。 |
-migration | |
README ファイルの内容を表示する。 |
-readme |
処理 |
オプション |
詳細 |
---|---|---|
#include ファイルの検索パスに pathname を追加する。 |
-Ipathname | |
メークファイル依存情報を出力する。 |
-xM | |
依存情報を生成するが、/usr/include は除く。 |
-xM1 |
処理 |
オプション |
詳細 |
---|---|---|
テンプレートインスタンスの位置とリンケージを 制御する。 |
-instances=a | |
テンプレートソースの検索ディレクトリを追加 指定する。 |
-ptipath | |
テンプレートリポジトリのディレクトリを指定する。 |
-ptrdirectory | |
いろいろなテンプレートオプションを有効または 無効にする。 |
-template=w |
処理 |
オプション |
詳細 |
---|---|---|
マルチスレッドコード用のコンパイルとリンクを行う。 |
-mt | |
(SPARC) メモリーに関するトラップを起こさないものとする。 |
-xsafe=mem |
簡単に検索できるように、コンパイラオプションの情報の内容は、次の見出しに分かれています。オプションが他のオプションで置き換えられたり、他のオプションと同じである場合、詳細については他のオプション説明を参照してください。
見出し |
内容 |
---|---|
オプションの定義 |
各オプションのすぐ後には短い定義があります (小見出しはありません)。 |
値 |
オプションに値がある場合は、その値を示します。 |
デフォルト |
オプションに一次または二次のデフォルト値がある場合は、それを示します。 一次のデフォルトとは、オプションが指定されなかったときに有効になるオプションの値です。たとえば、-compat を指定しないと、デフォルトは -compat=5 になります。 二次のデフォルトとは、オプションは指定されたが、値が指定されなかったときに有効になるオプションの値です。たとえば、値を指定せずに -compat を指定すると、デフォルトは -compat=4 になります。 |
展開 |
オプションにマクロ展開がある場合は、ここに示します。 |
例 |
オプションの説明のために例が必要な場合は、ここに示します。 |
相互の関連性 |
他のオプションとの相互の関連性がある場合は、その関係をここに示します。たとえば「-xO が 3 より小さい場合は、-xinline オプションを使用すべきではありません」などです。 |
警告 |
オプションの使用について注意がある場合はここに示します。予測できない動作の原因となる操作についてもここに示します。 |
関連項目 |
ここには、参考情報が得られる他のオプションや文書を示します。 |
置き換え、同じ、使用などの言葉 |
そのオプションが廃止され、他のもので置き換えられていたり、そのオプションの代わりに別のオプションを使用する方がよい場合は、置き換えるオプションを「置き換え」、「同じ」、「使用」などの言葉を使って示します。たとえば、「-xO で置き換えられています」や「-xO を使用してください」は -xO を使用すべきであることを意味します。このような指示のあるオプションは、将来のリリースでサポートされない可能性があります。 オプションが長いオプション名の省略形である場合は、その名前を「同じ」で示します。一般的な意味と目的が同じであるオプションが 2 つある場合は、望ましいオプションを示します。たとえば、「-xO と同じです」は、-xO が望ましいオプションであることを示します。 |
この節では、すべての C++ コンパイラオプションをアルファベット順に示します。プラットフォームに制限事項がある場合は、その内容も示しています。
(x86)-xtarget=386 を使用してください。このオプションは、下位互換のためだけに用意されています。
(x86) -xtarget=486 を使用してください。このオプションは、下位互換のためだけに用意されています。
-xa を使用してください。
ライブラリのリンク形式が動的か静的かを指定します。
このオプションは、リンカーが動的 (共有) ライブラリを検索するのか、静的 (アーカイブ) ライブラリを検索するのかを指定します。-B オプションを使用すれば、同じコマンド行で指定を何回も切り替えることができます。このオプションはリンカー (ld) に渡されます。
Solaris 7 プラットフォームでは、必ずしもすべてのライブラリが静的ライブラリとして使用できるわけではありません。
binding は static か dynamic でなければなりません。
binding の値 |
意味 |
---|---|
dynamic |
まず liblib.so (共有) ファイルを検索するようにリンカーに指示します。これらのファイルが見つからないと、リンカーはliblib.a (静的で、共有されない) ファイルを検索します。ライブラリのリンク方式を共有にしたい場合は、このオプションを指定します。 |
static |
-Bstatic オプションを指定すると、リンカーは liblib.a (静的で、共有されない) ファイルだけを検索します。ライブラリのリンク形式を非共有にしたい場合は、このオプションを指定します。 |
(-B と static または dynamic との間に空白があってはなりません。)
-B を指定しないと、-Bdynamic が使用されます。
C++ のデフォルトのライブラリを静的にリンクするには、-staticlib オプションを使用します。
このオプションは、デフォルトで使用されるライブラリのリンクにも影響します。デフォルトのライブラリを動的にリンクするには、最後に指定する -B が -Bdynamic でなければなりません。
次の例では、libfoo.so があっても libfoo.a がリンクされます。他のすべてのライブラリは動的にリンクされます。
demo% CC a.o -Bstatic -lfoo -Bdynamic
-nolib、staticlib、ld(1)、「標準ライブラリの静的リンク」、 『リンカーとライブラリ』
コンパイルのみ。オブジェクト .o ファイルを作成しますが、リンクはしません。
この オプションは ld によるリンクを抑止し、各ソースファイルに対する .o ファイルを 1 つずつ生成するように、CC ドライバに指示します。コマンド行にソースファイルを 1 つだけ指定する場合には、-o オプションでそのオブジェクトファイルに明示的に名前を付けることができます。
CC -c x.cc と入力すると、x.o というオブジェクトファイルが生成されます。
CC -c x.cc -o y.o と入力すると、y.o というオブジェクトファイルが生成 されます。
-o filename
-xcg[89|92] を使用してください。
コンパイラの主要リリースとの互換モードを設定します。このオプションは、__SUNPRO_CC_COMPAT と __cplusplus マクロを制御します。
C++ コンパイラには主要なモードが 2 つあります。1 つは互換モードで、4.2 コンパイラで定義された ARM の意味解釈と言語が有効です。もう1 つは標準モードです。このモードでは、構文は ANSI/ISO 標準に従っていなければなりません。これらのモードには互換性はありません。ANSI/ISO 標準では、名前の符号化、vtable の配置、その他の ABI の細かい点で互換性のない変更がかなり必要であるためです。これらのモードは、次に示す -compat オプションで指定します。
値 |
意味 |
-compat=4 |
(互換モード) 言語とバイナリの互換性を 4.0.1、4.1、4.2 コンパイラに合わせます。 |
-compat=5 |
(標準モード) 言語とバイナリの互換性を 5.0 コンパイラに合わせます。 |
-compat オプションを指定しないと、-compat=5 が使用されます。
-compat だけを指定すると、-compat=4 が使用されます。
__SUNPRO_CC は、-compat の設定に関係なく 0x500 に設定されます。
このオプションは、プリプロセッサの __SUNPRO_CC_COMPAT=(4|5) マクロを制御します。
-xarch=v9 オプションと -compat[=4] オプションを同時に指定することはできません。
『C++ 移行ガイド』
C++ インライン関数を展開しません。
デバッグオプション -g を指定すると、このオプションが自動的に有効になります。
-g0 デバッグオプションでは、+d は有効になりません。
多数のインライン関数を使用する大きなプログラムでは、大量のコードが追加で生成されることがあります。
-g0、-g
プリプロセッサに対してマクロシンボル名 name を def と定義します。
このオプションは、ソースファイルの先頭に #define 指令を記述するのと同じです。-D オプションは複数指定できます。
次の値は SPARC と x86 用に事前定義されています。
_ _BUILTIN_VA_ARG_INCR (varargs.h、stdarg.h および sys/varargs.h 内のキーワード _ _builtin_alloca、_ _builtin_va_alist、および _ _builtin_va_arg_incr で使用)
_ _cplusplus
_ _DATE_ _
_ _ FILE_ _
_ _LINE_ _
_ _STDC_ _
_ _TIME_ _
_ _sun
sun については、次の値があらかじめ定義されています。
_ _SUNPRO_CC=0x500 (__SUNPRO_CC の値はコンパイラのリリース番号です)
_ _SUNPRO_CC_COMPAT=(4|5)
_ _SVR4
_ _'uname -s' 'uname-r'の結果_ (uname は uname -s の結果であり、無効な文字は下線で置き換えられます。たとえば、-D__SunOS_5_3、-D_SunOS_5_4 のようになります。)
_ _unix
次の値は UNIX 用に事前定義されています。
_WCHAR_T
次の値は SPARC 用にのみ定義されています。
_ _sparc (32 ビットコンパイルモードのみ)
次の値は SPARC v9 用にのみ定義されています。
__sparcv9 (64 ビットコンパイルモードのみ)
次の値は x86 用にのみ定義されています。
_ _i386
これらの値は、#ifdef のようなプリプロセッサに対する条件式の中で使用できます。
=def を使用しないと、name は 1 になります。
-U
実行可能ファイル全体に対して動的ライブラリを使用できるかどうか指定します。
このオプションは ld に渡されます。
このオプションは、コマンド行では 1 度だけしか使用できません。
値 |
意味 |
-dy |
リンカーで動的リンクを実行します。 |
-dn |
リンカーで静的リンクを実行します。 |
-d オプションを指定しないと、-dy が使用されます。
ld(1)、『リンカーとライブラリ』
(SPARC ) 可能な場合には、ダブルワードのロードとストア命令を生成してパフォーマンス向上を図ります。
このオプションは、double 型のデータがすべて double の境界から始まることを前提としています。
あるプログラム単位を -dalign でコンパイルした場合は、プログラムのすべての単位を -dalign でコンパイルしなければなりません。そうしないと予期しない結果が生じることがあります。
ドライバによって作成されたコマンドを表示しますが、コンパイルはしません。
このオプションは、コンパイルドライバが作成したサブコマンドの表示のみを行い、実行はしないように CC ドライバ に指示します。
ソースファイルに対してプリプロセッサを実行しますが、コンパイルはしません。
C++ のソースファイルに対してプリプロセッサだけを実行し、結果を stdout (標準出力) に出力するよう CC ドライバに指示します。コンパイルは行われません。したがって .o ファイルは生成されません。
テンプレートを使用する場合は、このオプションの結果を C++ コンパイラの入力に使用することはできません。
-P
-compat=4 のとき、仮想テーブルの生成を制御します。-compat=5 のときは、無効となり無視されます。
値 |
意味 |
+e0 |
仮想テーブルが生成されず、必要とされているテーブルへの外部参照を生成します。 |
+e1 |
仮想関数を使用して定義したすべてのクラスごとに仮想テーブルが生成されます。 |
このオプションを使用してコンパイルする場合は、-features=no%except オプションも使用してください。使用しなかった場合は、例外処理で使用される内部型の仮想テーブルがコンパイラによって生成されます。
『C++ 移行ガイド』
コンパイルオプションの最適な組み合わせを選択し、実行速度を最適化します。
このオプションは、コンパイラオプションの最適な組み合わせを選択して実行速度を向上するマクロです。
-fast オプションの基準は コンパイラの種類 (C、C++、FORTRAN 77、Pascal) によって異なります。詳細は、各コンパイラのマニュアルを参照してくだい。
このオプションは、次のコンパイラオプションを組み合せて、多くのアプリケーションのパフォーマンスを最大にします。
オプション |
SPARC |
x86 |
---|---|---|
-dalign |
○ |
|
-fns |
○ |
|
-fsimple |
○ |
|
-ftrap=%none |
○ |
○ |
-nofstore |
|
○ |
-xlibmil |
○ |
○ |
-xlibmopt |
○ |
○ |
-O4 |
○ |
○ |
-xtarget=native |
○ |
○ |
-fast オプションは、-fast 以降に指定されているオプションに影響する可能性のあるオプションに展開されます。
このコード生成オプション、最適化レベル、インラインテンプレートファイルの使用よりも、その後で指定するフラグの方が優先されます。ユーザーの指定した最適化レベルは、以前に設定された最適化レベルを無効にします。
-fast オプションには -fns -ftrap=%none が含まれているため、このオプションによってすべてのトラップが無効になります。
次のコンパイラコマンドでは、最適化レベルは -x03 になります。
demo% CC -fast -xO3
次のコンパイラコマンドでは、最適化レベルは -x04 になります。
demo% CC -xO3 -fast
IEEE 標準の浮動小数点演算を使用しているプログラムには、-fast を指定しないでください。計算結果が違ったり、プログラムが途中で終了する、あるいは予期しない SIGFPE シグナルが発生する可能性があります。
以前の SPARC リリースでは -fast マクロに -fnonstd が含まれていましたが、このリリースでは含まれていません。-fast では、非標準浮動小数点モードは初期化されません。『数値計算ガイド』と ieee_sun(3M) のマニュアルページを参照してください。
-dalign、 -fns、 -fsimple、 -ftrap=%none、 -libmil、 -nofstore、 -xO4、 -xlibmopt、 -xtarget=native
コンマで区切って指定された C++ 言語のさまざまな機能を、有効または無効にします。
-compat=4 のみの場合、a に次の値の 1 つを指定できます。
a の値 |
意味 |
---|---|
[no%]namespace |
キーワード namespace と using を許可します [しません]。 |
[no%]rtti |
実行時の型識別 (RTTI) を許可します [しません]。 |
-compat=4 と-compat=5 の場合、a は次の 1 つ以上の値をとるものとします。
a の値 |
意味 |
---|---|
[no%]altspell
[no%]arraynew
[no%]anachronisms
[no%]bool
[no%]conststrings
[no%]except
[no%]explicit
[no%]export
[no%]iddollar
[no%]localfor
[no%]mutable |
トークンの代替スペル (たとえば、「&&」の代わりに「and」) を認識します [しません]。
operator new や operator delete の配列形式 (たとえば、 operator new[] (void*)) を認識します [しません]。このオプションが有効な場合は、マクロ _ARRAYNEW=1 が定義されます。無効な場合は定義されません。 廃止されている構文を許可します [しません]。
ブール型とリテラルを許可します [しません]。
リテラル文字列を読み取り専用メモリーに入れます [入れません]。
C++ 例外を許可します [しません]。
キーワード explicit を認識します [しません]。
キーワード export を認識します [しません]。
識別子の最初以外の文字に $ を許可します [しません]。
for 文に対し新しい局所スコープ規則を使用します [しません]。
キーワード mutable を認識します [しません]。 |
[no%]castop は、C++ 4.2 コンパイラ用に作成されたメークファイルとの互換性を維持するために使用できますが、C++ 5.0 コンパイラには影響はありません。新しい書式の型変換 (const_cast、dynamic_cast、reinterpret_cast、static_cast) は常に認識され、無効にすることはできません。
-features=arraynew が有効になっていると、マクロは _ARRAYNEW=1 に定義されます。無効になっている場合は、マクロは定義されません。
-features=bool が有効になっていると、マクロは _BOOL=1 に定義されます。無効になっている場合は、マクロは定義されません。
-features=no%anachronisms が有効になっていると、廃止されている構文は許可されません。
-features=except が無効になっていると、関数の送出指定は受け付けられますが、無視されます。キーワード try、throw、catch は常に予約されています。
-features を指定しないと、以下が使用されます。
互換性モード (compat=4 または compat):
-features=%none,anachronisms,no%conststrings,except
標準モード (compat=5 または compat オプション指定なし):
-features=%all,conststrings,no%iddollar
『C++ 移行ガイド』
-help と同じです。
このオプションは、各コンパイラフラグの簡単な説明を表示します。
-help、-readme、-migration.
x86 : 浮動小数点ハードウェアの非標準的な初期設定を行います。
このオプションを指定すると、次の操作も可能になります。
浮動小数点演算オーバーフローのハードウェアによるトラップ
ゼロによる除算
無効演算の例外
これらの結果は SIGFPE シグナルに変換されますが、プログラムに SIGFPE ハンドラがない場合は、メモリーダンプを行なってプログラムを終了します。ただし、コアダンプのサイズがゼロに設定されている場合を除きます。
-fnonstd を指定しないと、IEEE 754 浮動小数点演算例外が起きても、プログラムは異常終了しません。アンダーフローは段階的です。
-fns、-ftrap=common、『数値計算ガイド』
(SPARC) SPARC 非標準浮動小数点モードを有効または無効にします。
-fns=yes (または -fns) を指定すると、プログラムが実行を開始するときに、非標準浮動小数点モードが有効になります。
このオプションを使うと、-fns を含む他のマクロオプション (-fast など) の後で非標準と標準の浮動小数点モードを切り替えることができます (「例」を参照)。
一部の SPARC デバイスでは、非標準浮動小数点モードで「段階的アンダーフロー」が無効にされ、非正規の数値を生成する代わりに、小さい値をゼロにフラッシュします。さらに、このモードでは、非正規のオペランドが報告なしにゼロに置き換えられます。
段階的アンダーフローや、非正規の数値をハードウェアでサポートしない SPARC デバイスでは、-fns=yes (または -fns) を使用すると、プログラムによってはパフォーマンスが著しく向上することがあります。
yes
no |
非標準浮動小数点モードを選択します。
標準浮動小数点モードを選択します。 |
-fns を指定しないと、非標準浮動小数点モードは自動的には有効にされません。標準の IEEE 754 浮動小数点計算が行われます。つまり、アンダーフローは段階的です。
-fns だけを指定すると、-fns=yes とみなされます。
-fns を含む -fast などのマクロフラグの後で -fns フラグの設定内容を変更するには、次のようにします。
demo% CC foo.cc -fast -fns=no
非標準モードが有効になっていると、浮動小数点演算によって、IEEE 754 規格の条件に合わない結果が出力されることがあります。
1 つのルーチンを -fns でコンパイルした場合は、そのプログラムのすべてのルーチンを -fns オプションでコンパイルする必要があります。そうしないと、予期しない結果が生じることがあります。
このオプションは、SPARC プラットフォームでメインプログラムをコンパイルするときしか有効ではありません。x86 プラットフォームでは、このオプションは無視されます。
-fns=yes (または-fns のみ) を使用したときに、通常は IEEE 浮動小数点トラップハンドラによって管理される浮動小数点エラーが発生すると、次のメッセージが返されることがあります。
Note: Nonstandard floating-point mode enabled See the Numerical Computation Guide, ieee_sun(3M)
= 意味= 注: 非標準浮動小数点モードが有効になっています。『数値計算ガイド』および ieee_sun(3M) マニュアルページを参照してください。
『数値計算ガイド』
(x86) デフォルト以外の浮動小数点精度モードを設定します。
-fprecision オプションを指定すると、FPU (Floating Point Unit) 制御ワードの丸め精度モードのビットが設定されます。これらのビットは、基本演算 (加算、減算、乗算、除算、平方根) の結果をどの精度に丸めるかを制御します。
p の値 |
意味 |
---|---|
single |
IEEE 単精度値に丸めます。 |
double |
IEEE 倍精度値に丸めます。 |
extended |
利用可能な最大の精度に丸めます。 |
p が single か double であれば、丸め精度モードは、プログラムの実行が始まるときに、それぞれ single か double 精度に設定されます。p が extended であるか、 -fprecision フラグが使用されていなければ、丸め精度モードは extended 精度のままです。
single 精度の丸めモードでは、結果が 24 ビットの有効桁に丸められます。double 精度の丸めモードでは、結果が 53 ビットの有効桁に丸められます。デフォルトの extended 精度の丸めモードでは、結果が 64 ビットの有効桁に丸められます。このモードは、レジスタにある結果をどの精度に丸めるかを制御するだけであり、レジスタの値には影響を与えません。レジスタにあるすべての結果は、拡張倍精度形式の全範囲を使って丸められます。ただし、メモリーに格納される結果は、指定した形式の範囲と精度に合わせて丸められます。
float 型の公称精度は single です。long double 型の公称精度は extended です。
-fprecision フラグを指定しないと、丸め精度モードは extended になります。
このオプションは、x86 プラットホームでメインプログラムをコンパイルするときしか有効ではありません。SPARC プラットホームでは、このオプションは無視されます。
起動時に IEEE 丸めモードを有効にします。
このオプションは、次に示す IEEE 754 丸めモードを設定します。
定数式を評価する時にコンパイラが使用できる。
プログラム初期化中の実行時に設定される。
内容は、ieee_flags サブルーチンと同じです。これは実行時のモードを変更するために使用します。
r の値 |
意味 |
---|---|
nearest tozero negative positive |
最も近い数値に丸め、中間値の場合は偶数にします。 ゼロに丸めます。 負の無限大に丸めます。 正の無限大に丸めます。 |
-fround オプションを指定しないと、丸めモードは -fround=nearest になります。
1 つのルーチンを -fround=r でコンパイルした場合は、そのプログラムのすべてのルーチンを同じ -fround=r オプションでコンパイルする必要があります。そうしないと、予期しない結果が生じることがあります。
このオプションは、メインプログラムをコンパイルするときにだけ有効です。
浮動小数点最適化の設定を選択します。
このオプションで浮動小数点演算に影響する前提を設けることにより、オプティマイザで行う浮動小数点演算が簡略化されます。
n を指定する場合、0、1、2 のいずれかにしなければなりません。
デフォルト
-fsimple を指定しないと、-fsimple=0 が使用されます。
-fsimple を指定しても n の値を指定しないと、-fsimple=1 が使用されます。
-fast は -fsimple=1 を意味します。
このオプションによって、IEEE 754 に対する適合性が損なわれることがあります。
-fast
(x86) 浮動小数点式の精度を変換します。
このオプションを指定すると、コンパイラは、次の場合に浮動小数点の式や関数の値を代入式の左辺の型に変換します。つまり、その値はレジスタにそのままの型で残りません。
式や関数を変数に代入する。
式をそれより短い浮動小数点型にキャストする。
このオプションを無効にするには、-nofstore オプションを使用します。
丸めや切り捨てによって、結果がレジスタの値から生成される値と異なることがあります。
-nostore
起動時に IEEE 754 トラップモードを有効に設定します。
このオプションは、プログラムの初期化時に設定される IEEE 754 トラップモードを設定しますが、SIGFPE ハンドラはインストールしません。トラップの設定と SIGFPE ハンドラのインストールを同時に行うには、ieee_handler を使用します。複数の値を指定すると、それらの値は左から右に処理されます。
t は、次の 1 つの値か、複数の値をコンマで区切ったものです。
t の値 |
意味 |
---|---|
[no%]division |
ゼロによる除算をトラップします [しません]。 |
[no%]inexact |
正確でない結果をトラップします [しません]。 |
[no%]invalid |
無効な操作をトラップします [しません]。 |
[no%]overflow |
オーバーフローをトラップします [しません]。 |
[no%]underflow |
アンダーフローをトラップします [しません]。 |
%all |
上のすべてをトラップします。 |
%none |
上のどれもトラップしません。 |
common |
無効、ゼロ除算、オーバーフローをトラップします。 |
[no%] 形式のオプションは、下の例に示すように、%all や common フラグの意味を変更するときだけ使用します。これは、特定のトラップを明示的に無効にするものではありません。
IEEE トラップを有効にする場合は、-ftrap=common の設定をお勧めします。
-ftrap を指定しないと、-ftrap=%none が使用されます (トラップは自動的には有効にされません)。
1 つ以上の値を指定すると、それらは左から右に処理されます。したがって、 -ftrap=%all,no%inexact と指定すると、inexact を除くすべてのトラップが設定されます。
モードは、実行時に ieee_handler(3M) で変更できます。
このオプションを使用してルーチンを 1 つコンパイルした場合は、プログラムのルーチンもすべて同じオプションを使用してコンパイルしてください。そうしないと、予期しない結果が生じることがあります。
-ftrap=inexact のトラップは慎重に使用してください。-ftrap=inexact では、浮動小数点の値が正確でないとトラップが発生します。たとえば、次の文ではこの条件が発生します。
x = 1.0 / 3.0;
このオプションは、メインプログラムをコンパイルするときにだけ有効です。このオプションを使用する際には注意してください。IEEE トラップを有効にするには -ftrap=common を使用してください。
ieee_handler(3M) のマニュアルページ
実行可能ファイルではなく動的共有ライブラリを構築します。
コマンド行で指定したソースファイルはすべて、デフォルトで -Kpic オプションでコンパイルされます。
テンプレートを使用する共有ライブラリを作成する場合は、通常、テンプレートデータベースでインスタンス化されているテンプレート関数を、共有ライブラリに組み込む必要があります。このオプションを使用すると、これらのテンプレートが必要に応じて共有ライブラリに自動的に追加されます。
-c (コンパイルのみのオプション) を指定しないと、次のオプションが ld に渡されます。
-dy
-G
-R
共有ライブラリの構築には、ld -G ではなく、CC -G を使用してください。こうすると、CC ドライバによって C++ に必要ないくつかのオプションが ld に自動的に渡されます。
-dy、-Kpic、-xcode=pic13、-xildoff、-ztext、ld(1) のマニュアルページ、『C++ ライブラリ・リファレンス』
コンパイラとリンカーに、デバッガでデバッグ可能なファイルとプログラムを用意するように指示します。
これには、次の処理が含まれています。
オブジェクトファイルと実行可能ファイルのシンボルテーブル内に、詳細情報 (スタブ) を生成する。
「支援関数」を生成する。デバッガはこれを呼び出して、デバッガの機能のいくつかを実現する。
関数のインライン生成を無効にする。
特定のレベルの最適化を無効にする。
このオプションと -xO を一緒に使用すると、必要な最適化レベルが得られます。
また、このオプションと -xO を一緒に使用すると、デバッグ情報が限定されます。
このオプションを指定すると、+d オプションが自動的に指定されます。
このオプションを指定すると、-xildon が指定されてデフォルトのリンカーがインクリメンタルリンカーのオプションになるため、コンパイル、編集、デバッグのサイクルを効率的に実行できます。
次の条件のどれかが真でない場合は、ld ではなく ild が起動されます。
-G オプションを指定している
-xildoff オプションを指定している
コマンド行でソースファイルを指定している
+d、-g0、-xildoff、-xildon、-xs、および ld(1) のマニュアルページ、 『dbx コマンドによるデバッグ』(スタブの詳細について)
デバッグ用のコンパイルとリンクを行いますが、インライン展開は行いません。
このオプションは、+d が有効化されないという点を除いて、-g と同じです。
+d、-g、-xildon、『dbx コマンドによるデバッグ』
インクルードされるファイルのパス名を出力します。
現在のコンパイルに含まれている #include ファイルのパス名を標準エラー出力 (stderr) に 1 行に 1 つずつ出力します。
コンパイラオプションの要約を一覧表示します。
このオプションは、各コンパイラオプションの簡単な説明を表示します。
-flags、-readme、『C++ 移行ガイド』
生成する動的共有ライブラリに名前 name を割り当てます。
これはローダー用のオプションで、ld に渡されます。通常、-h の後に指定する name (名前) は、-o の後に指定する名前と同じでなければなりません。-h と name の間には、空白文字を入れても入れなくてもかまいません。
コンパイル時のローダーは、指定された名前を作成中の動的共有ライブラリに割り当て、そのライブラリのイントリンシック名 (固有名) としてライブラリの中に記録します。 -hname (名前) オプションを指定しないと、イントリンシック名はライブラリファイルに記録されません。
実行可能ファイルはすべて、必要な共有ライブラリファイルのリストを持っています。実行時のリンカーは、ライブラリを実行可能ファイルにリンクするとき、ライブラリのイントリンシック名をこの共有ライブラリファイルのリストの中にコピーします。共有ライブラリにイントリンシック名がないと、リンカーは代わりにその共有ライブラリファイルのパス名を使用します。
demo% CC -G -o libx.so.1 -h libx.so.1 a.o b.o c.o
リンカー ld は LD_LIBRARY_PATH の設定を無視します。
#include ファイル検索パスに pathname を追加します。
このオプションは、インクルードファイルの相対ファイル名 (スラッシュ以外の文字で始まるファイル名) リストに、pathname (パス名) を追加します。
プリプロセッサは、インクルードファイルを次の順序で検索します。
#include "foo.h" の形式のインクルードファイル (" " で囲まれたもの) については、そのソースファイルを含むディレクトリ内を検索する
<foo.h> の形式のインクルードファイル (< > で囲まれたもの) については、そのソースファイルを含むディレクトリは検索しない
-I オプションで指定された名前を持つディレクトリ (もしあれば)
次に示す、C++ ヘッダーファイル用の標準ディレクトリ。 install-dir (インストール先) はデフォルトでは /opt です
install-dir/SUNWspro/SC5.0/include/CC
次に示す、ANSI C ヘッダーファイル用の標準ディレクトリ内のファイル
install-dir/SUNWspro/SC5.0/include/cc
/usr/include 内
-ptipath (パス) を使用しない場合、コンパイラは -Ipathname (パス) 内のテンプレートファイルを検索します。-ptipath の代わりに -Ipathname を使用してください。
-xinline=rlst を使用してください。
テンプレートインスタンスの位置とリンケージを制御します。
a の値 |
意味 |
---|---|
extern |
必要なすべてのインスタンスをテンプレートリポジトリに置き、それらに対して大域リンケージを行います (リポジトリのインスタンスが古い場合は、再びインスタンス化されます)。 |
explicit |
明示的にインスタンス化されたインスタンスを現在のオブジェクトファイルに置き、それらに対して大域リンケージを行います。必要なインスタンスが他にあっても生成しません。 |
global |
必要なすべてのインスタンスを現在のオブジェクトファイルに置き、それらに対して大域リンケージを行います。 |
semiexplicit |
明示的にインスタンス化されたインスタンスを現在のオブジェクトファイルに置き、それらに対して大域リンケージを行います。明示的なインスタンスにとって必要なすべてのインスタンスを現在のオブジェクトファイルに置き、それらに対して静的リンケージを行います。必要なインスタンスが他にあっても生成しません。 |
static |
必要なすべてのインスタンスを現在のオブジェクトファイルに置き、それらに対して静的リンケージを行います。 |
-instances を指定しないと、-instances=extern が使用されます。
extern 以外の値の場合、テンプレート定義が現在のコンパイル単位 に含まれていなければなりません (直接でも間接でも可)。この定義がないと、コンパイラはインスタンス化を報告なしに省略します。
コンパイル中に作成されたすべての一時ファイルを残しておきます。
このオプションを -verbose=diags と一緒に使用すると、デバックに便利です。
-v、-verbose
(SPARC) -xcode=pic32 と同じです。
(x86) -Kpic と同じです。
(SPARC) -xcode=pic13 と同じです。
(x86) 位置に依存しないコードを使ってコンパイルします。
このオプションは、共有ライブラリを構築するためにソースファイルをコンパイルするときに使用します。大域データへの各参照は、大域オフセットテーブルにおけるポインタの間接参照として生成されます。各関数呼び出しは、手続きリンケージテーブルを通して PC 相対アドレス指定モードで生成されます。
ライブラリを検索するディレクトリに、dir (ディレクトリ) を追加します。
このオプションは ld に渡されます。コンパイラが提供するディレクトリよりも dir が先に検索されます。
ライブラリ liblib.a または liblib.so をリンカーの検索ライブラリに追加します。
このオプションは ld に渡されます。通常のライブラリは、名前が liblib.a か liblib.so の形式です (lib と .a または .so の部分は必須です)。このオプションでは lib の部分を指定できます。コマンド行には、ライブラリをいくつでも指定できます。指定したライブラリは、-Ldir で指定された順に検索されます。
-llib オプションはファイル名の後に指定してください。
正しい順序でライブラリが検索されるようにするには、安全のため、必ずソースとオブジェクトの後に -lx を使用してください。
-Ldir、『C++ ライブラリ・リファレンス』、『Tools.h++ 7.0.7 クラスライブラリ・リファレンスマニュアル』
-xlibmieee を使用してください。
-xlibmil を使用してください。
l に指定した、CC が提供するライブラリを、コンパイルとリンクに組み込みます。
-compat=4 のとき、l には次のいずれかを指定します。
l の値 |
意味 |
---|---|
[no%]rwtools7 |
Tools.h++ v 7 を使用します [しません]。 |
[no%]rwtools7_dbg |
デバッグ可能な Tools.h++ v 7 を使用します [しません]。 |
[no%]complex |
複素数の演算に libcomplex を使用します [しません]。 |
[no%]libC |
C++ サポートライブラリ libC を使用します [しません]。 |
[no%]gc |
ガベージコレクション libgc を使用します [しません]。 |
[no%]gc_dbg |
デバッグ可能なガベージコレクション libgc を使用します [しません]。 |
%all |
%none、rwtools7、complex、gc、libC と同じ。 |
%none |
C++ ライブラリを一切使用しません。 |
-compat=5 の場合、l には次のいずれかを指定します。
l の値 |
意味 |
---|---|
[no%]rwtools7 |
Tools.h++ v 7 を使用します [しません]。 |
[no%]rwtools7_dbg |
デバッグ可能な Tools.h++ v 7を使用します [しません]。 |
[no%]iostream |
古い iostream ライブラリ libiostream を使用します [しません]。 |
[no%]Cstd |
C++ 標準ライブラリ libCstd を使用します [しません]。 |
[no%]Crun |
C++ 実行時ライブラリ libCrun を使用します [しません]。 |
[no%]gc |
ガベージコレクション libgc を使用します [しません]。 |
[no%]gc_dbg |
デバッグ可能なガベージコレクション libgc を使用します [しません]。 |
%all |
「%none,rwtools7,Cstd,gc,iostream,Crun」と指定することと同じ。 |
%none |
libCrun の場合を除いてC++ ライブラリを使用しません。 |
-compat=4 の場合は、-library を指定しないと、-library=%none,libC が使用されます。-library=%none または-library=no%libC で特に除外されない限り、libC ライブラリは常に含まれます。
-compat=5 の場合は、-library を指定しないと、-library=%none,Cstd,Crun が使用されます。-library=%none または-library=no%Cstd で特に除外されない限り、libCstd ライブラリは常に含まれます。また、-library=no%Crun で特に除外されない限り、libCrun ライブラリは常に含まれます。
標準モードで libCrun 以外の C++ ライブラリを除外してリンクするには、次のコマンドを使用します。
demo% CC -library=%none
標準モードで RogueWave の Tools.h++ バージョン 7 と iostream ライブラリを使用するには、次のコマンドを使用します。
demo% CC -library=rwtools7,iostream
-library でライブラリを指定すると、適切な -I パスがコンパイルで設定されます。リンクでは、適切な -L、-Y P、および -R パスと、-l オプションが設定されます。
-library オプションを使用すると、指定したライブラリに対する -l オプションが正しい順序で送信されるようになります。たとえば、-library=rwtools7、iostream および -lirabary=iostream、rwtools7 のどちらでも、-l オプションは、-lrwtool -liostream の順序で ld に渡されます。
指定したライブラリは、システムサポートライブラリよりも前にリンクされます。
RogueWave の Tools.h++ ライブラリは同時に 1 つしか使用できません。
RogueWave の Tools.h++ バージョン 7 ライブラリは、従来の iostream を使って構築されています。このため、標準モードで Rouged Wave の Tools.h++ のライブラリを使用する場合は、libiostream も含める必要があります。
libCstd と libiostream の両方を含めた場合は、プログラム内で新旧両方の形式の iostream (例: cout と std::cout) を使用して、同じファイルにアクセスしないよう注意してください。同じプログラム内に標準 iostream と従来の iostream が混在し、その両方のコードから同じファイルにアクセスすると、問題が発生する可能性があります。
libC とも libCrun ともリンクしないプログラムは、C++ のすべての機能を使用できないことがあります。
-xnolib を指定すると、-library は無視されます。
これらのライブラリ安定したものではなく、リリースによって変わることがあります。
-I、-l、-R、-Y P、-staticlib=l、 -xnolib、「iostream に対する make の使用」
『C++ ライブラリ・リファレンス』、『Tools.h++7.0 ユーザーズガイド』、 『Tools.h++ 7.0 クラスライブラリ・リファレンスマニュアル』、 『Standard C++ Class Library Reference』(英語版のみ)
C++ 5.0 へのソースコードの移行に関する情報の参照先を表示します。
『C++ 移行ガイド』には、コンパイラのバージョン 4.0.1、4.1、4.2 と 5.0 コンパイラの間の非互換性に関する情報が記載されています。
(SPARC) 通常はエラーになる、メモリー中の境界整列の誤ったデータを許可します。 以下に例を示します。
char b[100]; int f(int * ar) { return *(int *) (b +2) + *ar; }
境界整列の誤ったデータに対しては、非常に古い形式のロードとストアを使用して、1 度に 1 バイトずつ処理する必要があります。したがって、このオプションを使用すると、プログラムの実行速度が大幅に低下する可能性があります。
できれば、プログラムの境界整列が正しい部分と境界整列が誤った部分をリンクしないでください。
マルチスレッド化したコードのコンパイルとリンクを行います。
このオプションは、ソースファイルを -D_REENTRANT でコンパイルし、必要な順番で-lthread を含むようにサポートライブラリを増やします。
libthread とリンクする場合には、-lthread ではなく -mt オプションを使用してライブラリのリンク順序が正しくなるようにしてください。
コンパイルとリンクを別々に実行する場合で、コンパイルで -mt を使用した場合は、次の例に示すようにリンクでも -mt を使用してください。そうしないと、予期しない結果が発生する可能性があります。
demo% CC -c -mt myprog.cc demo% CC -mt myprog.o
-xnolib、『マルチスレッドのプログラミング』、『リンカーとライブラリ』、 『C++ ライブラリ・リファレンス』
-xtarget=native を使用してください。
-features=no%except を使用してください。
(x86) 浮動小数点式の精度を変換しない。
このオプションを指定すると、次のどちらの場合でも、コンパイラは浮動小数点の式や関数の値を代入式の左辺の型に変換しません。つまり、レジスタの値はそのままです。
式や関数を変数に代入する
式や関数をそれより短い浮動小数点型にキャストする
-fstore
-xnolib を使用してください。
-xnolibmil を使用してください。
ライセンスを待ち行列に入れません。
ライセンスを確保できない場合、コンパイラはコンパイル要求を待ち行列に入れず、コンパイルもしないで終了します。メークファイルのテストには、ゼロ以外の状態が返されます。
実行可能ファイルに共有ライブラリへの実行時検索パスを組み込みません。
実行可能ファイルが共有ライブラリを使用する場合、コンパイラは通常、実行時のリンカーに対して共有ライブラリの場所を伝えるために構築を行なったパス名を知らせます。これは、ld に対して -R オプションを渡すことによって行われます。このパスはコンパイラのインストール先によって決まります。
このオプションは、標準以外の位置にインストールされたコンパイラで生成した実行可能ファイルを、プログラムのユーザーがその非標準の位置で使う必要がない場合に便利です。
共有ライブラリをコンパイラのインストールされている位置 (デフォルトのインストール先は /opt/SUNWspro/lib) で使用し、かつ -norunpath を使用する場合は、リンク時に -R オプションを使うか、または実行時に環境変数 LD_LIBRARY_PATH を設定して共有ライブラリの位置を明示しなければなりません。そうすることにより、実行時リンカーはその共有ライブラリを見つけることができます。
-xO2 と同じです。
-xOlevel を使用してください。
出力ファイルまたは実行可能ファイルの名前を filename (ファイル名) に指定します。
このファイル名には、コンパイラが作成するファイルの型に合った接尾辞を指定してください。また、CC ドライバはソースファイルには上書きしないため、ソースファイルとは異なるファイルを指定する必要があります。
プリプロセッサの表明を禁止します。
+p を指定しないと、プリプロセッサの表明が許可されます。
ソースの前処理だけでコンパイルはしません ( 接尾辞.iのファイルを出力します)。
このオプションを指定すると、プリプロセッサが出力するような行番号情報はファイルに出力されません。
-E
prof でプロファイル処理するためのデータを収集するオブジェクトコードを作成します。-p は実行内容を記録し、正常終了時に mon.out というファイルを生成します。
-xpg、analyzer(1) のマニュアルページ
(x86) -xtarget=pentium と置き換えられています。
-xpg を使用してください。
-KPIC を使用してください。
-Kpic を使用してください。
-template=wholeclass を使用してください。
テンプレートソース用の検索ディレクトリを追加指定します。
このオプションは -Ipathname (パス名) によって設定された通常の検索パスに代わるものです。-ptipath (パス) フラグを使用した場合、コンパイラはこのパス上にあるテンプレート定義ファイルを検索し、-Ipathname フラグを無視します。
-ptipath よりも -Ipathname を使用すると混乱が起きにくくなります。
-Ipathname
-instances=static を使用してください。
テンプレートリポジトリのディレクトリを指定します。
テンプレートリポジトリは、ここで指定するディレクトリの SunWS_config か SunWS_cache サブディレクトリに含まれています。テンプレートリポジトリのキャッシュファイルは directory/SunWS_cache に格納されています。テンプレートリポジトリの構成ファイルは directory/SunWS_config に格納されています。
複数の -ptr オプションを指定することはできません。
-ptr/tmp/Foo を指定すると、リポジトリのサブディレクトリとして /tmp/Foo/SunWS_cache と /tmp/Foo/SunWS_config が指定されます。
サブディレクトリの名前は、環境変数 SUNWS_CACHE_NAME か SUNWS_CONFIG_NAME で変更できます。
コンパイルとリンクを別々に行う場合で、コンパイルで -ptr を使用した場合は、リンクでも -ptr を使用しなければなりません。
-verbose=template を使用してください。
option (オプション) を phase (コンパイル段階) に渡します。
複数のオプションを渡すには、コンマで区切って指定します。
SPARC アーキテクチャ |
x86 アーキテクチャ |
---|---|
ccfe |
ccfe |
iropt |
cg386 |
cg |
codegen |
cclink |
cclink |
ld |
ld |
次に示すコマンド行では、ld が CC ドライバによって起動されたとき、-Qoption で指定されたオプションの -i と -m が ld に渡されます。
demo% CC -Qoption ld -i,-m test.c
-Qoption を使用してください。
-p と同じです。
CC ドライバに sourcetype (ソースタイプ) 型のソースコードを生成するよう指示します。
sourcetype に指定する接尾辞の定義は次のとおりです。
接尾辞 |
意味 |
---|---|
.i |
ccfe が作成する前処理済みの C++ のソースコード |
.o |
コードジェネレータ cg が作成するオブジェクトファイル |
.s |
cg が作成するアセンブラソース |
-Qproduce を使用してください。
動的ライブラリの検索パスを実行可能ファイルに組み込みます。
-Rpathname (パス名) で複数の pathname を指定する場合は、それぞれの pathname をコロンで区切って並べます。
このオプションは ld に渡されます。
-R オプションを指定しないと、出力オブジェクトに記録され、実行時リンカーに渡されるライブラリ検索パスは、-xarch オプションで指定されたターゲットアーキテクチャ命令によって異なります (-xarc を指定しないと、-xarch=generic が使用されます)。
-xarch の値 |
デフォルトのライブラリ検索パス |
---|---|
v9 または v9a |
install_dir/SUNWspro/lib/v9 |
上記以外の値 |
install_dir/SUNWspro/lib |
標準インストールでは、install-path は /opt です。
LD_RUN_PATH 環境変数が設定されている場合に、-R オプションを指定すると、-R に指定したパスが検索され、LD_RUN_PATH のパスは無視されます。
-norunpath、『リンカーとライブラリ』
C++ 用の README (最新情報)ファイルの内容を表示します。
環境変数 PAGER に指定したコマンドを使用してファイルを表示することができます。この環境変数が設定されていない場合は、デフォルトの more コマンドが使用されます。
コンパイルしてアセンブリコードだけを生成します。
CC ドライバはプログラムをコンパイルして、アセンブリソースファイルを作成します。しかし、プログラムのアセンブルは行いません。このアセンブリソースファイル名には、 .s という接尾辞が付きます。
実行可能ファイルからシンボルテーブルを取り除きます。
出力する実行可能ファイルからシンボリック情報をすべて削除します。このオプションは ld に渡されます。
-xsb で置き換えられています。
-xsbfast を使用してください。
静的にリンクする C++ ライブラリを指定します。
i の値 |
意味 |
---|---|
[no%]library |
library に指定できる値については 「-library=l[,...l]」を参照してください。 |
%all |
-library オプションに指定したすべてのライブラリが静的にリンクされます。 |
%none |
静的にリンクするライブラリはありません。 |
-staticlib を指定しないと、-staticlib=%none が使用されます。
-library のデフォルト値は Crun であるため、次のコマンド行は、libCrun を静的にリンクします。
demo% CC -staticlib=Crun
これに対し、次のコマンド行は libgc をリンクしません。これは、-library オプションで明示的に指定しない限り、libgc はリンクされないためです。
demo% CC -staticlib=gc
libgc を静的にリンクするには、次のコマンドを使用します。
demo% CC -library=gc -staticlib=gc
-library オプションで明示的に選択したり、デフォルトで暗黙的に C++ ライブラリを選択する場合、-staticlib も指定してライブラリを静的にリンクしなければなりません。-library やデフォルトで選択していないライブラリを -staticlib で選択しても、そのライブラリはリンクされません。
Solaris 7 オペレーティング環境では、静的ライブラリとしては使用できない C++ ライブラリがあります。
これらのライブラリは安定したものではないため、リリースによって変わることが あります。
-library、「標準ライブラリの静的リンク」
一時ファイルのディレクトリを定義します。
コンパイル中に生成される一時ファイルを格納するディレクトリを dir に指定します。
-keeptmp
さまざまなテンプレートオプションを実行可能または実行不能にします。
w は wholeclass か no%wholeclass でなければなりません。
w の値 |
意味 |
[no%]wholeclass |
コンパイラに対し、使用されている関数だけインスタンス化するのではなく、テンプレートクラス全体をインスタンス化する [しない] ように指示します。クラスの少なくとも 1 つのメンバーを参照しなければなりません。そうでない場合は、コンパイラはそのクラスのどのメンバーもインスタンス化しません。 |
-xtime を使用してください。
プリプロセッサシンボル name の初期定義を削除します。
このオプションは、コマンド行に指定された (CC ドライバによって暗黙的に挿入されるものも含む) -D オプションによって作成されるマクロシンボル name の初期定義を削除します。他の定義済みマクロや、ソースファイル内のマクロ定義が影響を受けることはありません。
-U オプションは、コマンド行に複数指定できます。
このオプションを -D オプションと一緒に使用すると、このオプションは、すべての -D オプションが処理された後で処理されます。
-xunroll=n と同じです。
-verbose=version と同じです。
-verbose=diags と同じです。
delete[] を使用する式に対し、実行時ライブラリ関数 _vector_delete_ の呼び出しを生成する代わりに _vector_deletex_ の呼び出しを生成します。関数 _vector_delete_ は、削除するポインタおよび各配列要素のサイズという 2 つの引数をとります。
関数 _vector_deletex_ は _vector_delete_ と同じように動作しますが、3 つめの引数としてそのクラスのデストラクタのアドレスをとります。この引数はサン以外のベンダーが使用するためのもので、関数では使用しません。
コンパイラは、delete[] を使用する式に対して _vector_delete_ の呼び出しを生成します。
これは旧式フラグであり、将来のリリースでは削除されます。このフラグは -compat=4 でのみ利用できます。サン以外のベンダーからソフトウェアを購入し、ベンダーがこのフラグの使用を推奨していない限り、このオプションは使用しないでください。
コンパイラの冗長性を制御します。
v には、次に示す値の 1 つを指定しなければなりません。
[no%]template、[no%]diags、[no%]version、%all、%none
v の値 |
意味 |
---|---|
[no%]template
|
テンプレートインスタンス化冗長モード (検証モードともいう) を起動します [しません]。冗長モードはコンパイル中にインスタンス化の各段階の進行を表示します。テンプレートに不慣れな場合はこのオプションを使用することをお勧めします。 |
[no%]diags
|
各コンパイル段階が渡すコマンド行を表示します [しません]。 |
[no%]version
|
CC ドライバに対し、呼び出したプログラムの名前とバージョン番号を表示するよう指示します [しません]。 |
%all
|
上のすべてを呼び出します。 |
%none |
上のどれも呼び出しません。 |
v の値は複数指定することができます。たとえば、-verbose=template,diags とすることができます。
-verbose を指定しないと、-verbose=%none が使用されます。
必要な場合は特別な警告を出力します。
次のような問題のありそうな構造について、追加の警告を生成します。
移植性がない
間違っていると考えられる
効率が悪い
このオプションを指定しないと、コンパイラは必ず問題となる構造についてのみ警告を出力します。
-w、 +w2
さらに多くの警告を出力します。
+w
警告メッセージを抑止します。
コンパイラが出す警告を出力しません。ただし、一部の警告、特に旧式の構文に関する重要な警告は抑制できません。
+w
プロファイル用のコードを生成します。
コンパイル時に TCOVDIR 環境変数を設定すれば、カバレージ (.d) ファイルを置くディレクトリを指定できます。この変数を設定しなければ、カバレージ (.d) ファイルは ソースファイルと同じディレクトリにソースファイルとして残ります。
このオプションは、古いカバレージファイルとの下位互換を保つためだけに使用してください。
-xprofile=tcov オプションと -xa オプションは、1 つの実行可能ファイルで同時に使用できます。つまり、-xprofile=tcov でコンパイルされたファイルと -xa でコンパイルされたファイルからなるプログラムをリンクすることはできますが、両方のオプションを使って 1 つのファイルをコンパイルすることはできません。
-xa と -g を一緒に使用することはできません。
コンパイルとリンクを別々に行う場合で、-xa でコンパイルした場合は、 リンクも-xa で行わなければなりません。そうしないと予期できない結果になることがあります。
-xprofile=tcov、tcov(1) のマニュアルページ、 『プログラムのパフォーマンス解析』
アーカイブライブラリを作成します。
テンプレートを使用する C++ のアーカイブをコンパイルするときには通常、テンプレートデータベース中でインスタンス化されたテンプレート関数をそのアーカイブの中にあらかじめ入れておく必要があります。このオプションはそれらのテンプレートを必要に応じてアーカイブに自動的に追加します。
次のコマンド行は、ライブラリファイルとオブジェクトファイルに含まれるテンプレート関数をアーカイブします。
demo% CC -xar -o libmain.a a.o b.o c.o
テンプレートデータベースの .o ファイルをコマンド行に追加しないでください。
アーカイブを構築するときは、ar コマンドを使用しないでください。CC -xar を使用して、テンプレートのインスタンス化情報が自動的にアーカイブに含まれるようにしてください。
対象となるアーキテクチャの命令セットを指定します。
このオプションは単独でも使用できますが、このオプションの主な目的は -xtarget オプションによる値を変更することです。
このオプションは、生成される命令を特定のアーキテクチャに対する適切なものに制限したり、指定した命令セットを使用できるようにしたりします。このオプションによって指定された命令が必ず使用されるわけではありませんが、最適化を行うと、その命令が通常は使用されるようになります。
プラットフォーム |
a の値 |
---|---|
SPARC |
generic、v7、v8a、v8、v8plus、v8plusa、v9、v9a |
x86 |
generic、386、486、pentium、pentium_pro |
SPARC のアーキテクチャ、v7、v8a、v8 はすべてバイナリ互換です。v8plus と v8plusa は互いにバイナリ互換で上位互換性がありますが、下位互換性はありません。どの命令を選択しても、生成される実行可能ファイルの実行速度は、generic、v7、v8、v8a、v8plus、v8plusa の順に速くなります (generic が最も遅い) 。
generic と 386 はこのリリースでは同じ意味です。
486、pentium、pentium_pro を指定すると、Intel PentiumPro チップの命令セットが出力されます。
-xarch=a を指定しないと、-xarc=generic が使用されます。
-xarc=v9 オプションと -compat[=4] オプションを一緒に使用することはできません。
このオプションを最適化の指定とともに使用する場合、適切な選択をすれば、指定したアーキテクチャで実行可能ファイルの良好なパフォーマンスが得られますが、適切でない選択をすると、パフォーマンスが著しく低下することがあります。
(SPARC) オプティマイザで使用するキャッシュ属性を定義します。
オプティマイザが使用できるキャッシュの属性を定義します。この定義によって、特定のキャッシュが使用されるわけではありません。
このオプションは単独でも使用できますが、-xtarget オプションが展開されたものの一部です。このオプションの主な目的は、-xtarget オプションにより指定される値を変更することです。
c の値 |
意味 |
---|---|
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 のキャッシュ属性を定義します。 |
si |
レベル i のデータキャッシュのサイズ (K バイト) |
li |
レベル i のデータキャッシュのラインサイズ (バイト) |
ai |
レベル i のデータキャッシュの結合規則 |
たとえば、i=1 は、レベル 1 のキャッシュ属性の s1/l1/a1 を意味します。
-xcache を指定しないと、-xcache=generic がデフォルトで使用されます。この値を指定すると、ほとんどの SPARC プロセッサで良好なパフォーマンスが得られ、どのプロセッサでも顕著なパフォーマンスの低下がないキャッシュ属性がコンパイラで使用されます。
-xcache=16/32/4:1024/32/1 の設定内容は、次のとおりです。
レベル 1 のキャッシュ |
レベル 2 のキャッシュ |
---|---|
16K バイト ラインサイズ 32 バイト 4 ウェイアソシアティブ |
1024K バイト ラインサイズ 32 バイト ダイレクトマッピング |
-xtarget=t
(SPARC) 一般的な SPARC または SPARC V8 アーキテクチャ用にコンパイルします。
このオプションは、1989 年または 1992 年にリリースされた SPARC システムの浮動小数点演算ハードウェア用のコードジェネレータを指定します。fpversion コマンドを使用すれば、どの浮動小数点演算ハードウェアがインストールされているかを調べることができます。プログラムのある手続きをこのオプションでコンパイルしても、このプログラムの他のすべての手続きを同じ方法でコンパイルする必要はありません。
-x89 では、一般的な SPARC アーキテクチャで動作するコードが生成されます。
-x92 では、SPARC V8 アーキテクチャで動作するコートが生成されます。
-xch89 オプションは、-xtarget=ss2 用のマクロです。-xtarget=ss2 は、 -xarch=v7 -xchip=old -xcache=64/32/1 と同義です。
-xch92 オプションは、-xtarget=ss1000 用のマクロです。-xtarget=ss1000 は、-xarch=v8 -xchip=super -xcache=16/64/4:1024/64/1 と同義です。
コンパイルとリンクを別々に実行する場合で、コンパイルで -xcg89 または -xcg92 を使用した場合は、リンクでも同じオプションを使用してください。そうしないと、予期しない結果が発生する可能性があります。
オプティマイザが使用するターゲットとなるプロセッサを指定します。
ターゲットとなるプロセッサを指定することによって、タイミング属性を指定します。
このオプションは次のものに影響を与えます。
命令の順番 (スケジューリング)
コンパイラが分岐を使用する方法
意味が同じもので代用できる場合に使用する命令
このオプションは単独でも使用できますが、-xtarget オプションが展開されたものの一部です。このオプションの主な目的は、-xtarget オプションにより指定される値を変更することです。
プラットフォーム |
c の値 |
意味 |
---|---|---|
SPARC |
generic |
SPARC プロセッサ上で良好なパフォーマンスを得るための、タイミング属性を使用します。 |
SPARC |
old |
SuperSPARC(TM) チップより以前のプロセッサのタイミング属性を使用します。 |
SPARC |
super |
SuperSPARC チップのタイミング属性を使用 します。 |
SPARC |
super2 |
SuperSPARC II チップのタイミング属性を使用 します。 |
SPARC |
micro |
MicroSPARC(TM) チップのタイミング属性を使用 します。 |
SPARC |
micro2 |
MicroSPARC II チップのタイミング属性を使用 します。 |
SPARC |
hyper |
HyperSPARC チップのタイミング属性を使用 します。 |
SPARC |
hyper2 |
HyperSPARC II チップのタイミング属性を使用 します。 |
SPARC |
powerup |
Weitek PowerUp チップのタイミング属性を使用 します。 |
SPARC |
ultra |
UltraSPARC(TM) I チップのタイミング属性を使用 します。 |
SPARC |
ultra2 |
UltraSPARC II チップのタイミング属性を使用 します。 |
SPARC |
ultra2i |
UltraSPARC IIi チップのタイミング属性を使用 します。 |
x86 |
generic
|
ほとんどの x86 プロセッサが得られるタイミング属性を使用します。 |
x86 |
386 |
Intel 386 チップのタイミング属性を使用します。 |
x86 |
486 |
Intel 486 チップのタイミング属性を使用します。 |
x86 |
pentium |
Intel Pentium チップのタイミング属性を使用 します。 |
x86 |
pentium_pro |
Intel Pentium Pro チップのタイミング属性を使用 します。 |
ほとんどの SPARC プロセッサでは、デフォルト値の generic を使用すれば、パフォーマンスの著しい低下がなく、良好なパフォーマンスが得られる最も適したタイミング属性がコンパイラで使用されます。
(SPARC) コードのアドレス空間を指定します。
a の値 |
意味 |
---|---|
abs32
|
32 ビット絶対アドレスを生成します。高速ですが範囲が限定されます。コード + データ + bss サイズは 2**32 バイトに限定されます。 |
abs44
|
(SPARC) 44 ビット絶対アドレスを生成します。中程度の速さと中程度の範囲。コード + データ + bss サイズは 2**44 バイトに限定され、64 ビットアーキテクチャ -xarch=(v9|v9a) でのみ使用可能です。 |
abs64
|
(SPARC) 64 ビット絶対アドレスを生成します。低速ですが全範囲を使用でき、64 ビットアーキテクチャ -xarch=(v9|v9a) でのみ使用可能です。 |
pic13
|
位置に依存しないコード (小規模モデル) を生成します。高速だが範囲が限定されます。-Kpic と同等。32 ビットアーキテクチャでは最大 2**11 個の固有の外部シンボルを、64 ビットでは 2**10 個の固有の外部シンボルをそれぞれ参照できます。 |
pic32
|
位置に依存しないコード (大規模モデル) を生成します。遅いが全範囲を使用できます。-KPIC と同等。32 ビットアーキテクチャでは最大 2**30 個の固有の外部シンボルを、64 ビットでは 2**29 個の固有の外部シンボルをそれぞれ参照できます。 |
SPARC V8 と V7 の場合は -xcode=abs32 です。
SPARC と UltraSPARC (-xarc=(v9|v9a) のとき) の場合は -xcode=abs63 です。
64 ビット Solaris 7 ソフトウェアで -xarch=v9 または -xarch=v9a で動的共有ライブラリを構築するときは、-xcode=pic13 または -xcode=pic32 (-pic または -PIC でも可) を指定する必要があります。
リンカーによる関数の順序変更を有効にします。
この -xF オプションを指定してコンパイルした後で実行してアナライザを使用すると、最適化された関数の順序を示すマップファイルを作成できます。続いて実行するリンカーには、-Mmapfile (マップファイル) オプションでそのマップを使用するよう指示して、実行可能ファイルを作成することができます。これによって、実行可能ファイルの各関数が別々のセクションに置かれます。
メモリー上でサブプログラムの順序を並べ替えることで効果が上がるのは、アプリケーション時間の多くの割合がアプリケーションテキストのページフォルト時間に費やされている場合だけです。それ以外の場合は、順序を変えてもアプリケーションの全体的なパフォーマンスが向上しないことがあります。
-xF オプションは、-features=no%except (-noex) のときにだけ有効です。
analyzer(1)、debugger(1)、および ld(1) のマニュアルページ
-help と同じです。コンパイラオプションの一覧を表示します。
-readme と同じです。README(最新情報)ファイルの内容を表示します。
インクリメンタルリンカーを無効にします。
-g オプションを使用していない場合は、この -xildoff オプションがデフォルトになります。さらに -G オプションを使用しているか、コマンド行にソースファイルを指定している場合も、このオプションがデフォルトになります。このオプションを無効にするには、-xildon オプションを使用してください。
-xildon 、ild(1) および ld(1) のマニュアルページ、 『dbx コマンドによるデバッグ』
インクリメンタルリンカーを有効にします。
-G ではなく -g を使用し、コマンド行にソースファイルを指定していない場合は、このオプションが有効になります。このオプションを無効にするには、-xildoff オプションを使用してください。
-xildoff と、ild(1) および ld(1) のマニュアルページ
『dbx コマンドによるデバッグ』
指定されたルーチンをインライン展開します。
このオプションは C++ インライン関数には影響しません。+d オプションとも関係ありません。
このオプションを指定すると、オプティマイザは、コンマで区切って指定されたユーザー作成関数とサブルーチンをインライン展開します。インライン展開とは、コンパイラが関数呼び出しを実際のサブプログラムのコードで実質的に置き換える最適化技法の 1 つです。インライン展開を使えば、オプティマイザが効率的なコードを生成する可能性が高くなります。
次の制約があります。警告は出されません。
実際にインライン展開することが有利か、あるいは安全かはコンパイラが判定します。
そのルーチンのソースは、コンパイルするファイルになければなりません。
demo% cat example.cc static int twice ( int i ) { return 2*i; } int main() {return twice( 3 ); } demo% CC -compat=4 -O example.cc demo% nm -C a.out | grep twice [37] | 68068|8|FUNC|LOCL|0|7|twice(int) [__0FFtwicei] demo% CC -compat=4 -O -xinline=__0FFtwicei example.cc
リストに指定した関数が extern "C" で宣言されていない場合は、関数名が符号化されます。実行可能ファイルに対して nm コマンドを使用すれば、符号化された関数名を知ることができます。関数が extern "C" で宣言されている場合は、名前はコンパイラによって符号化されません。
最適化レベルが -x03 より低い場合、-xinline オプションは何の働きもしません。 -x04 では、オプティマイザは、インライン展開するべき関数を決定します (この決定は、 -xinline オプションを指定しなかった場合も行われます)。-x04 では、コンパイラもまた、インライン展開した場合にパフォーマンスの向上につながる関数を特定しようとします。-xinline を使用して関数を強制的にインライン展開した場合、実際にはパフォーマンスが低下することがあります。
nm(1)、 +d
例外時に libm が数学ルーチンに対し IEEE 754 値を返します。
libm のデフォルト動作は XPG に準拠します。
『数値計算ガイド』
選択された libm ライブラリルーチンを最適化のためにインライン展開します。
このオプションは C++ インライン関数には影響しません。
一部の libm ライブラリルーチンにはインラインテンプレートがあります。このオプションを指定すると、これらのテンプレートが選択され、現在選択されている浮動小数点オプションとプラットフォームに対して最も高速な実行可能コードが生成されます。
『数値計算ガイド』
最適化された数学ルーチンのライブラリを使用します。
パフォーマンスが最適化された数学ルーチンのライブラリを使用し、より高速で実行できるコードを生成します。通常の数学ライブラリを使用した場合とは、結果が少し異なることがあります。このような場合、異なる部分は通常は最後のビットです。
このライブラリオプションをコマンド行に指定する順序は重要ではありません。
-xlibmopt オプションの機能は -fast オプションを指定した場合にも含まれます。
-fast、-xnolibmopt
l で指定された、ライセンスが必要なサン提供のライブラリをリンクします。 -l と同様、このオプションは、ソースまたはオブジェクトファイル名に続けて、コマンド行の最後に指定する必要があります。
Sun(TM) Performance Library(TM) とリンクするには、次のように入力します。
demo% CC program.cc -xlic_lib=sunperf
README ファイル『performance_library』
ライセンスサーバー情報を表示します。
このオプションは、ライセンスサーバー名と、検査済みのライセンスを所持するユーザーのユーザー ID を返します。このオプションを指定するとコンパイラは起動されず、ライセンスも検査されません。
矛盾するオプションを使用すると、コマンド行の最後のものが優先され、警告が出されます。
demo% CC -c -xlicinfo any.cc
demo% CC -xlicinfo -c any.cc
-features=iddollar を使用してください。
メークファイルの依存情報を出力します。
#include <cstdio> using std::printf; int main () { printf ("Hello World!¥n"); }
demo% CC -xM hello.c と実行すると、以下のように依存情報が出力されます。
hello.o : hello.c hello.o : /opt/SUNWspro/SC5.0/include/CC/cstdio hello.o : /usr/include/sys/va_list.h
メークファイルおよび依存性についての詳細は、make(1) のマニュアルページを参照してください。
依存情報を生成しますが、/usr/include は除きます。
/usr/include ヘッダーファイルについての依存情報を出力しない点以外は、-xM オプションと同じ機能です。
-xM オプションの説明で使用した例と同じコードを、-xM1 オプションでコンパイル (% CC -xM1 hello.c を実行) すると、次のように出力されます。
hello.o: hello.c
データセグメントをテキストセグメントと併合 (マージ) します。
オブジェクトファイルのデータは読み取り専用です。また、このデータは ld -N を指定してリンクしない限りプロセス間で共有されます。
ld(1) のマニュアルページ
デフォルトのシステムライブラリとのリンクを無効にします。
通常 (このオプションを指定しない場合)、C++ コンパイラは、C++ プログラムをサポートするためにいくつかのシステムライブラリとリンクします。このオプションを指定すると、デフォルトのシステムサポートライブラリとリンクするための -llib オプションが ld に渡されません。
通常、コンパイラは、次のライブラリにこの順序でリンクします。
-compat=4 の場合:
-lC -lC_mtstubs -lm -lw -lcx -lc
-compat=5 の場合:
-lCstd -lCrun -lC_mtstubs -lm -lw -lcx -lc
-l オプションの順序は重要です。-lm、-lw、-lcx オプションは -lc より前になければなりません。
-mt コンパイラオプションを指定すると、-1C_mtstubs ではなく、-lthread が渡されます。
C アプリケーションのバイナリインタフェースを満たす最小限のコンパイルを行う場合、つまり、C サポートだけが必要な C++ プログラムの場合は、次のように指定します。
demo% CC -xnolib test.cc -lc
SPARC V8 システムのシングルスレッドアプリケーションに libm を静的にリンクするには、次のように指定します。
demo% CC -xnolib -Bstatic -lm -Bdynamic -lC_mtstubs -lw -lcx -lc
libm と libw を静的にリンクし、他のライブラリを動的にリンクするには、次のように指定します。
demo% CC -xnolib -Bstatic -lm -lw -Bdynamic -lcx -lc
-xnolib を指定する場合は、必要なすべてのシステムサポートライブラリを手動で一定の順序にリンクする必要があります。システムサポートライブラリは最後にリンクしなければなりません。
-xnolib を指定すると、-library は無視されます。
このリリースのライブラリは安定していないため、リリースごとに変更される可能性があります。
-lcx は 64 ビットコンパイルモードにはありません。
-library、-staticlib、-l
コマンド行の -xlibmil を取り消します。
最適化された数学ライブラリとのリンクを変更するには、このオプションを -fast と一緒に使用してください。
数学ルーチンのライブラリを使用しないようにします。
このオプションは次の例のように、コマンド行で -fast オプションを指定した場合は、その後に使用してください。
demo% CC -fast -xnolibmopt
最適化レベルを指定します。一般的に、プログラムの実行速度は最適化のレベルに依存します。最適化レベルが高いほど、実行速度が速くなります。
-xO[level] を指定しないと、非常に基本的なレベルの最適化しか行われません。つまり、最適化は、式の局所的な共通部分を削除することと、デッドコードを分析することに限定されます。最適化レベルを指定してコンパイルすると、プログラムのパフォーマンスが著しく向上することがあります。ほとんどのプログラムの場合、-O (暗黙的に -xO2 を指定する) の使用をお勧めします。
一般に、プログラムをより高い最適化レベルでコンパイルすれば、実行時のパフォーマンスはそれだけ向上します。しかし、最適化レベルが高ければ、それだけコンパイル時間が増え、実行可能ファイルが大きくなる可能性があります。
ごくまれに、-x02 の方が他の値より実行速度が速くなることがあり、-x03 の方が -x04 より速くなることがあります。すべてのレベルでコンパイルを行なってみて、こうしたことが発生するかどうか試してみてください。
メモリー不足になった場合、オプティマイザは最適化レベルを落として現在の手続きをやり直すことによってメモリーを回復しようとします。ただし、以降の手続きについては、-xO オプションで指定された最適化レベルを使用します。
-xO には 5 つのレベルがあります。以降では各レベルが SPARC プラットフォーム、x86 プラットフォーム、および両プラットフォームでどのように動作するかを説明します。
SPARC プラットフォームの場合:
-xO は -xO2 と同じことです。
-xO1 では、最小限の最適化 (ピープホール) が行われます。これはコンパイルの後処理におけるアセンブリレベルでの最適化です。-xO2 や -xO3 を使用するとコンパイル時間が著しく増加する場合や、スワップ領域が不足する場合だけ -xO1 を使用してください。
-xO2 では、次の基本的な局所的および大域的な最適化が行われます。
帰納的変数の削除
局所的および大域的な共通部分式の削除
計算の簡略化
コピーの伝播
定数の伝播
ループ不変式の最適化
レジスタ割り当て
基本ブロックのマージ
末端再帰の削除
デッドコードの削除
末端呼び出しの削除
複雑な式の展開
このレベルでは、外部変数や間接変数の参照や定義は最適化されません。一般に、このレベルを使用するとコードサイズが最小になります。
-xO3 では、-xO2 レベルで行う最適化に加えて、外部変数に対する参照と定義も最適化されます。このレベルでは、ポインタ代入の影響は追跡されません。volatile で適切に保護されていないデバイスドライバをコンパイルする場合か、シグナルハンドラの中から外部変数を修正するプログラムをコンパイルする場合は、-xO2 を使用してください。一般に -xO3 を使用すると、コードサイズが大きくなります。スワップ領域が不足する場合は、-xO2 を使用してください。
-xO4 では、-xO3 レベルで行う最適化レベルに加えて、同じファイルに含まれる関数のインライン展開も自動的に行われます。インライン展開を自動的に行なった場合、通常は実行速度が速くなりますが、遅くなることもあります。一般に、このレベルを使用するとコードサイズが大きくなります。
-xO5 では、最高レベルで最適化が行われます。これを使用するのは、コンピュータの最も多くの時間を小さなプログラムが使用している場合だけにしてください。このレベルで使用される最適化アルゴリズムでは、コンパイル時間が増えたり、実行時間が改善されないことがあります。このレベルの最適化によってパフォーマンスが改善される確率を高くするには、プロファイルのフィードバックを使用します。「-xprofile=p」 を参照してください。
x86 プラットフォームの場合:
-xO1 では、引数がメモリーから事前にロードされます。その結果、デフォルトの最適化の第 1 段階で行われる単純な最適化に加え、クロスジャンプ (末尾のマージ) も行われます。
-xO2 では、レベル 1 で行われる最適化に加えて、高レベルと低レベルの命令のスケジューリング、スピル解析、ループメモリー参照の削除、レジスタ寿命解析、レジスタ割り当ての強化、大域的な共通部分式の削除が行われます。
-xO3 では、レベル 2 で行われる最適化に加えて、ループ力の縮小とインライン展開が行われます。
-xO4 では、レベル 3 で行われる最適化に加えて、アーキテクチャ固有の最適化が行われます。
-xO5 では、最高レベルの最適化が行われます。このレベルで使用される最適化アルゴリズムでは、コンパイル時間が増えたり、実行時間が改善されないことがあります。
-g でデバッグしても -xO[level] には影響はありませんが、 -xO[level] は -g の内容を制限することがあります。
-xO3 と -xO4 オプションではデバッグに制限が生じるため dbx から変数を表示することはできませんが、dbx の where コマンドを使用すればシンボルによる追跡が可能です。
最適化レベルが -x03 より低い場合、-xinline オプションは何の働きもしません。 -x04 では、オプティマイザは、インライン展開するべき関数を決定します (この決定は、 -xinline オプションを指定しなかった場合も行われます)。-x04 では、コンパイラもまた、インライン展開した場合にパフォーマンスの向上につながる関数を特定しようとします。-xinline を使用して関数を強制的にインライン展開した場合、実際にはパフォーマンスが低下することがあります。
大規模な手続き (数千行のコードからなる手続き) に対して -x03 または -x04 を指定して最適化をすると、途方もない大きさのメモリーが必要になり、マシンのパフォーマンスが低下することがあります。
こうしたパフォーマンスの低下を防ぐには、limit コマンドを使用して、1 つのプロセスで使用できる仮想メモリーの大きさを制限します (csh(1) のマニュアルページを参照)。たとえば、使用できる仮想メモリーを 16M バイトに制限するには、次のコマンドを使用します。
demo% limit datasize 16M
このコマンドにより、データ領域が 16M バイトに達したときに、オプティマイザがメモリーを回復しようとします。
マシンが使用できるスワップ領域の合計容量を超える値は、制限値として指定することはできません。制限値は、大規模なコンパイル中でもマシンの通常の使用ができるぐらいの大きさにしてください。
最良のデータサイズ設定値は、要求する最適化のレベルと実メモリーの量、仮想メモリーの量によって異なります。
実際のスワップ空間に関する情報を得るには、swap -l と入力します。
実際の実メモリーに関する情報を得るには、dmesg | grep mem と入力します。
-fast、-xprofile=p、csh(1) のマニュアルページ
gprof でプロファイル処理ができるようにコンパイルします。
-xpg オプションでは、gprof で自動プロファイル処理するためのデータを収集するコードが生成されます。このオプションを指定すると、プログラムが正常に終了したときに gmon.out を生成する実行時記録メカニズムが呼び出されます。
コンパイルとリンクを別々に行う場合は、-xpg でコンパイルしたときは -xpg でリンクする必要があります。
-xprofile=p、analyzer(1) のマニュアルページ
(SPARC) UltraSparc II プロセッサで先読み命令を使用します。
-xprefetch=yes を指定すると、コンパイラは生成するコードに先読み命令を必要に応じて挿入します。UltraSparc II プロセッサでは、これよってパフォーマンスが向上することがあります。
-xprefetch オプションを指定しないと、デフォルトで -xprefetch=no が使用 されます。
-xprefetch だけを指定すると、-xprefetch=yes とみなされます。
実行時プロファイルデータを収集したり、それを使って最適化します。
このオプションを使用すると、実行頻度のデータが集められて、実行時に保存されます。保存されたデータは後続する処理の実行時に使用され、これによってパフォーマンスが向上します。このオプションは、最適化のレベルが指定されている場合にのみ有効です。
p の値 |
意味 |
---|---|
collect[:name]
|
実行頻度のデータを集めて保存します。後に -xprofile=use を指定した場合にオプティマイザがこれを使用します。コンパイラは、コードを生成して実行頻度を計ります。name には分析するプログラム名を指定します。name は省略可能で、省略すると実行可能ファイル名は a.out とみなされます。
-xprofile=collect:name でコンパイルしたプログラムは、実行時に、実行時のフィードバック情報を書き込むサブディレクトリ name.profile を作成します。データは、このサブディレクトリのファイル feedback に書き込まれます。プログラムを繰り返し実行すると、実行頻度のデータが feedback ファイルに累積されます。つまり、前の実行で出力されたデータはなくなりません。
|
use[:name] |
有効な最適化を行うために実行頻度データを使います。name には分析する実行可能ファイル名を指定します。name は省略可能で、省略すると実行可能ファイル名は a.out とみなされます。
プログラムは、前の実行で feedback ファイルに生成され、保存された実行頻度データを使って最適化されます。このファイルは、-xprofile=collect でコンパイルしたプログラムを前に実行したときに書き込まれたものです。
ソースファイルと他のコンパイラオプションは、feedback ファイルを生成したコンパイル済みプログラムをコンパイルしたときとまったく同じでなければなりません。-xprofile=collect:name でコンパイルしたのであれば、同じプログラム名 name を最適化コンパイルの -xprofile=use:name にも指定しなければなりません。
|
tcov |
「新しい」形式の tcov を使った基本ブロックカバレージ分析。
tcov の基本ブロックプロファイルの新しい形式です。-xa オプションと類似した機能を持つが、ヘッダーファイルにソースコードが含まれているプログラムや、C++ テンプレートを使用するプログラムのデータを集めます。コード生成は -xa オプションと類似しているが、.d ファイルは生成されません。その代わりにファイルが 1 つ生成されます。このファイルの名前は最終的な実行可能ファイルに基づきます。たとえば、 /foo/bar にある myprog を実行する場合、データファイルは /foo/bar/myprog.profile/tcovd に保存されます。
tcov を実行する場合は、新しい形式のデータが使用されるように -x オプションを指定します。-x オプションを指定しないと、デフォルトで古い形式の .d ファイルが使用され、予期しない結果が出力されます。
-xa オプションとは異なり、TCOVDIR 環境変数はコンパイル時間には影響しません。ただし、TCOVDIR 環境変数の値はプログラムの実行時に使用されます。 |
-xprofile=tcov オプションと -xa オプションは、1 つの実行可能ファイルで同時に使用できます。つまり、-xprofile=tcov でコンパイルされたファイルと -xa でコンパイルされたファイルからなるプログラムをリンクすることはできますが、両方のオプションを使って 1 つのファイルをコンパイルすることはできません。
-xprofile=tcov と -g は同時に使用できません。
コンパイルとリンクを別々に実行する場合で、コンパイルで -xprofile オプションを使用した場合は、リンクでも -xprofile を使用する必要があります。
-xa、tcov(1) のマニュアルページ 『プログラムのパフォーマンス解析』
(SPARC) 一時レジスタの使用を制御します。
コンパイラは、一時記憶領域として使用できるレジスタ (一時レジスタ) が多ければ、それだけ高速なコードを生成します。このオプションは、利用できる一時レジスタを増やしますが、必ずしもそれが適切であるとは限りません。
r には、以下の値のいずれか 1 つを指定します (意味は -xarch の設定に依存しま す)。
r の値 |
内容 |
---|---|
[no%]appl
|
V8 および V8a の場合、レジスタ %g2、%g3、%g4 の使用を許可します [しません]。 v8plus および v8plusa の場合、レジスタ g2、g3、g4、g5 の使用を許可します [しません]。 V9 および V9a の場合、レジスタ %g2 と %g3 の使用を許可します [しません]。
SPARC ABI では、これらのレジスタはアプリケーションレジスタと記述されています。これらのレジスタを使用すると、必要な load や store 命令が少なくなるため、パフォーマンスが向上します。ただし、これらのレジスタの使用は、他の目的でレジスタを使用するプログラムとの矛盾を起こすことがあります。 |
[no%]float
|
SPARC ABI で指定されているように、浮動小数点レジスタの使用を許可します [しません]。 プログラム中に浮動小数点コードが含まれていない場合でも、これらのレジスタを使用できます。 浮動小数点コードが含まれているソースプログラムには、このオプションを使用できません。 |
-xregs を指定しないと、-xregs=app1,float が使用されます。
使用可能なすべての一時レジスタを使ってアプリケーションプログラムをコンパイルするには、次のように指定します。
-xregs=appl,float
コンテキストの切り替えの影響を受けやすい非浮動小数点コードをコンパイルするには、次のように指定します。
-xregs=no%appl, no%float
SPARC V7 および V8 の ABI、SPARC V9 の ABI
オブジェクト (.o) ファイルなしに dbx でデバッグできるようにします。
-xs オプションは、dbx の自動読み込みを無効にします。このオプションは、.o ファイルを残しておくことができない場合に使用してください。このオプションにより、 -s オプションがアセンブラに渡されます。
「非自動読み込み」とは、シンボルテーブルの古い読み込み方法です。dbx の全シンボルテーブルが実行ファイル内に置かれます。また、リンカーによるリンクや dbx による初期化の速度が遅くなります。
「自動読み込み」は、シンボルテーブルの新しい読み込み方法 (デフォルト) です。各 .o ファイルに情報が含まれるため、dbx はシンボルテーブルが必要な場合にのみシンボルテーブル情報を読み込みます。このため、リンカーによるリンクや dbx による初期化の速度が速くなります。
-xs を指定する場合で、実行ファイルを別のディレクトリに移動して dbx を使用するときは、オブジェクト (.o) ファイルを移動する必要はありません。
-xs を指定せずに実行ファイルを別のディレクトリに移動して dbx を使用する場合は、ソースファイルとオブジェクト (.o) ファイルの両方を移動する必要があります。
(SPARC) メモリーに関するトラップを発生させません。
このオプションによって、V9 マシン上で投機的なロード命令を使用することができます。
このオプションは、-xarch で v8plus、v8plusa、v9、v9a のいずれかを指定し、最適化レベルの -x05 と組み合わせた場合にだけ有効です。
このオプションは、プログラムでメモリーに関するトラップが起こらないとみなせる場合しか使用しないでください。ほとんどのプログラムの場合、この仮定は適切であり、このように仮定してもかまいません。しかし、メモリーに関するトラップを明示的に強制して例外条件を処理するプログラムの場合は、このように仮定することはできません。
WorkShop ソースブラウザ用の情報を生成します。
このオプションを指定すると、CC ドライバが、ソースブラウザのために SunWS_cache サブディレクトリにシンボルテーブル情報を追加生成します。
-xsbfast
ソースブラウザ情報を生成するだけで、コンパイルはしません。
このオプションでは、ccfe 段階だけを実行して、ソースブラウザのために SunWS_cache サブディレクトリにシンボルテーブル情報を追加生成します。オブジェクトファイルは生成されません。
-xsb
(SPARC) コードサイズが大きくなるような最適化は行いません。
命令セットと最適化処理の対象システムを指定します。
コンパイラにハードウェアシステムを正確に指定すると、プログラムによってはパフォーマンスが向上します。プログラムのパフォーマンスを重視する場合は、ハードウェアを適切に指定することが極めて重要です。特に、プログラムをより新しい SPARC システム上で実行する場合には重要になります。しかし、ほとんどのプログラムおよび旧式の SPARC システムではパフォーマンスの向上はわずかであるため、汎用的な指定方法で十分です。
t の値 |
意味 |
---|---|
native |
ホストシステムで最高のパフォーマンスが得られます。
コンパイラは、ホストシステム用に最適化されたコードを生成し、コンパイラが動作しているマシンで使用できるアーキテクチャ、チップ、キャッシュの属性を決定します。 |
generic |
汎用アーキテクチャ、チップ、キャッシュで最高のパフォーマンスが得られます。 コンパイラは、-xtarget=generic を -xarch=generic -xchip=generic -xcache=generic に展開します。 これはデフォルト値です。 |
system-name |
指定するシステムで最高のパフォーマンスが得られます。 次の節の表から SPARC プラットフォームの名前を選択します。 |
x86 の場合は、-xtarget に次の値を指定できます。
native または generic
386: Intel 80386 マイクロプロセッサで最高のパフォーマンスが得られるコードが生成されます。
486: Intel 80486 マイクロプロセッサで最高のパフォーマンスが得られるコードが生成されます。
pentium: Pentium または Pentium Pro マイクロプロセッサで最高のパフォーマンスが得られるコードが生成されます。
pentium_pro: Pentium Pro マイクロプロセッサで最高のパフォーマンスが得られるコードが生成されます。
SPARC デバイスの場合、-xtarget は次の展開値を受け付けます。
-xtarget |
-xarch |
-xchip |
-xcache |
---|---|---|---|
cs6400 |
v8 |
super |
16/32/4:2048/64/1 |
entr2 |
v8 |
ultra |
16/32/1:512/64/1 |
entr2/1170 |
v8 |
ultra |
16/32/1:512/64/1 |
entr2/1200 |
v8 |
ultra |
16/32/1:512/64/1 |
entr2/2170 |
v8 |
ultra |
16/32/1:512/64/1 |
entr2/2200 |
v8 |
ultra |
16/32/1:512/64/1 |
entr150 |
v8 |
ultra |
16/32/1:512/64/1 |
entr3000 |
v8 |
ultra |
16/32/1:512/64/1 |
entr4000 |
v8 |
ultra |
16/32/1:512/64/1 |
entr5000 |
v8 |
ultra |
16/32/1:512/64/1 |
entr6000 |
v8 |
ultra |
16/32/1:512/64/1 |
sc2000 |
v8 |
super |
16/32/4:2048/64/1 |
solb5 |
v7 |
old |
128/32/1 |
solb6 |
v8 |
super |
16/32/4:1024/32/1 |
ss1 |
v7 |
old |
64/16/1 |
ss1plus |
v7 |
old |
64/16/1 |
ss2 |
v7 |
old |
64/32/1 |
ss2p |
v7 |
powerup |
64/32/1 |
ss4 |
v8a |
micro2 |
8/16/1 |
ss4/85 |
v8a |
micro2 |
8/16/1 |
ss4/110 |
v8a |
micro2 |
8/16/1 |
ss5 |
v8a |
micro2 |
8/16/1 |
ss5/85 |
v8a |
micro2 |
8/16/1 |
ss5/110 |
v8a |
micro2 |
8/16/1 |
ss10 |
v8 |
super |
16/32/4 |
ss10/20 |
v8 |
super |
16/32/4 |
ss10/30 |
v8 |
super |
16/32/4 |
ss10/40 |
v8 |
super |
16/32/4 |
ss10/41 |
v8 |
super |
16/32/4:1024/32/1 |
ss10/50 |
v8 |
super |
16/32/4 |
ss10/51 |
v8 |
super |
16/32/4:1024/32/1 |
ss10/61 |
v8 |
super |
16/32/4:1024/32/1 |
ss10/71 |
v8 |
super2 |
16/32/4:1024/32/1 |
ss10/402 |
v8 |
super |
16/32/4 |
ss10/412 |
v8 |
super |
16/32/4:1024/32/1 |
ss10/512 |
v8 |
super |
16/32/4:1024/32/1 |
ss10/514 |
v8 |
super |
16/32/4:1024/32/1 |
ss10/612 |
v8 |
super |
16/32/4:1024/32/1 |
ss10/712 |
v8 |
super2 |
16/32/4:1024/32/1 |
ss10/hs11 |
v8 |
hyper |
256/64/1 |
ss10/hs12 |
v8 |
hyper |
256/64/1 |
ss10/hs14 |
v8 |
hyper |
256/64/1 |
ss10/hs21 |
v8 |
hyper |
256/64/1 |
ss10/hs22 |
v8 |
hyper |
256/64/1 |
ss20 |
v8 |
super |
16/32/4:1024/32/1 |
ss20/50 |
v8 |
super |
16/32/4 |
ss20/51 |
v8 |
super |
16/32/4:1024/32/1 |
ss20/61 |
v8 |
super |
16/32/4:1024/32/1 |
ss20/71 |
v8 |
super2 |
16/32/4:1024/32/1 |
ss20/151 |
v8 |
hyper |
512/64/1 |
ss20/152 |
v8 |
hyper |
512/64/1 |
ss20/502 |
v8 |
super |
16/32/4 |
ss20/514 |
v8 |
super |
16/32/4:1024/32/1 |
ss20/612 |
v8 |
super |
16/32/4:1024/32/1 |
ss20/712 |
v8 |
super2 |
16/32/4:1024/32/1 |
ss20/hs11 |
v8 |
hyper |
256/64/1 |
ss20/hs12 |
v8 |
hyper |
256/64/1 |
ss20/hs14 |
v8 |
hyper |
256/64/1 |
ss20/hs21 |
v8 |
hyper |
256/64/1 |
ss20/hs22 |
v8 |
hyper |
256/64/1 |
ss600/41 |
v8 |
super |
16/32/4:1024/32/1 |
ss600/51 |
v8 |
super |
16/32/4:1024/32/1 |
ss600/61 |
v8 |
super |
16/32/4:1024/32/1 |
ss600/120 |
v7 |
old |
64/32/1 |
ss600/140 |
v7 |
old |
64/32/1 |
ss600/412 |
v8 |
super |
16/32/4:1024/32/1 |
ss600/512 |
v8 |
super |
16/32/4:1024/32/1 |
ss600/514 |
v8 |
super |
16/32/4:1024/32/1 |
ss600/612 |
v8 |
super |
16/32/4:1024/32/1 |
ss1000 |
v8 |
super |
16/32/4:1024/32/1 |
sselc |
v7 |
old |
64/32/1 |
ssipc |
v7 |
old |
64/16/1 |
ssipx |
v7 |
old |
64/32/1 |
sslc |
v8a |
micro |
2/16/1 |
sslt |
v7 |
old |
64/32/1 |
sslx |
v8a |
micro |
2/16/1 |
sslx2 |
v8a |
micro2 |
8/16/1 |
ssslc |
v7 |
old |
64/16/1 |
ssvygr |
v8a |
micro2 |
8/16/1 |
sun4/15 |
v8a |
micro |
2/16/1 |
sun4/20 |
v7 |
old |
64/16/1 |
sun4/25 |
v7 |
old |
64/32/1 |
sun4/30 |
v8a |
micro |
2/16/1 |
sun4/40 |
v7 |
old |
64/16/1 |
sun4/50 |
v7 |
old |
64/32/1 |
sun4/60 |
v7 |
old |
64/16/1 |
sun4/65 |
v7 |
old |
64/16/1 |
sun4/75 |
v7 |
old |
64/32/1 |
sun4/110 |
v7 |
old |
2/16/1 |
sun4/150 |
v7 |
old |
2/16/1 |
sun4/260 |
v7 |
old |
128/16/1 |
sun4/280 |
v7 |
old |
128/16/1 |
sun4/330 |
v7 |
old |
128/16/1 |
sun4/370 |
v7 |
old |
128/16/1 |
sun4/390 |
v7 |
old |
128/16/1 |
sun4/470 |
v7 |
old |
128/32/1 |
sun4/490 |
v7 |
old |
128/32/1 |
sun4/630 |
v7 |
old |
64/32/1 |
sun4/670 |
v7 |
old |
64/32/1 |
sun4/690 |
v7 |
old |
64/32/1 |
ultra |
v8 |
ultra |
16/32/1:512/64/1 |
ultra1/140 |
v8 |
ultra |
16/32/1:512/64/1 |
ultra1/170 |
v8 |
ultra |
16/32/1:512/64/1 |
ultra1/200 |
v8 |
ultra |
16/32/1:512/64/1 |
ultra2 |
v8 |
ultra2 |
16/32/1:512/64/1 |
ultra2/1170 |
v8 |
ultra |
16/32/1:512/64/1 |
ultra2/1200 |
v8 |
ultra |
16/32/1:1024/64/1 |
ultra2/1300 |
v8 |
ultra2 |
16/32/1:2048/64/1 |
ultra1/2170 |
v8 |
ultra |
16/32/1:512/64/1 |
ultra1/2200 |
v8 |
ultra |
16/32/1:1024/64/1 |
ultra1/2300 |
v8 |
ultra2 |
16/32/1:2048/64/1 |
ultra2i |
v8 |
ultra2i |
16/32/1:512/64/1 |
SPARC でも x86 でも、-xtarget を指定しないと、-xtarget=generic が使用されます。
-xtarget オプションは、購入したプラットフォーム上で使用する -xarch、 -xchip、-xcache の組み合わせを簡単に指定するためのマクロです。-xtarget 自体の意味は、展開することです。
-xtarget=sun4/15 は -xarch=v8a -xchip=micro -xcache=2/16/1 を意味します。
-xarch=v9 または v9a オプションは、SPARC または UltraSPARC V9 上で動作する64 ビット Solaris 7 用にコンパイルするように指示します。このコンパイルのためには、-xtarget=ultra または ultra2 の設定は必要ないか、(必要がある場合は) 十分ではありません。-xtarget を指定する場合は、次に示すように、その後に -xarch=v9 または v9a を指定する必要があります。
-xtarget=ultra -xarch=v9
このように指定しなかった場合は、-xtarget の設定によって -xarch 値が v8 に戻されます。
CC ドライバが、さまざまなコンパイル過程の実行時間を報告します。
可能な場合は、ループを展開します。
このオプションでは、コンパイラがループを最適化 (展開) するかどうかを指定します。
n が 1 の場合、コンパイラはループを展開しません。
n が 1 より大きな整数の場合は、-unroll=n によってコンパイラがループを n 回展開します。
ゼロ以外の終了状態を返すことによって、すべての警告をエラーとして扱います。
書き込み不可で割り当て可能なセクションに対して再配置が残っている場合に、致命的エラーとします。
このオプションはリンカーに渡されます。