C++ ユーザーズガイド

第 3 章 C++ コンパイラオプション

この章では、Solaris 2.5.1、2.6、7 で動作する CC コンパイラのコマンド行オプションについて詳しく説明します。ここで説明する機能は、特に断りがない限りすべてのプラットフォームに適用されます。特定のプラットフォームだけに有効な機能は SPARC または x86 と明示します。このマルチプラットフォーム対応の説明については、「マルチプラットフォーム対応」を参照してください。

次の表は、一般的なオプション構文の形式の例です (option はオプション名を示します。value は値を示します)。

構文形式 

例 

-option

-E

-optionvalue

-Ipathname

-option=value

-xunroll=4

-option value

-o filename

各オプションの説明での表記規則は 「書体と記号について」を参照してください。

角括弧、丸括弧、波括弧、パイプ記号、省略記号は、オプションの説明に使用しているもので、オプションの一部ではありません。

オプションを使用する際の一般的な注意事項は次のとおりです。

ソースファイル、オブジェクトファイル、ライブラリは、コマンド行に指定された順序にコンパイルおよびリンクされます。

機能別に見たオプションの要約

この節には、参照しやすいように、コンパイラオプションが機能別に分類されています。

コード生成オプション

コード生成オプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

コンパイラの主要リリースとの互換モードを設定する。 

-compat

-compat[=(4|5)]

C++ インライン関数を展開しない。 

+d

+d

仮想テーブル生成を制御する。 

-e(0|1)

+e(0|1)

デバッグ用にコンパイルする。 

-g

-g

位置に依存しないコードを生成する。 

-KPIC

-KPIC

位置に依存しないコードを生成する。 

-Kpic

-Kpic

マルチスレッドコード用のコンパイルとリンクを行う。 

-mt

-mt

コードのアドレス空間を指定する。 

-xcode=a

-xcode=a

データセグメントとテキストセグメントをマージする。 

-xMerge

-xMerge

デバッグオプション

デバッグオプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

C++ インライン関数を展開しない。 

+d

+d

ドライバによって作成されるコマンドを表示するが、 コンパイルはしない。 

-dryrun

-dryrun

ソースファイルに対しプリプロセッサを実行するが、 コンパイルはしない。 

-E

-E

コンパイラオプションの要約を一覧表示する。 

-flags

-flags

デバッグ用にコンパルする。 

-g

-g

デバッグ用にコンパイルするが、インライン機能は無効にしない。 

-g0

-g0

インクルードされたファイルのパス名を出力する。 

-H

-H

コンパイラオプションの要約を一覧表示する。 

-help

-help

コンパイルで作成される一時ファイルを保存する。 

-keeptmp

-keeptmp

5.0 への移行に関する情報の参照先を表示する。 

-migration

-migration

ソースの前処理だけを行う。.i ファイルに出力する。

-P

-P

オプションをコンパイル中の各処理に直接渡す。 

-Qoption

-Qoption phase option[,...option]」

README ファイルの内容を表示する。 

-readme

-readme

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

-s

-s

一時ファイルのディレクトリを指定する。 

-temp=dir

-temp=dir

コンパイラのメッセージの詳細度を制御する。 

-verbose=vlst

-verbose=v[,...v]」

インクリメンタルリンカーを無効にする。 

-xildoff

-xildoff

インクリメンタルリンカーを有効にする。 

-xildon

-xildon

オブジェクト (.o) ファイルなしに dbx でデバッグできるようにする。

-xs

-xs

WorkShop ソースコードブラウザ用のテーブル情報を 作成する。 

-xsb

-xsb

ソースブラウザ情報を作成するだけでコンパイルは しない。 

-xsbfast

-xsbfast

浮動小数点オプション

浮動小数点オプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

SPARC 非標準浮動小数点モードを有効または無効にする。 

-fns[=(no|yes)]

-fns[=(no|yes)]

(x86)浮動小数点精度モードを設定する。

-fprecision=p

-fprecision=p

起動時に IEEE 丸めモードを有効にする。 

-fround=r

-fround=r

浮動小数点最適化の設定を行う。 

-fsimple=n

-fsimple[=n]

(x86) 浮動小数点式の精度を変換する。

-fstore

-fstore

起動時に IEEE トラップモードを有効にする。 

-ftrap=t

-ftrap=t

(x86) 浮動小数点式の精度を変換しない。

-nofstore

-nofstore

例外時に libm が数学ルーチンに対し IEEE 754 の値を返す。

-xlibmieee

-xlibmieee

言語オプション

言語オプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

コンパイラの主要リリースとの互換モードを設定する。 

-compat

-compat[=(4|5)]

さまざまな C++ 言語機能を有効または無効にする。 

-features=alst

-features=a[,...a]」

ライブラリオプション

ライブラリリンクオプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

ライブラリのリンク形式が動的か静的かを指定する。 

-Bbinding

-Bbinding

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

-d(y|n)

-d(y|n)

実行可能ファイルではなく動的共有ライブラリを構築する。 

-G

-G

生成される動的共有ライブラリに名前を割り当てる。 

-hname

-hname

ld(1) がどのような LD_LIBRARY_PATH 設定も 無視する。

-i

-i

dir に指定したディレクトリを、ライブラリの検索に使用するディレクトリとして追加する。

-Ldir

-Ldir

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

-llib

-llib

特定のライブラリとそれに対応するファイルをコンパイルとリンクに強制的に組み込む。 

-library=llst

-library=l[,...l]」

マルチスレッドコード用のコンパイルとリンクを行う。 

-mt

-mt

ライブラリのパスを実行可能ファイルに組み込まない。 

-norunpath

-norunpath

共有動的ライブラリの検索パスを実行可能ファイルに組み込む。 

-R pathname

-Rpathname

静的にリンクする C++ ライブラリを指定する。 

-staticlib=llst

-staticlib=l[,...l]」

アーカイブライブラリを作成する。 

-xar

-xar

例外時に libm が数学ルーチンに対し IEEE 754 の値を 返す。

-xlibmieee

-xlibmieee

最適化のために、選択された libm ライブラリルーチンをインライン展開する。

-xlibmil

-xlibmil

最適化された数学ルーチンを使用する。 

-xlibmopt

-xlibmopt

ライセンスを必要とするサン提供のライブラリとリンクする。 

-xlic_lib=llst

-xlic_lib=l[,...l]」

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

-xnolib

-xnolib

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

-xnolibmil

-xnolibmil

数学ルーチンライブラリを使用しない。 

-xnolibmopt

-xnolibmopt

書き込み不可で割り当て可能なセクションに対する 再配置が残っている場合には致命的エラーとする。 

-ztext

-ztext

ライセンスオプション

ライセンスオプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

ライセンスの待ち行列化を無効にする。 

-noqueue

-noqueue

ライセンスを必要とするサン提供のライブラリと リンクする。 

-xlic_lib=llst

-xlic_lib=l[,...l]」

ライセンスサーバー情報を表示する。 

-xlicinfo

-xlicinfo

廃止オプション

処理 

オプション 

詳細 

本文を参照。 

-vdelx

-vdelx

出力オプション

次に、出力オプションについてアルファベット順に要約します。

処理 

オプション 

詳細 

コンパイルのみ。オブジェクト (.o) ファイルを作成するが、リンクはしない。

-c

-c

コンパイラが呼び出すドライバに渡されるオプションを表示するが、コンパイルはしない。 

-dryrun

-dryrun

C++ ソースファイルに対しプリプロセッサを実行し、結果を stdout に出力するが、コンパイルはしない。

-E

-E

-help と同じ。

-flags

-flags

実行可能ファイルではなく動的共有ライブラリを 構築する。 

-G

-G

組み込むファイルのパス名を出力する。 

-H

-H

5.0 への移行に関する情報の参照先を表示する。 

-migration

-migration

出力ファイルや実行可能ファイルの名前を filename にする。

-o filename

-o filename

ソースの前処理だけを行い、.i ファイルに出力する。

-P

-P

CC ドライバが、型が sourcetype の出力を作成する。

-Qproduce sourcetype

-Qproduce sourcetype

README ファイルの内容を表示する。 

-readme

-readme

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

-s

-s

コンパイラの冗長性を制御する。 

-verbose=vlst

-verbose=v[,...v]」

必要に応じて追加の警告を出力する。 

+w

+w

警告メッセージを抑止する。 

-w

-w

メークファイルの依存情報を出力する。 

-xM

-xM

依存情報を生成するが、/usr/include は除く。

-xM1

-xM1

Sun WorkShop ソースコードブラウザ用のテーブル情報を作成する。 

-xsb

-xsb

ソースブラウザ情報を作成するだけでコンパイルは しない。 

-xsbfast

-xsbfast

コンパイル処理ごとの実行時間を報告する。 

-xtime

-xtime

ゼロ以外の終了状態を返すことによって、すべての警告をエラーに変換する。 

-xwe

-xwe

パフォーマンスオプション

パフォーマンスオプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

最適な実行速度が得られるコンパイルオプションの組み合わせを選択する。 

-fast

-fast

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

-s

-s

ターゲットのアーキテクチャ命令セットを指定する。 

-xarch=a

-xarch=a

(SPARC) オプティマイザのターゲットキャッシュ属性を定義する。

-xcache=c

-xcache=c

一般的な SPARC アーキテクチャ用のコンパイルを行う。 

-xcg89

-xcg(89|92)

SPARC V8 アーキテクチャ用のコンパイルを行う。 

-xcg92

-xcg(89|92)

ターゲットのプロセッサチップを指定する。 

-xchip=c

-xchip=c

リンカーによる関数の順序変更を有効にする。 

-xF

-xF

最適な速度を得るために指定のルーチンをインライン 展開する。 

-xinline=rlst

-xinline=f[,...f]」

最適化のために、選択された libm ライブラリルーチンをインライン展開する。

-xlibmil

-xlibmil

(SPARC) 最適化された数学ルーチンライブラリを 使用する。

-xlibmopt

-xlibmopt

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

-xnolibmil

-xnolibmil

数学ルーチンライブラリを使用しない。 

-xnolibmopt

-xnolibmopt

最適化レベルを level にする。

-xOlevel

-xO[level]」

(SPARC) 一時レジスタの使用を制御する。

-xregs=r

-xregs=r[,...r] 」

(SPARC) メモリーに関するトラップを起こさないものとする。

-xsafe=mem

-xsafe=mem

(SPARC) コードサイズを増やす最適化は行わない。

-xspace

-xspace

ターゲットの命令セットと最適化のシステムを指定する。 

-xtarget=t

-xtarget=t

可能であればループの最適化を行う。 

-xunroll=n

-xunroll=n

プリプロセッサオプション

プリプロセッサオプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

シンボル name をプリプロセッサに定義する。

-Dname[=def]

-Dname[=def]」

C++ ソースファイルに対しプリプロセッサを実行し、結果を stdout に出力するが、コンパイルはしない。

-E

-E

ソースの前処理だけを行い、.i ファイルに出力する。

-P

-P

プリプロセッサシンボル name の初期定義を削除する。

-Uname

-Uname

メークファイルの依存情報を出力する。 

-xM

-xM

依存情報を生成するが、/usr/include は除く。

-xM1

-xM1

プロファイルオプション

プロファイルオプションの要約についてアルファベット順に示します。

処理 

オプション 

詳細 

prof でプロファイル処理するためのデータを収集するオブジェクトコードを用意する。

-p

-p

プロファイル処理のためのコードを生成する。 

-xa

-xa

gprof プロファイラによるプロファイル処理用にコンパイルする。

-xpg

-xpg

実行時プロファイルデータを収集したり、このデータを使って最適化する。 

-xprofile=tcov

-xprofile=p

リファレンスオプション

次のオプションはコンパイラ情報を簡単に参照するためのものです。

処理 

オプション 

詳細 

コンパイラオプションの要約を一覧表示する。 

-flags

-flags

コンパイラオプションの要約を一覧表示する。 

-help

-help

5.0 への移行に関する情報の参照先を表示する。 

-migration

-migration

README ファイルの内容を表示する。 

-readme

-readme

ソースオプション

ソースオプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

#include ファイルの検索パスに pathname を追加する。

-Ipathname

-Ipathname

メークファイル依存情報を出力する。 

-xM

-xM

依存情報を生成するが、/usr/include は除く。

-xM1

-xM1

テンプレートオプション

テンプレートオプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

テンプレートインスタンスの位置とリンケージを 制御する。 

-instances=a

-instances=a

テンプレートソースの検索ディレクトリを追加 指定する。 

-ptipath

-ptipath

テンプレートリポジトリのディレクトリを指定する。 

-ptrdirectory

-ptrdatabase-path

いろいろなテンプレートオプションを有効または 無効にする。 

-template=w

-template=w

スレッドオプション

スレッドオプションの要約をアルファベット順に示します。

処理 

オプション 

詳細 

マルチスレッドコード用のコンパイルとリンクを行う。 

-mt 

-mt

(SPARC) メモリーに関するトラップを起こさないものとする。

-xsafe=mem

-xsafe=mem

オプション情報の構成

簡単に検索できるように、コンパイラオプションの情報の内容は、次の見出しに分かれています。オプションが他のオプションで置き換えられたり、他のオプションと同じである場合、詳細については他のオプション説明を参照してください。

見出し 

内容 

オプションの定義 

各オプションのすぐ後には短い定義があります (小見出しはありません)。 

値 

オプションに値がある場合は、その値を示します。 

デフォルト 

オプションに一次または二次のデフォルト値がある場合は、それを示します。 

一次のデフォルトとは、オプションが指定されなかったときに有効になるオプションの値です。たとえば、-compat を指定しないと、デフォルトは -compat=5 になります。

二次のデフォルトとは、オプションは指定されたが、値が指定されなかったときに有効になるオプションの値です。たとえば、値を指定せずに -compat を指定すると、デフォルトは -compat=4 になります。

展開 

オプションにマクロ展開がある場合は、ここに示します。 

例 

オプションの説明のために例が必要な場合は、ここに示します。 

相互の関連性 

他のオプションとの相互の関連性がある場合は、その関係をここに示します。たとえば「-xO が 3 より小さい場合は、-xinline オプションを使用すべきではありません」などです。

警告 

オプションの使用について注意がある場合はここに示します。予測できない動作の原因となる操作についてもここに示します。 

関連項目 

ここには、参考情報が得られる他のオプションや文書を示します。 

置き換え、同じ、使用などの言葉 

そのオプションが廃止され、他のもので置き換えられていたり、そのオプションの代わりに別のオプションを使用する方がよい場合は、置き換えるオプションを「置き換え」、「同じ」、「使用」などの言葉を使って示します。たとえば、「-xO で置き換えられています」や「-xO を使用してください」は -xO を使用すべきであることを意味します。このような指示のあるオプションは、将来のリリースでサポートされない可能性があります。

オプションが長いオプション名の省略形である場合は、その名前を「同じ」で示します。一般的な意味と目的が同じであるオプションが 2 つある場合は、望ましいオプションを示します。たとえば、「-xO と同じです」は、-xO が望ましいオプションであることを示します。

オプションの一覧

この節では、すべての C++ コンパイラオプションをアルファベット順に示します。プラットフォームに制限事項がある場合は、その内容も示しています。

-386

(x86)-xtarget=386 を使用してください。このオプションは、下位互換のためだけに用意されています。

-486

(x86) -xtarget=486 を使用してください。このオプションは、下位互換のためだけに用意されています。

-a

-xa を使用してください。

-Bbinding

ライブラリのリンク形式が動的か静的かを指定します。

このオプションは、リンカーが動的 (共有) ライブラリを検索するのか、静的 (アーカイブ) ライブラリを検索するのかを指定します。-B オプションを使用すれば、同じコマンド行で指定を何回も切り替えることができます。このオプションはリンカー (ld) に渡されます。


注 -

Solaris 7 プラットフォームでは、必ずしもすべてのライブラリが静的ライブラリとして使用できるわけではありません。


bindingstaticdynamic でなければなりません。

binding の値

意味 

dynamic

まず liblib.so (共有) ファイルを検索するようにリンカーに指示します。これらのファイルが見つからないと、リンカーはliblib.a (静的で、共有されない) ファイルを検索します。ライブラリのリンク方式を共有にしたい場合は、このオプションを指定します。

static

-Bstatic オプションを指定すると、リンカーは liblib.a (静的で、共有されない) ファイルだけを検索します。ライブラリのリンク形式を非共有にしたい場合は、このオプションを指定します。

(-Bstatic または dynamic との間に空白があってはなりません。)

デフォルト

-B を指定しないと、-Bdynamic が使用されます。

相互の関連性

C++ のデフォルトのライブラリを静的にリンクするには、-staticlib オプションを使用します。

このオプションは、デフォルトで使用されるライブラリのリンクにも影響します。デフォルトのライブラリを動的にリンクするには、最後に指定する -B-Bdynamic でなければなりません。

次の例では、libfoo.so があっても libfoo.a がリンクされます。他のすべてのライブラリは動的にリンクされます。


demo% CC a.o -Bstatic -lfoo -Bdynamic

関連項目

-nolibstaticlibld(1)、「標準ライブラリの静的リンク」、 『リンカーとライブラリ』

-c

コンパイルのみ。オブジェクト .o ファイルを作成しますが、リンクはしません。

この オプションは ld によるリンクを抑止し、各ソースファイルに対する .o ファイルを 1 つずつ生成するように、CC ドライバに指示します。コマンド行にソースファイルを 1 つだけ指定する場合には、-o オプションでそのオブジェクトファイルに明示的に名前を付けることができます。

CC -c x.cc と入力すると、x.o というオブジェクトファイルが生成されます。

CC -c x.cc -o y.o と入力すると、y.o というオブジェクトファイルが生成 されます。

関連項目

-o filename

-cg[89|92]

-xcg[89|92] を使用してください。

-compat[=(4|5)]

コンパイラの主要リリースとの互換モードを設定します。このオプションは、__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++ 移行ガイド』

+d

C++ インライン関数を展開しません。

相互の関連性

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

-g0 デバッグオプションでは、+d は有効になりません。

警告

多数のインライン関数を使用する大きなプログラムでは、大量のコードが追加で生成されることがあります。

関連項目

-g0、-g

-Dname[=def]

プリプロセッサに対してマクロシンボル名 name を def と定義します。

このオプションは、ソースファイルの先頭に #define 指令を記述するのと同じです。-D オプションは複数指定できます。

次の値は SPARC と x86 用に事前定義されています。

_ _BUILTIN_VA_ARG_INCR (varargs.hstdarg.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'の結果_ (unameuname -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

-d(y|n)

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

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

このオプションは、コマンド行では 1 度だけしか使用できません。

値 

意味 

-dy

リンカーで動的リンクを実行します。 

-dn

リンカーで静的リンクを実行します。 

デフォルト

-d オプションを指定しないと、-dy が使用されます。

関連項目

ld(1)、『リンカーとライブラリ』

-dalign

(SPARC ) 可能な場合には、ダブルワードのロードとストア命令を生成してパフォーマンス向上を図ります。

このオプションは、double 型のデータがすべて double の境界から始まることを前提としています。

警告

あるプログラム単位を -dalign でコンパイルした場合は、プログラムのすべての単位を -dalign でコンパイルしなければなりません。そうしないと予期しない結果が生じることがあります。

-dryrun

ドライバによって作成されたコマンドを表示しますが、コンパイルはしません。

このオプションは、コンパイルドライバが作成したサブコマンドの表示のみを行い、実行はしないように CC ドライバ に指示します。

-E

ソースファイルに対してプリプロセッサを実行しますが、コンパイルはしません。

C++ のソースファイルに対してプリプロセッサだけを実行し、結果を stdout (標準出力) に出力するよう CC ドライバに指示します。コンパイルは行われません。したがって .o ファイルは生成されません。

テンプレートを使用する場合は、このオプションの結果を C++ コンパイラの入力に使用することはできません。

関連項目

-P

+e(0|1)

-compat=4 のとき、仮想テーブルの生成を制御します。-compat=5 のときは、無効となり無視されます。

値 

意味 

+e0

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

+e1

仮想関数を使用して定義したすべてのクラスごとに仮想テーブルが生成されます。 

相互の関連性

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

関連項目

『C++ 移行ガイド』

-fast

コンパイルオプションの最適な組み合わせを選択し、実行速度を最適化します。

このオプションは、コンパイラオプションの最適な組み合わせを選択して実行速度を向上するマクロです。

-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

-features=a[,...a]

コンマで区切って指定された C++ 言語のさまざまな機能を、有効または無効にします。

-compat=4 のみの場合、a に次の値の 1 つを指定できます。

a の値

意味 

[no%]namespace

キーワード namespaceusing を許可します [しません]。

[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 newoperator delete の配列形式 (たとえば、 operator new[] (void*)) を認識します [しません]。このオプションが有効な場合は、マクロ _ARRAYNEW=1 が定義されます。無効な場合は定義されません。

廃止されている構文を許可します [しません]。 

 

ブール型とリテラルを許可します [しません]。 

 

リテラル文字列を読み取り専用メモリーに入れます [入れません]。 

 

C++ 例外を許可します [しません]。 

 

キーワード explicit を認識します [しません]。

 

キーワード export を認識します [しません]。

 

識別子の最初以外の文字に $ を許可します [しません]。

 

for 文に対し新しい局所スコープ規則を使用します [しません]。

 

キーワード mutable を認識します [しません]。


注 -

[no%]castop は、C++ 4.2 コンパイラ用に作成されたメークファイルとの互換性を維持するために使用できますが、C++ 5.0 コンパイラには影響はありません。新しい書式の型変換 (const_castdynamic_castreinterpret_caststatic_cast) は常に認識され、無効にすることはできません。


-features=arraynew が有効になっていると、マクロは _ARRAYNEW=1 に定義されます。無効になっている場合は、マクロは定義されません。

-features=bool が有効になっていると、マクロは _BOOL=1 に定義されます。無効になっている場合は、マクロは定義されません。

-features=no%anachronisms が有効になっていると、廃止されている構文は許可されません。

-features=except が無効になっていると、関数の送出指定は受け付けられますが、無視されます。キーワード trythrowcatch は常に予約されています。

デフォルト

-features を指定しないと、以下が使用されます。

関連項目

『C++ 移行ガイド』

-flags

-help と同じです。

このオプションは、各コンパイラフラグの簡単な説明を表示します。

関連項目

-help-readme-migration.

-fnonstd

x86 : 浮動小数点ハードウェアの非標準的な初期設定を行います。

このオプションを指定すると、次の操作も可能になります。

これらの結果は SIGFPE シグナルに変換されますが、プログラムに SIGFPE ハンドラがない場合は、メモリーダンプを行なってプログラムを終了します。ただし、コアダンプのサイズがゼロに設定されている場合を除きます。

デフォルト

-fnonstd を指定しないと、IEEE 754 浮動小数点演算例外が起きても、プログラムは異常終了しません。アンダーフローは段階的です。

関連項目

-fns-ftrap=common、『数値計算ガイド』

-fns[=(no|yes)]

(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) マニュアルページを参照してください。

関連項目

『数値計算ガイド』

-fprecision=p

(x86) デフォルト以外の浮動小数点精度モードを設定します。

-fprecision オプションを指定すると、FPU (Floating Point Unit) 制御ワードの丸め精度モードのビットが設定されます。これらのビットは、基本演算 (加算、減算、乗算、除算、平方根) の結果をどの精度に丸めるかを制御します。

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

p の値

意味 

single

IEEE 単精度値に丸めます。 

double

IEEE 倍精度値に丸めます。 

extended

利用可能な最大の精度に丸めます。 

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

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

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

デフォルト

-fprecision フラグを指定しないと、丸め精度モードは extended になります。

警告

このオプションは、x86 プラットホームでメインプログラムをコンパイルするときしか有効ではありません。SPARC プラットホームでは、このオプションは無視されます。

-fround=r

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

このオプションは、次に示す IEEE 754 丸めモードを設定します。

内容は、ieee_flags サブルーチンと同じです。これは実行時のモードを変更するために使用します。

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

r の値

意味 

nearest

tozero

negative

positive

最も近い数値に丸め、中間値の場合は偶数にします。 

ゼロに丸めます。 

負の無限大に丸めます。 

正の無限大に丸めます。 

デフォルト

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

警告

1 つのルーチンを -fround=r でコンパイルした場合は、そのプログラムのすべてのルーチンを同じ -fround=r オプションでコンパイルする必要があります。そうしないと、予期しない結果が生じることがあります。

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

-fsimple[=n]

浮動小数点最適化の設定を選択します。

このオプションで浮動小数点演算に影響する前提を設けることにより、オプティマイザで行う浮動小数点演算が簡略化されます。

n を指定する場合、0、1、2 のいずれかにしなければなりません。

値 

意味 

0

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

 

1

安全な簡略化を行います。その結果生成されたコードは、IEEE 754 に厳密には合致していませんが、大多数のプログラムの数値結果は変わりません。 

-fsimple=1 の場合、次に示す内容を前提とした最適化が行われます。

  • IEEE 754 のデフォルトの丸めとトラップモードが、プロセスの初期化以後も変わらない。

  • 起こり得る浮動小数点例外を除き、目に見えない結果を出す演算が削除される可能性がある。

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

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

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

 

2

これは浮動小数点演算の最適化を積極的に行い、丸めモードの変更によって多くのプログラムが異なった数値結果を出すようになります。たとえば、あるループ内の x/y の演算をすべて x*z に置き換えるような最適化を許可します。この最適化では、x/y はループ内で少なくとも 1 回評価されることが保証されており、y z にはループの実行中に定数値が割り当てられます。

デフォルト

-fsimple を指定しないと、-fsimple=0 が使用されます。

-fsimple を指定しても n の値を指定しないと、-fsimple=1 が使用されます。

相互の関連性

-fast-fsimple=1 を意味します。

警告

このオプションによって、IEEE 754 に対する適合性が損なわれることがあります。

関連項目

-fast

-fstore

(x86) 浮動小数点式の精度を変換します。

このオプションを指定すると、コンパイラは、次の場合に浮動小数点の式や関数の値を代入式の左辺の型に変換します。つまり、その値はレジスタにそのままの型で残りません。

このオプションを無効にするには、-nofstore オプションを使用します。

警告

丸めや切り捨てによって、結果がレジスタの値から生成される値と異なることがあります。

関連項目

-nostore

-ftrap=t

起動時に 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%] 形式のオプションは、下の例に示すように、%allcommon フラグの意味を変更するときだけ使用します。これは、特定のトラップを明示的に無効にするものではありません。

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) のマニュアルページ

-G

実行可能ファイルではなく動的共有ライブラリを構築します。

コマンド行で指定したソースファイルはすべて、デフォルトで -Kpic オプションでコンパイルされます。

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

相互の関連性

-c (コンパイルのみのオプション) を指定しないと、次のオプションが ld に渡されます。

警告

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

関連項目

-dy-Kpic-xcode=pic13-xildoff-ztextld(1) のマニュアルページ、『C++ ライブラリ・リファレンス』

-g

コンパイラとリンカーに、デバッガでデバッグ可能なファイルとプログラムを用意するように指示します。

これには、次の処理が含まれています。

相互の関連性

このオプションと -xO を一緒に使用すると、必要な最適化レベルが得られます。

また、このオプションと -xO を一緒に使用すると、デバッグ情報が限定されます。

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

このオプションを指定すると、-xildon が指定されてデフォルトのリンカーがインクリメンタルリンカーのオプションになるため、コンパイル、編集、デバッグのサイクルを効率的に実行できます。

次の条件のどれかが真でない場合は、ld ではなく ild が起動されます。

関連項目

+d-g0-xildoff-xildon-xs、および ld(1) のマニュアルページ、 『dbx コマンドによるデバッグ』(スタブの詳細について)

-g0

デバッグ用のコンパイルとリンクを行いますが、インライン展開は行いません。

このオプションは、+d が有効化されないという点を除いて、-g と同じです。

関連項目

+d-g-xildon、『dbx コマンドによるデバッグ』

-H

インクルードされるファイルのパス名を出力します。

現在のコンパイルに含まれている #include ファイルのパス名を標準エラー出力 (stderr) に 1 行に 1 つずつ出力します。

-help

コンパイラオプションの要約を一覧表示します。

このオプションは、各コンパイラオプションの簡単な説明を表示します。

関連項目

-flags-readme、『C++ 移行ガイド』

-hname

生成する動的共有ライブラリに名前 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

-i

リンカー ldLD_LIBRARY_PATH の設定を無視します。

-Ipathname

#include ファイル検索パスに pathname を追加します。

このオプションは、インクルードファイルの相対ファイル名 (スラッシュ以外の文字で始まるファイル名) リストに、pathname (パス名) を追加します。

プリプロセッサは、インクルードファイルを次の順序で検索します。

  1. #include "foo.h" の形式のインクルードファイル (" " で囲まれたもの) については、そのソースファイルを含むディレクトリ内を検索する

  2. <foo.h> の形式のインクルードファイル (< > で囲まれたもの) については、そのソースファイルを含むディレクトリは検索しない

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

  4. 次に示す、C++ ヘッダーファイル用の標準ディレクトリ。 install-dir (インストール先) はデフォルトでは /opt です

    install-dir/SUNWspro/SC5.0/include/CC

  5. 次に示す、ANSI C ヘッダーファイル用の標準ディレクトリ内のファイル

    install-dir/SUNWspro/SC5.0/include/cc

  6. /usr/include

相互の関連性

-ptipath (パス) を使用しない場合、コンパイラは -Ipathname (パス) 内のテンプレートファイルを検索します。-ptipath の代わりに -Ipathname を使用してください。

-inline=rlst

-xinline=rlst を使用してください。

-instances=a

テンプレートインスタンスの位置とリンケージを制御します。

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

a の値

意味 

extern

必要なすべてのインスタンスをテンプレートリポジトリに置き、それらに対して大域リンケージを行います (リポジトリのインスタンスが古い場合は、再びインスタンス化されます)。 

explicit

明示的にインスタンス化されたインスタンスを現在のオブジェクトファイルに置き、それらに対して大域リンケージを行います。必要なインスタンスが他にあっても生成しません。 

global

必要なすべてのインスタンスを現在のオブジェクトファイルに置き、それらに対して大域リンケージを行います。 

semiexplicit

明示的にインスタンス化されたインスタンスを現在のオブジェクトファイルに置き、それらに対して大域リンケージを行います。明示的なインスタンスにとって必要なすべてのインスタンスを現在のオブジェクトファイルに置き、それらに対して静的リンケージを行います。必要なインスタンスが他にあっても生成しません。 

static

必要なすべてのインスタンスを現在のオブジェクトファイルに置き、それらに対して静的リンケージを行います。 

デフォルト

-instances を指定しないと、-instances=extern が使用されます。

警告

extern 以外の値の場合、テンプレート定義が現在のコンパイル単位 に含まれていなければなりません (直接でも間接でも可)。この定義がないと、コンパイラはインスタンス化を報告なしに省略します。

関連項目

第 4 章「テンプレートのコンパイル」

-keeptmp

コンパイル中に作成されたすべての一時ファイルを残しておきます。

このオプションを -verbose=diags と一緒に使用すると、デバックに便利です。

関連項目

-v-verbose

-KPIC

(SPARC) -xcode=pic32 と同じです。

(x86) -Kpic と同じです。

-Kpic

(SPARC) -xcode=pic13 と同じです。

(x86) 位置に依存しないコードを使ってコンパイルします。

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

-Ldir

ライブラリを検索するディレクトリに、dir (ディレクトリ) を追加します。

このオプションは ld に渡されます。コンパイラが提供するディレクトリよりも dir が先に検索されます。

-llib

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

このオプションは ld に渡されます。通常のライブラリは、名前が liblib.aliblib.so の形式です (lib.a または .so の部分は必須です)。このオプションでは lib の部分を指定できます。コマンド行には、ライブラリをいくつでも指定できます。指定したライブラリは、-Ldir で指定された順に検索されます。

-llib オプションはファイル名の後に指定してください。

相互の関連性

正しい順序でライブラリが検索されるようにするには、安全のため、必ずソースとオブジェクトの後に -lx を使用してください。

関連項目

-Ldir、『C++ ライブラリ・リファレンス』、『Tools.h++ 7.0.7 クラスライブラリ・リファレンスマニュアル』

-libmieee

-xlibmieee を使用してください。

-libmil

-xlibmil を使用してください。

-library=l[,...l]

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

%nonerwtools7complexgclibC と同じ。

%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=rwtools7iostream および -lirabary=iostreamrwtools7 のどちらでも、-l オプションは、-lrwtool -liostream の順序で ld に渡されます。

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

RogueWave の Tools.h++ ライブラリは同時に 1 つしか使用できません。

RogueWave の Tools.h++ バージョン 7 ライブラリは、従来の iostream を使って構築されています。このため、標準モードで Rouged Wave の Tools.h++ のライブラリを使用する場合は、libiostream も含める必要があります。

libCstdlibiostream の両方を含めた場合は、プログラム内で新旧両方の形式の iostream (例: coutstd::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』(英語版のみ)

-migration

C++ 5.0 へのソースコードの移行に関する情報の参照先を表示します。

関連項目

『C++ 移行ガイド』には、コンパイラのバージョン 4.0.1、4.1、4.2 と 5.0 コンパイラの間の非互換性に関する情報が記載されています。

-misalign

(SPARC) 通常はエラーになる、メモリー中の境界整列の誤ったデータを許可します。 以下に例を示します。


char b[100];
int f(int * ar) {
return *(int *) (b +2) + *ar;
}

境界整列の誤ったデータに対しては、非常に古い形式のロードとストアを使用して、1 度に 1 バイトずつ処理する必要があります。したがって、このオプションを使用すると、プログラムの実行速度が大幅に低下する可能性があります。

警告

できれば、プログラムの境界整列が正しい部分と境界整列が誤った部分をリンクしないでください。

-mt

マルチスレッド化したコードのコンパイルとリンクを行います。

このオプションは、ソースファイルを -D_REENTRANT でコンパイルし、必要な順番で-lthread を含むようにサポートライブラリを増やします。

警告

libthread とリンクする場合には、-lthread ではなく -mt オプションを使用してライブラリのリンク順序が正しくなるようにしてください。

コンパイルとリンクを別々に実行する場合で、コンパイルで -mt を使用した場合は、次の例に示すようにリンクでも -mt を使用してください。そうしないと、予期しない結果が発生する可能性があります。


demo% CC -c -mt myprog.cc
demo% CC -mt myprog.o

関連項目

-xnolib、『マルチスレッドのプログラミング』、『リンカーとライブラリ』、 『C++ ライブラリ・リファレンス』

-native

-xtarget=native を使用してください。

-noex

-features=no%except を使用してください。

-nofstore

(x86) 浮動小数点式の精度を変換しない。

このオプションを指定すると、次のどちらの場合でも、コンパイラは浮動小数点の式や関数の値を代入式の左辺の型に変換しません。つまり、レジスタの値はそのままです。

関連項目

-fstore

-nolib

-xnolib を使用してください。

-nolibmil

-xnolibmil を使用してください。

-noqueue

ライセンスを待ち行列に入れません。

ライセンスを確保できない場合、コンパイラはコンパイル要求を待ち行列に入れず、コンパイルもしないで終了します。メークファイルのテストには、ゼロ以外の状態が返されます。

-norunpath

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

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

このオプションは、標準以外の位置にインストールされたコンパイラで生成した実行可能ファイルを、プログラムのユーザーがその非標準の位置で使う必要がない場合に便利です。

相互の関連性

共有ライブラリをコンパイラのインストールされている位置 (デフォルトのインストール先は /opt/SUNWspro/lib) で使用し、かつ -norunpath を使用する場合は、リンク時に -R オプションを使うか、または実行時に環境変数 LD_LIBRARY_PATH を設定して共有ライブラリの位置を明示しなければなりません。そうすることにより、実行時リンカーはその共有ライブラリを見つけることができます。

-O

-xO2 と同じです。

-Olevel

-xOlevel を使用してください。

-o filename

出力ファイルまたは実行可能ファイルの名前を filename (ファイル名) に指定します。

警告

このファイル名には、コンパイラが作成するファイルの型に合った接尾辞を指定してください。また、CC ドライバはソースファイルには上書きしないため、ソースファイルとは異なるファイルを指定する必要があります。

+p

プリプロセッサの表明を禁止します。

デフォルト

+p を指定しないと、プリプロセッサの表明が許可されます。

-P

ソースの前処理だけでコンパイルはしません ( 接尾辞.iのファイルを出力します)。

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

関連項目

-E

-p

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

関連項目

-xpganalyzer(1) のマニュアルページ

-pentium

(x86) -xtarget=pentium と置き換えられています。

-pg

-xpg を使用してください。

-PIC

-KPIC を使用してください。

-pic

-Kpic を使用してください。

-pta

-template=wholeclass を使用してください。

-ptipath

テンプレートソース用の検索ディレクトリを追加指定します。

このオプションは -Ipathname (パス名) によって設定された通常の検索パスに代わるものです。-ptipath (パス) フラグを使用した場合、コンパイラはこのパス上にあるテンプレート定義ファイルを検索し、-Ipathname フラグを無視します。

-ptipath よりも -Ipathname を使用すると混乱が起きにくくなります。

関連項目

-Ipathname

-pto

-instances=static を使用してください。

-ptrdatabase-path

テンプレートリポジトリのディレクトリを指定します。

テンプレートリポジトリは、ここで指定するディレクトリの SunWS_configSunWS_cache サブディレクトリに含まれています。テンプレートリポジトリのキャッシュファイルは directory/SunWS_cache に格納されています。テンプレートリポジトリの構成ファイルは directory/SunWS_config に格納されています。

複数の -ptr オプションを指定することはできません。

-ptr/tmp/Foo を指定すると、リポジトリのサブディレクトリとして /tmp/Foo/SunWS_cache/tmp/Foo/SunWS_config が指定されます。

相互の関連性

サブディレクトリの名前は、環境変数 SUNWS_CACHE_NAMESUNWS_CONFIG_NAME で変更できます。

警告

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

-ptv

-verbose=template を使用してください。

-Qoption phase option[,...option]

option (オプション) を phase (コンパイル段階) に渡します。

複数のオプションを渡すには、コンマで区切って指定します。

phase には、以下の値のいずれか 1 つを指定します。

SPARC アーキテクチャ 

x86 アーキテクチャ 

ccfe

ccfe

iropt

cg386

cg

codegen

cclink

cclink

ld

ld

次に示すコマンド行では、ldCC ドライバによって起動されたとき、-Qoption で指定されたオプションの -i-mld に渡されます。


demo% CC -Qoption ld -i,-m test.c

-qoption phase option

-Qoption を使用してください。

-qp

-p と同じです。

-Qproduce sourcetype

CC ドライバに sourcetype (ソースタイプ) 型のソースコードを生成するよう指示します。

sourcetype に指定する接尾辞の定義は次のとおりです。

接尾辞 

意味 

.i

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

.o

コードジェネレータ cg が作成するオブジェクトファイル

.s

cg が作成するアセンブラソース

-qproduce sourcetype

-Qproduce を使用してください。

-Rpathname

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

-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、『リンカーとライブラリ』

-readme

C++ 用の README (最新情報)ファイルの内容を表示します。

環境変数 PAGER に指定したコマンドを使用してファイルを表示することができます。この環境変数が設定されていない場合は、デフォルトの more コマンドが使用されます。

-S

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

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

-s

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

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

-sb

-xsb で置き換えられています。

-sbfast

-xsbfast を使用してください。

-staticlib=l[,...l]

静的にリンクする C++ ライブラリを指定します。

l には、以下の値のいずれか 1 つを指定します。

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「標準ライブラリの静的リンク」

-temp=dir

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

コンパイル中に生成される一時ファイルを格納するディレクトリを dir に指定します。

関連項目

-keeptmp

-template=w

さまざまなテンプレートオプションを実行可能または実行不能にします。

wwholeclassno%wholeclass でなければなりません。

w の値 

意味 

[no%]wholeclass

コンパイラに対し、使用されている関数だけインスタンス化するのではなく、テンプレートクラス全体をインスタンス化する [しない] ように指示します。クラスの少なくとも 1 つのメンバーを参照しなければなりません。そうでない場合は、コンパイラはそのクラスのどのメンバーもインスタンス化しません。 

-time

-xtime を使用してください。

-Uname

プリプロセッサシンボル name の初期定義を削除します。

このオプションは、コマンド行に指定された (CC ドライバによって暗黙的に挿入されるものも含む) -D オプションによって作成されるマクロシンボル name の初期定義を削除します。他の定義済みマクロや、ソースファイル内のマクロ定義が影響を受けることはありません。

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

警告

このオプションを -D オプションと一緒に使用すると、このオプションは、すべての -D オプションが処理された後で処理されます。

-unroll=n

-xunroll=n と同じです。

-V

-verbose=version と同じです。

-v

-verbose=diags と同じです。

-vdelx

delete[] を使用する式に対し、実行時ライブラリ関数 _vector_delete_ の呼び出しを生成する代わりに _vector_deletex_ の呼び出しを生成します。関数 _vector_delete_ は、削除するポインタおよび各配列要素のサイズという 2 つの引数をとります。

関数 _vector_deletex__vector_delete_ と同じように動作しますが、3 つめの引数としてそのクラスのデストラクタのアドレスをとります。この引数はサン以外のベンダーが使用するためのもので、関数では使用しません。

デフォルト

コンパイラは、delete[] を使用する式に対して _vector_delete_ の呼び出しを生成します。

警告

これは旧式フラグであり、将来のリリースでは削除されます。このフラグは -compat=4 でのみ利用できます。サン以外のベンダーからソフトウェアを購入し、ベンダーがこのフラグの使用を推奨していない限り、このオプションは使用しないでください。

-verbose=v[,...v]

コンパイラの冗長性を制御します。

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

必要な場合は特別な警告を出力します。

次のような問題のありそうな構造について、追加の警告を生成します。

デフォルト

このオプションを指定しないと、コンパイラは必ず問題となる構造についてのみ警告を出力します。

関連項目

-w、 +w2

+w2

さらに多くの警告を出力します。

関連項目

+w

-w

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

コンパイラが出す警告を出力しません。ただし、一部の警告、特に旧式の構文に関する重要な警告は抑制できません。

関連項目

+w

-xa

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

コンパイル時に TCOVDIR 環境変数を設定すれば、カバレージ (.d) ファイルを置くディレクトリを指定できます。この変数を設定しなければ、カバレージ (.d) ファイルは ソースファイルと同じディレクトリにソースファイルとして残ります。

このオプションは、古いカバレージファイルとの下位互換を保つためだけに使用してください。

相互の関連性

-xprofile=tcov オプションと -xa オプションは、1 つの実行可能ファイルで同時に使用できます。つまり、-xprofile=tcov でコンパイルされたファイルと -xa でコンパイルされたファイルからなるプログラムをリンクすることはできますが、両方のオプションを使って 1 つのファイルをコンパイルすることはできません。

-xa-g を一緒に使用することはできません。

警告

コンパイルとリンクを別々に行う場合で、-xa でコンパイルした場合は、 リンクも-xa で行わなければなりません。そうしないと予期できない結果になることがあります。

関連項目

-xprofile=tcovtcov(1) のマニュアルページ、 『プログラムのパフォーマンス解析』

-xar

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

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

次のコマンド行は、ライブラリファイルとオブジェクトファイルに含まれるテンプレート関数をアーカイブします。


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

警告

テンプレートデータベースの .o ファイルをコマンド行に追加しないでください。

アーカイブを構築するときは、ar コマンドを使用しないでください。CC -xar を使用して、テンプレートのインスタンス化情報が自動的にアーカイブに含まれるようにしてください。

関連項目

第 6 章「ライブラリの構築」

-xarch=a

対象となるアーキテクチャの命令セットを指定します。

このオプションは単独でも使用できますが、このオプションの主な目的は -xtarget オプションによる値を変更することです。

このオプションは、生成される命令を特定のアーキテクチャに対する適切なものに制限したり、指定した命令セットを使用できるようにしたりします。このオプションによって指定された命令が必ず使用されるわけではありませんが、最適化を行うと、その命令が通常は使用されるようになります。

a には、次の対象となるアーキテクチャを指定できます。

プラットフォーム 

a の値 

SPARC 

generic、v7v8av8v8plusv8plusav9v9a

x86 

generic386486pentiumpentium_pro

SPARC の場合

SPARC のアーキテクチャ、v7、v8a、v8 はすべてバイナリ互換です。v8plus と v8plusa は互いにバイナリ互換で上位互換性がありますが、下位互換性はありません。どの命令を選択しても、生成される実行可能ファイルの実行速度は、generic、v7、v8、v8a、v8plus、v8plusa の順に速くなります (generic が最も遅い) 。

a の値

意味 

generic

ほとんどの SPARC プロセッサでパフォーマンスが向上します。パフォーマンスが低下するプロセッサはありません。 

 

この命令の設定内容は新しいリリースごとに調整されます。 

 

v7

 

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

このオプションは、V7 アーキテクチャ上で良好なパフォーマンスが得られる命令セットを使用します。ただし、4 倍精度浮動小数点の命令は使用しません。V8 アーキテクチャ上で良好なパフォーマンスを得るための命令セットと同じですが、次の命令は含まれません。 

  • 4 倍精度浮動小数点命令

  • 整数 mul および div 命令

  • fsmuld 命令

 

例 : SPARCstation(TM) 1、SPARCstation 2 

 

v8a

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

 

このオプションは、定義上 V8 アーキテクチャと同じです。ただし次の命令は含まれません。 

  • 4 倍精度浮動小数点命令

  • fsmuld 命令

 

例 : MicroSPARC(TM) I チップアーキテクチャにもとづくすべてのマシン 

 

v8

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

 

このオプションは、V8 アーキテクチャ上で良好なパフォーマンスを得るのに最も適した命令セットを使用します。ただし、4 倍精度浮動小数点の命令は使用しません。 

 

例 : SPARCstation 10 

 

v8plus

 

 

 

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

 

このオプションは 定義上は V9 アーキテクチャと同じです。ただし次の制限があります。 

  • 4 倍精度浮動小数点命令は使用しない

  • V8plus 仕様によって定義された 32 ビットのサブセットに限定される

  • VIS 命令は含まれない

 

V8plus では、V9 の 64 ビットレジスタを持つシステムは、32 ビットのアドレス指定モードで動作します。ただし、i レジスタおよび l レジスタの 32 ビットを超えるビットは、プログラムの実行結果に影響しないようにする必要があります。

 

例 : UltraSPARC(TM) チップアーキテクチャにもとづくすべてのマシン 

 

また、このオプションを使用すると、.o ファイルは V8plus バイナリとして認識されます。このような ファイルを V7 および V8 マシンで実行することはできません。

v8plusa

命令セットを V8plusa アーキテクチャの種類に限定します。 

 

このオプションは V8plusa アーキテクチャを意味し、かつ次の命令があります。 

  • UltraSPARC 固有の命令

  • VIS 命令

 

このオプションは、UltraSPARC アーキテクチャ上で良好なパフォーマンスを得るための最適な命令セットを使用します。ただし、V8plus 仕様によって定義された 32 ビットのサブセットに限定されます。 

 

例 : UltraSPARC チップアーキテクチャにもとづくマシン 

 

また、このオプションを使用すると、.o ファイルはサン固有の V8plus バイナリとして認識されます。.o ファイルは V7 および V8 マシンで実行することはできせん。

v9

SPARC V9 アーキテクチャの命令セットに限定します。 

 

生成される .o オブジェクトファイルは 64 ビット ELF 形式です。このファイルは、同じ形式のオブジェクトファイルとしかリンクできません。

 

生成される実行可能ファイルは、64 ビット Solaris 2.7 ソフトウェアの 64 ビットカーネルが動作する 64 ビット SPARC プロセッサでしか実行できません。 

 

このオプションでコンパイルすると、V9 SPARC アーキテクチャで良好なパフォーマンスを得るのに最も適した命令セットが使用されます。ただし、(64 ビット Solaris 7 ソフトウェアだけで使用可能な) 4 倍精度浮動小数点命令は使用されません。 

v9a 

SPARC V9 アーキテクチャの命令セットに Visual Instruction Set (VIS) と UltraSPARC プロセッサ固有の拡張を加えたものに限定します。生成される .o オブジェクトファイルは 64 ビット ELF 形式です。このファイルは、同じ形式のオブジェクトファイルとしかリンクできません。

 

生成される実行可能ファイルは、64 ビットカーネルを持つ 64 ビット Solaris 7 ソフトウェアが動作する 64 ビット UltraSPARC プロセッサでしか実行できません。 

 

このオプションでコンパイルすると、V9 UltraSPARC アーキテクチャで良好なパフォーマンスを得るのに最も適した命令セットが使用さます。ただし、(64 ビット Solaris 7 ソフトウェアだけで使用可能な) 4 倍精度浮動小数点命令は使用されません。 

x86 の場合

generic386 はこのリリースでは同じ意味です。

486pentiumpentium_pro を指定すると、Intel PentiumPro チップの命令セットが出力されます。

デフォルト

-xarch=a を指定しないと、-xarc=generic が使用されます。

相互の関連性

-xarc=v9 オプションと -compat[=4] オプションを一緒に使用することはできません。

警告

このオプションを最適化の指定とともに使用する場合、適切な選択をすれば、指定したアーキテクチャで実行可能ファイルの良好なパフォーマンスが得られますが、適切でない選択をすると、パフォーマンスが著しく低下することがあります。

-xcache=c

(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/li/ai の定義は次のとおりです。

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

-xcg(89|92)

(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 を使用した場合は、リンクでも同じオプションを使用してください。そうしないと、予期しない結果が発生する可能性があります。

-xchip=c

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

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

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

c の有効な値は次のとおりです。

プラットフォーム 

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 を使用すれば、パフォーマンスの著しい低下がなく、良好なパフォーマンスが得られる最も適したタイミング属性がコンパイラで使用されます。

-xcode=a

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

a は次の値の 1 つでなければなりません。

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

リンカーによる関数の順序変更を有効にします。

この -xF オプションを指定してコンパイルした後で実行してアナライザを使用すると、最適化された関数の順序を示すマップファイルを作成できます。続いて実行するリンカーには、-Mmapfile (マップファイル) オプションでそのマップを使用するよう指示して、実行可能ファイルを作成することができます。これによって、実行可能ファイルの各関数が別々のセクションに置かれます。

メモリー上でサブプログラムの順序を並べ替えることで効果が上がるのは、アプリケーション時間の多くの割合がアプリケーションテキストのページフォルト時間に費やされている場合だけです。それ以外の場合は、順序を変えてもアプリケーションの全体的なパフォーマンスが向上しないことがあります。

相互の関連性

-xF オプションは、-features=no%except (-noex) のときにだけ有効です。

関連項目

analyzer(1)、debugger(1)、および ld(1) のマニュアルページ

-xhelp=flags

-help と同じです。コンパイラオプションの一覧を表示します。

-xhelp=readme

-readme と同じです。README(最新情報)ファイルの内容を表示します。

-xildoff

インクリメンタルリンカーを無効にします。

デフォルト

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

関連項目

-xildonild(1) および ld(1) のマニュアルページ、 『dbx コマンドによるデバッグ』

-xildon

インクリメンタルリンカーを有効にします。

-G ではなく -g を使用し、コマンド行にソースファイルを指定していない場合は、このオプションが有効になります。このオプションを無効にするには、-xildoff オプションを使用してください。

関連項目

-xildoff と、ild(1) および ld(1) のマニュアルページ

dbx コマンドによるデバッグ』

-xinline=f[,...f]

指定されたルーチンをインライン展開します。


注 -

このオプションは 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

-xlibmieee

例外時に libm が数学ルーチンに対し IEEE 754 値を返します。

libm のデフォルト動作は XPG に準拠します。

関連項目

『数値計算ガイド』

-xlibmil

選択された libm ライブラリルーチンを最適化のためにインライン展開します。


注 -

このオプションは C++ インライン関数には影響しません。


一部の libm ライブラリルーチンにはインラインテンプレートがあります。このオプションを指定すると、これらのテンプレートが選択され、現在選択されている浮動小数点オプションとプラットフォームに対して最も高速な実行可能コードが生成されます。

関連項目

『数値計算ガイド』

-xlibmopt

最適化された数学ルーチンのライブラリを使用します。

パフォーマンスが最適化された数学ルーチンのライブラリを使用し、より高速で実行できるコードを生成します。通常の数学ライブラリを使用した場合とは、結果が少し異なることがあります。このような場合、異なる部分は通常は最後のビットです。

このライブラリオプションをコマンド行に指定する順序は重要ではありません。

相互の関連性

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

関連項目

-fast、-xnolibmopt

-xlic_lib=l[,...l]

l で指定された、ライセンスが必要なサン提供のライブラリをリンクします。 -l と同様、このオプションは、ソースまたはオブジェクトファイル名に続けて、コマンド行の最後に指定する必要があります。

Sun(TM) Performance Library(TM) とリンクするには、次のように入力します。


demo% CC program.cc -xlic_lib=sunperf 

関連項目

README ファイル『performance_library

-xlicinfo

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

このオプションは、ライセンスサーバー名と、検査済みのライセンスを所持するユーザーのユーザー ID を返します。このオプションを指定するとコンパイラは起動されず、ライセンスも検査されません。

矛盾するオプションを使用すると、コマンド行の最後のものが優先され、警告が出されます。

コンパイルせずにライセンス情報を表示します。


demo% CC -c -xlicinfo any.cc

コンパイルしますが、ライセンス情報は表示しません。


demo% CC -xlicinfo -c any.cc

-Xm

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

-xM

メークファイルの依存情報を出力します。

次のコード hello.c をコンパイルするとします。


#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) のマニュアルページを参照してください。

-xM1

依存情報を生成しますが、/usr/include は除きます。

/usr/include ヘッダーファイルについての依存情報を出力しない点以外は、-xM オプションと同じ機能です。

-xM オプションの説明で使用した例と同じコードを、-xM1 オプションでコンパイル (% CC -xM1 hello.c を実行) すると、次のように出力されます。

hello.o: hello.c

-xMerge

データセグメントをテキストセグメントと併合 (マージ) します。

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

関連項目

ld(1) のマニュアルページ

-xnolib

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

通常 (このオプションを指定しない場合)、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

libmlibw を静的にリンクし、他のライブラリを動的にリンクするには、次のように指定します。


demo% CC -xnolib -Bstatic -lm -lw -Bdynamic -lcx -lc

相互の関連性

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

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

警告

このリリースのライブラリは安定していないため、リリースごとに変更される可能性があります。

-lcx は 64 ビットコンパイルモードにはありません。

関連項目

-library-staticlib-l

-xnolibmil

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

最適化された数学ライブラリとのリンクを変更するには、このオプションを -fast と一緒に使用してください。

-xnolibmopt

数学ルーチンのライブラリを使用しないようにします。

このオプションは次の例のように、コマンド行で -fast オプションを指定した場合は、その後に使用してください。


demo% CC -fast -xnolibmopt

-xO[level]

最適化レベルを指定します。一般的に、プログラムの実行速度は最適化のレベルに依存します。最適化レベルが高いほど、実行速度が速くなります。

-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 から変数を表示することはできませんが、dbxwhere コマンドを使用すればシンボルによる追跡が可能です。

最適化レベルが -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=pcsh(1) のマニュアルページ

-xpg

gprof でプロファイル処理ができるようにコンパイルします。

-xpg オプションでは、gprof で自動プロファイル処理するためのデータを収集するコードが生成されます。このオプションを指定すると、プログラムが正常に終了したときに gmon.out を生成する実行時記録メカニズムが呼び出されます。

警告

コンパイルとリンクを別々に行う場合は、-xpg でコンパイルしたときは -xpg でリンクする必要があります。

関連項目

-xprofile=panalyzer(1) のマニュアルページ

-xprefetch[=(yes|no)]

(SPARC) UltraSparc II プロセッサで先読み命令を使用します。

-xprefetch=yes を指定すると、コンパイラは生成するコードに先読み命令を必要に応じて挿入します。UltraSparc II プロセッサでは、これよってパフォーマンスが向上することがあります。

デフォルト

-xprefetch オプションを指定しないと、デフォルトで -xprefetch=no が使用 されます。

-xprefetch だけを指定すると、-xprefetch=yes とみなされます。

-xprofile=p

実行時プロファイルデータを収集したり、それを使って最適化します。

このオプションを使用すると、実行頻度のデータが集められて、実行時に保存されます。保存されたデータは後続する処理の実行時に使用され、これによってパフォーマンスが向上します。このオプションは、最適化のレベルが指定されている場合にのみ有効です。

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

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 を使用する必要があります。

関連項目

-xatcov(1) のマニュアルページ 『プログラムのパフォーマンス解析』

-xregs=r[,...r]

(SPARC) 一時レジスタの使用を制御します。

コンパイラは、一時記憶領域として使用できるレジスタ (一時レジスタ) が多ければ、それだけ高速なコードを生成します。このオプションは、利用できる一時レジスタを増やしますが、必ずしもそれが適切であるとは限りません。

r には、以下の値のいずれか 1 つを指定します (意味は -xarch の設定に依存しま す)。

r の値 

内容 

[no%]appl

 

V8 および V8a の場合、レジスタ %g2、%g3、%g4 の使用を許可します [しません]。 

v8plus および v8plusa の場合、レジスタ g2、g3、g4、g5 の使用を許可します [しません]。 

V9 および V9a の場合、レジスタ %g2 と %g3 の使用を許可します [しません]。 

 

SPARC ABI では、これらのレジスタはアプリケーションレジスタと記述されています。これらのレジスタを使用すると、必要な loadstore 命令が少なくなるため、パフォーマンスが向上します。ただし、これらのレジスタの使用は、他の目的でレジスタを使用するプログラムとの矛盾を起こすことがあります。

[no%]float

 

SPARC ABI で指定されているように、浮動小数点レジスタの使用を許可します [しません]。 

プログラム中に浮動小数点コードが含まれていない場合でも、これらのレジスタを使用できます。 

浮動小数点コードが含まれているソースプログラムには、このオプションを使用できません。 

デフォルト

-xregs を指定しないと、-xregs=app1,float が使用されます。

使用可能なすべての一時レジスタを使ってアプリケーションプログラムをコンパイルするには、次のように指定します。

-xregs=appl,float

コンテキストの切り替えの影響を受けやすい非浮動小数点コードをコンパイルするには、次のように指定します。

-xregs=no%appl, no%float

関連項目

SPARC V7 および V8 の ABI、SPARC V9 の ABI

-xs

オブジェクト (.o) ファイルなしに dbx でデバッグできるようにします。

-xs オプションは、dbx の自動読み込みを無効にします。このオプションは、.o ファイルを残しておくことができない場合に使用してください。このオプションにより、 -s オプションがアセンブラに渡されます。

「非自動読み込み」とは、シンボルテーブルの古い読み込み方法です。dbx の全シンボルテーブルが実行ファイル内に置かれます。また、リンカーによるリンクや dbx による初期化の速度が遅くなります。

「自動読み込み」は、シンボルテーブルの新しい読み込み方法 (デフォルト) です。各 .o ファイルに情報が含まれるため、dbx はシンボルテーブルが必要な場合にのみシンボルテーブル情報を読み込みます。このため、リンカーによるリンクや dbx による初期化の速度が速くなります。

-xs を指定する場合で、実行ファイルを別のディレクトリに移動して dbx を使用するときは、オブジェクト (.o) ファイルを移動する必要はありません。

-xs を指定せずに実行ファイルを別のディレクトリに移動して dbx を使用する場合は、ソースファイルとオブジェクト (.o) ファイルの両方を移動する必要があります。

-xsafe=mem

(SPARC) メモリーに関するトラップを発生させません。

このオプションによって、V9 マシン上で投機的なロード命令を使用することができます。

相互の関連性

このオプションは、-xarchv8plusv8plusav9v9a のいずれかを指定し、最適化レベルの -x05 と組み合わせた場合にだけ有効です。

警告

このオプションは、プログラムでメモリーに関するトラップが起こらないとみなせる場合しか使用しないでください。ほとんどのプログラムの場合、この仮定は適切であり、このように仮定してもかまいません。しかし、メモリーに関するトラップを明示的に強制して例外条件を処理するプログラムの場合は、このように仮定することはできません。

-xsb

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

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

関連項目

-xsbfast

-xsbfast

ソースブラウザ情報を生成するだけで、コンパイルはしません。

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

関連項目

-xsb

-xspace

(SPARC) コードサイズが大きくなるような最適化は行いません。

-xtarget=t

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

コンパイラにハードウェアシステムを正確に指定すると、プログラムによってはパフォーマンスが向上します。プログラムのパフォーマンスを重視する場合は、ハードウェアを適切に指定することが極めて重要です。特に、プログラムをより新しい SPARC システム上で実行する場合には重要になります。しかし、ほとんどのプログラムおよび旧式の SPARC システムではパフォーマンスの向上はわずかであるため、汎用的な指定方法で十分です。

値 (SPARC)

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

t の値

意味 

native

ホストシステムで最高のパフォーマンスが得られます。 

 

コンパイラは、ホストシステム用に最適化されたコードを生成し、コンパイラが動作しているマシンで使用できるアーキテクチャ、チップ、キャッシュの属性を決定します。 

generic

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

コンパイラは、-xtarget=generic-xarch=generic -xchip=generic -xcache=generic に展開します。

これはデフォルト値です。 

system-name

指定するシステムで最高のパフォーマンスが得られます。 

次の節の表から SPARC プラットフォームの名前を選択します。 

値 (x86)

x86 の場合は、-xtarget に次の値を指定できます。

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 に戻されます。

-xtime

CC ドライバが、さまざまなコンパイル過程の実行時間を報告します。

-xunroll=n

可能な場合は、ループを展開します。

このオプションでは、コンパイラがループを最適化 (展開) するかどうかを指定します。

n が 1 の場合、コンパイラはループを展開しません。

n が 1 より大きな整数の場合は、-unroll=n によってコンパイラがループを n 回展開します。

-xwe

ゼロ以外の終了状態を返すことによって、すべての警告をエラーとして扱います。

-ztext

書き込み不可で割り当て可能なセクションに対して再配置が残っている場合に、致命的エラーとします。

このオプションはリンカーに渡されます。