Sun Studio 12: C ユーザーズガイド

付録 A 機能別コンパイラオプション

この付録では、機能別に C コンパイラのオプションをまとめています。各オプションおよびコンパイラコマンド行構文の詳細は、表 A–15 を参照してください。

A.1 機能別のオプションのまとめ

この節では、簡単に参照できるように、コンパイラオプションを機能別にまとめています。各オプションの詳細は、表 A–15 付録 B 「C コンパイラオプションリファレンス」 を参照してください。一部のフラグは複数の目的で使用されているため、複数個所に記載されています。

特に注記のないかぎり、オプションはすべてのプラットフォームに適用されます。 SPARC システム版の Solaris オペレーティングシステムに固有の機能には (SPARC)、 x86 システム版の Solaris オペレーティングシステムに固有の機能には (x86) と注記しています。

A.1.1 最適化とパフォーマンスのオプション

表 A–1 最適化とパフォーマンスのオプション表

オプション 

処理 

-fast

実行可能コードの速度を向上させるコンパイルオプションの組み合わせを選択します。

-fma

(SPARC) floating-point、 fused、multiply-add 命令の自動生成を有効にします。 

-p

プロファイルデータ収集用のオブジェクトコードを用意します。

-xalias_level

(SPARC) コンパイラが型ベースの別名の分析と最適化を実行します。

-xbinopt

あとで最適化、変換、分析を行うために、バイナリを準備します。

-xbuiltin

標準ライブラリ関数を呼び出すコードの最適化率を上げます。

-xcrossfile

複数ソースファイルに渡る最適化とインライン化を有効にします。

-xdepend

(SPARC) ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。

-xF

リンカーによるデータと関数の順序の並べ替えを有効にします。

-xhwcprof

(SPARC) コンパイラのハードウェアカウンタによるプロファイリングのサポートを有効にします。

-xinline

指定された関数だけをインライン化します。

-xinstrument

スレッドアナライザによる分析のために、プログラムをコンパイルして利用します。 

-xipo

(SPARC) 内部手続き解析パスを呼び出すことにより、プログラム全体の最適化を実行します。

-xipo_archive

ファイル間の最適化でアーカイブ (.a) ライブラリを取り込むことを可能にします。

-xjobs

コンパイラが生成するプロセスの数を設定します。

-xlibmil

実行速度を上げるため、一部のライブラリルーチンをインライン化します。

-xlic_lib=sunperf

指定された Sun 提供のパフォーマンスライブラリにリンクします。

-xlinkopt

再配置可能なオブジェクトファイルのリンク時の最適化を実行します。

-xlibmopt

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

-xmaxopt

このコマンドは、pragma opt のレベルを指定されたレベルに限定します。

-xnolibmil

数学ライブラリのルーチンをインライン化しません。

-xnolibmopt

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

-x0

オブジェクトコードを最適化します。

-xnorunpath

実行可能ファイル内の共有ライブラリの実行時検索パスのインクルードを抑止します。 

-xpagesize

スタックとヒープ用の優先ページサイズを設定します。

-xpagesize_stack

スタック用の優先ページサイズを設定します。

-xpagesize_heap

ヒープ用の優先ページサイズを設定します。

-xpch

ソースファイルが共通インクルードファイルセットを共有しているようなアプリケーションのコンパイル時間を短縮します。

-xpchstop

-xpch とともに使用して、活性文字列の最後のインクルードファイルを指定します。

-xpentium

(x86) PentiumTM プロセッサ用に最適化を行います。

-xprefetch

(SPARC) 先読み命令を有効にします。

-xprefetch_level

(SPARC) -xprefetch=auto で設定される先読み命令の自動挿入の優先度を制御します。

-xprefetch_auto_type

(SPARC) 間接先読み命令の生成方法を制御します。

-xprofile

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

-xprofile_ircache

-xprofile=collect 段階で保存されたコンパイルデータを再利用して、-xprofile=use 段階のコンパイル時間を向上します。

-xprofile_pathmap

単一のプロファイルディレクトリで複数のプログラムまたは共有ライブラリをサポートします。

-xrestrict

(SPARC) ポインタ値の関数引数を制限付きポインタとして扱います。

-xsafe

(SPARC) メモリーに関するトラップが発生しないことを前提にします。

-xspace

コードサイズを増やすループの最適化や並列化を行いません。

-xunroll

ループを n 回展開するようオプティマイザに指示します。

A.1.2 コンパイル時とリンク時のオプション

次の表は、リンク時とコンパイル時の両方に指定する必要があるオプションをまとめています。

表 A–2 コンパイル時とリンク時のオプション表

オプション 

処理 

-fast

実行可能コードの速度を向上させるコンパイルオプションの組み合わせを選択します。

-m32|-m64

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

-mt

-D_REENTRANT -lthread に展開されるマクロオプション。

-p

prof(1) がプロファイルデータを収集するためのオブジェクトコードを作成します。

-xarch

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

-xautopar

(SPARC) 複数プロセッサ用の自動並列化を有効にします。

-xexplicitpar

(SPARC) #pragma MP 指令の指定に基づいて並列化コードを生成します。

-xhwcprof

(SPARC) コンパイラのハードウェアカウンタによるプロファイリングのサポートを有効にします。

-xipo

(SPARC) 内部手続き解析パスを呼び出すことにより、プログラム全体の最適化を実行します。

-xlinkopt

再配置可能なオブジェクトファイルのリンク時の最適化を実行します。

-xmemalign

(SPARC) 想定するメモリー境界整列の最大値と、境界整列に失敗したデータがアクセスされた際の動作を指定します。

-xopenmp

(SPARC) 明示的な並列化のための OpenMP インタフェースをサポートする。このインタフェースには、ソースコード指令セット、実行時ライブラリルーチン、環境変数などが含まれます。

-xpagesize

スタックとヒープ用の優先ページサイズを設定します。

-xpagesize_stack

スタック用の優先ページサイズを設定します。

-xpagesize_heap

ヒープ用の優先ページサイズを設定します。

-xparallel

(SPARC) ループを、コンパイラで自動的に並列化するとともに、プログラマの指定によって明示的に並列化します。

-xpg

gprof(1) によるプロファイルの準備として、データを収集するためのオブジェクトコードを生成します。

-xprofile

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

-xsb

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

-xvector

ベクトルライブラリ関数を自動的に呼び出すようにします。

A.1.3 データ境界整列のオプション

表 A–3 データ境界整列のオプション表

オプション 

処理 

-xchar_byte_order

複数文字からなる定数である文字を指定されたバイト順序で配置することにより、整定数を生成します。

-xdepend

(SPARC) ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。

-xmemalign

(SPARC) 想定するメモリー境界整列の最大値と、境界整列に失敗したデータがアクセスされた際の動作を指定します。

-xopenmp

(SPARC) 明示的な並列化のための OpenMP インタフェースをサポートする。このインタフェースには、ソースコード指令セット、実行時ライブラリルーチン、環境変数などが含まれます。

A.1.4 数値と浮動小数点のオプション

表 A–4 数値と浮動小数点のオプション表

オプション 

処理 

-flteval

(x86) 浮動小数点の評価を制御します。

-fma

(SPARC) floating-point、fused、multiply-add 命令の自動生成を有効にします。 

-fnonstd

浮動小数点演算ハードウェアの非標準の初期化を行います。

-fns

(SPARC) 非標準の浮動小数点モードに切り替えます。

-fprecision

(x86) 浮動小数点制御ワードの丸め精度モードのビットを初期化します。

-fround

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

-fsimple

オプティマイザが浮動小数点演算に関する前提事項を単純化できるようにします。

-fsingle

float 式を倍精度ではなく単精度で評価します。

-fstore

(x86) 浮動小数点式または関数の値を、代入式の左辺値の型に変換します。

-ftrap

起動時に有効になる IEEE 754 トラップモードを設定します。

-nofstore

(x86) 浮動小数点式または関数の値を、代入式の左辺値の型に変換しません。

-xdepend

(SPARC) ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。

-xlibmieee

例外が起きた場合の数学ルーチンの戻り値を強制的に IEEE 754 形式にします。

-xopenmp

(SPARC) 明示的な並列化のための OpenMP インタフェースをサポートする。このインタフェースには、ソースコード指令セット、実行時ライブラリルーチン、環境変数などが含まれます。

-xsfpconst

接尾辞のない浮動小数点定数を単精度で表します。

-xvector

ベクトルライブラリ関数を自動的に呼び出すようにします。

A.1.5 並列化のオプション

表 A–5 並列化のオプション表

オプション 

処理 

-mt

-D_REENTRANT -lthread に展開されるマクロオプションです。

-xautopar

(SPARC) 複数プロセッサ用の自動並列化を有効にします。

-xcheck

(SPARC) スタックオーバーフローに関する実行時検査を追加します。

-xdepend

(SPARC) ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。 

-xexplicitpar

(SPARC) #pragma MP 指令の指定に基づいて並列化コードを生成します。

-xloopinfo

(SPARC) 並列化されているループとされていないループを示します。

-xopenmp

(SPARC) 明示的な並列化のための OpenMP インタフェースをサポートする。このインタフェースには、ソースコード指令セット、実行時ライブラリルーチン、環境変数などが含まれます。

-xparallel

(SPARC) ループを、コンパイラで自動的に並列化するとともに、プログラマの指定によって明示的に並列化します。

-xreduction

(SPARC) 自動並列化中の縮約の認識を有効にします。

-xrestrict

(SPARC) ポインタ値の関数パラメータを制限付きのポインタとして扱います。 

-xvpara

(SPARC) #pragma MP 指令が指定されているが、正しく並列化指定されていないループについて警告を出します。

-xthreadvar

(SPARC) スレッドローカルな変数の実装を制御します。 

-Zll

(SPARC) lock_lint 用にプログラムデータベースだけ作成して、実行可能なコードの生成は行いません。

A.1.6 ソースコードのオプション

表 A–6 ソースコードのオプション表

オプション 

処理 

-A

<名前> を述語として <トークン> と関連付けます。#assert 前処理指令を実行するのと同じです。

-C

C プリプロセッサがコメントを削除しないようにします。ただし前処理指令の行にあるコメントは削除されます。

-D

#define 前処理指令が行うように <名前> <トークン> に関連付けます。

-E

ソースファイルの前処理だけを行い、結果を stdout に出力します。

-fd

K&R 形式の関数の宣言や定義を報告します。

-H

現在のコンパイルでインクルードされたファイルのパス名を 1 行に 1 つずつ標準エラーに表示します。

-I

ディレクトリのリストにディレクトリを追加します。このディレクトリは相対ファイル名で指定されるインクルードファイルを検索する時のディレクトリです。

-P

ソースファイルのプリプロセッサ処理のみを行います。

-U

初期定義されているプリプロセッサシンボル <名前> をすべて削除します。

-X

ANSI/ISO C に準拠する度合いを指定します。

-xCC

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

-xc99

サポートされている C99 機能に対するコンパイラの認識状況を制御します。

-xchar

文字が符号なしと定義されるシステムからの移行をヘルプします。

-xcsi

C コンパイラが、ISO C ソース文字コードの要件に準拠していないロケールで記述されたソースコードを受け付けることを可能にします。

-xM

指定した C プログラムに対してプリプロセッサだけを実行する。その際、メイクファイルの依存関係を生成してその結果を標準出力に出力します。

-xM1

-xM と同様に依存関係を収集しますが、/usr/include ファイルは除きます。

-xP

このモジュールで定義されたすべての K&R C 関数に対するプロトタイプを出力します。

-xpg

gprof(1) によるプロファイルの準備として、データを収集するためのオブジェクトコードを生成します。

-xsb

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

-xsbfast

ソースブラウザ用のデータベースを作成します。

-xtrigraphs

3 文字表記シーケンスの認識状況を判定します。

-xustr

16 ビット文字から成る文字列リテラルの認識を有効にします。

A.1.7 コンパイル済みコードのオプション

表 A–7 コンパイル済みコードのオプション表

オプション 

処理 

-c

ld(1) によるリンクを行わず、現在の作業用ディレクトリ内にソースファイルごとに .o ファイルを作成します。

-o

出力ファイルに名前を付けます。

-S

アセンブリソースファイルを作成しますが、アセンブルは行いません。

A.1.8 コンパイルモードのオプション

表 A–8 コンパイルモードのオプション表

オプション 

処理 

-#

冗長モードを有効にします。コマンドオプションの展開内容と呼び出されたすべての構成要素が表示されます。

-###

呼び出された各構成要素が表示されますが、実行はされません。また、コマンドオプションの展開内容も表示されます。

-features

extern インライン関数を含む古いバイナリと新しいバイナリの互換性を維持します。

-keeptmp

コンパイル中に作成される一時ファイルを自動的に削除しないで保持します。

-V

コンパイラの実行時に各構成要素の名前とバージョン番号を表示します。

-W

引数を C コンパイルシステムの構成要素に渡します。

-X

ANSI/ISO C に準拠する度合いを指定します。

-xc99

サポートされている C99 機能に対するコンパイラの認識状況を制御します。

-xchar

char の符号を保持します。

-xhelp

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

-xjobs

コンパイラが生成するプロセスの数を設定します。

-xpch

ソースファイルが共通インクルードファイルセットを共有しているようなアプリケーションのコンパイル時間を短縮します。

-xpchstop

-xpch とともに使用して、活性文字列の最後のインクルードファイルを指定します。

-xtemp

cc が使用する一時ファイルの <ディレクトリ> を設定します。

-xtime

コンパイルの各構成要素が占有した実行時間と資源を報告します。

-Y

コンパイルシステムの構成要素を配置する新しいディレクトリを指定します。

-YA

コンパイラの構成要素を検索するデフォルトのディレクトリを変更します。

-YI

インクルードファイル検索時のデフォルトディレクトリを変更します。

-YP

ライブラリファイルを検索するデフォルトのディレクトリを変更します。

-YS

起動用のオブジェクトファイルを検索するデフォルトのディレクトリを変更します。

A.1.9 診断のオプション

表 A–9 診断のオプション表

オプション 

処理 

-errfmt

警告メッセージからの型用に「error:」という接頭辞をメッセージに付けます。

-errhdr

ヘッダーファイルから指定したグループへの警告を制限します。 

-erroff

コンパイラからの警告メッセージを出力しません。

-errshort

コンパイラが型の不一致を検出をする際に出力されるエラーメッセージの詳細度を制御します。

-errtags

各警告メッセージのメッセージタグを表示します。

-errwarn

指定された警告メッセージが表示される場合、cc はエラーステータスを返して終了します。

-v

より厳しい意味検査およびほかの lint に似た検査を行います。

-w

コンパイラからの警告メッセージを出力しません。

-xe

ソースファイル上で構文および意味検査のみを行います。オブジェクトコードや実行可能コードは生成しません。

-xtransition

K&R C と Sun ANSI/ISO C との間の相違に対して警告を出します。

-xvpara

(SPARC) #pragma MP 指令が指定されているが、正しく並列化指定されていないループについて警告を出します。

A.1.10 デバッグのオプション

表 A–10 デバッグのオプション表

オプション 

処理 

-xcheck

スタックオーバーフローに関する実行時検査を追加します。

-g

デバッガ用に追加のシンボルテーブル情報を作成します。

-s

出力されるオブジェクトファイルからシンボリックデバッグのための情報をすべて削除します。

-xdebugformat

stab 形式ではなく dwarf 形式でデバッグ情報を生成します。

-xpagesize

スタックとヒープ用の優先ページサイズを設定します。

-xpagesize_stack

スタック用の優先ページサイズを設定します。

-xpagesize_heap

ヒープ用の優先ページサイズを設定します。

-xs

dbx のためのオブジェクトファイルの自動読み取りを無効にします。

-xvis

(SPARC) コンパイラによる VISTM 命令セットに定義されているアセンブリ言語のテンプレートの認識を有効にします。

A.1.11 リンクとライブラリのオプション

表 A–11 リンクとライブラリのオプション表

オプション 

処理 

-B

ライブラリのリンクを静的動的のどちらにするかを指定します。

-d

リンクエディタに動的なリンクまたは静的なリンクを指定します。

-G

動的にリンクされる実行可能プログラムではなく、共有オブジェクトを作成することをリンクエディタに指示します。

-h

共有動的ライブラリに <名前> を付けます。これによってバージョンの異なるライブラリを作成できます。

-i

LD_LIBRARY_PATH の設定を無視するオプションをリンカーへ渡します。

-L

リンカーがライブラリを検索するリストに <ディレクトリ> を付け加えます。

-l

ld がオブジェクトライブラリ lib<名前>.so、または lib<名前>.a をリンクの対象とします。

-mc

オブジェクトファイルの .comment セクションから重複している文字列を削除します。

-mr

.comment セクションからすべての文字列を削除し、オブジェクトファイルの <文字列> を挿入します。

-Q

出力ファイルに識別情報を入れるかどうかを設定します。

-R

コロンで区切られたディレクトリのリストを、ライブラリ検索ディレクトリとして、実行時リンカーに渡します。

-xMerge

データセグメントをテキストセグメントにマージします。

-xcode

コードアドレス空間を指定します。

-xldscope

変数定義と関数定義のデフォルトのスコープを制御して、より高速で安全な共有ライブラリを作成します。

-xnolib

デフォルトのライブラリをリンクしません。

-xnolibmil

数学ライブラリのルーチンをインライン化しません。

-xstrconst

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

A.1.12 対象プラットフォームのオプション

表 A–12 対象プラットフォームのオプション表

オプション 

処理 

-m32|-m64

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

-xarch

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

-xcache

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

-xchip

オプティマイザ用の対象プロセッサを指定します。

-xregs

(SPARC) 生成コード用のレジスタの使用法を指定します。

-xtarget

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

A.1.13 x86 固有のオプション

表 A–13 x86 固有のオプション表

オプション 

処理 

-flteval

浮動小数点の評価を制御します。

-fprecision

浮動小数点制御ワードの丸め精度モードのビットを初期化します。

-fstore

浮動小数点式または関数の値を、代入式の左辺値の型に変換します。

-nofstore

浮動小数点式または関数の値を、代入式の左辺値の型に変換しません。

-xmodel

64 ビットオブジェクトの形式を Solaris x86 プラットフォーム用に変更します。

-xpentium

Pentium プロセッサ用に最適化を行います。

A.1.14 ライセンスのオプション

表 A–14 ライセンスのオプション表

オプション 

処理 

-xlicinfo

ライセンスシステムについての情報を返します。

A.1.15 旧式のオプション

次の表は、非推奨になったオプションをまとめています。引き続きコンパイラはこれらのオプションを受け付けますが、将来は使用できなくなる可能性があります。できるだけ速やかに推奨代替オプションを使うようにしてください。

表 A–15 旧式のオプション表

オプション 

処理 

-dalign

代わりに -xmemalign=8s を使用してください。

-KPIC (SPARC)

代わりに -xcode=pic32 を使用してください。

-Kpic (SPARC)

代わりに -xcode=pic13 を使用してください。

-misalign

代わりに -xmemalign=1i を使用してください。

-misalign2

代わりに -xmemalign=2i を使用してください。

-x386

代わりに、-xchip=generic を使用してください。

-x486

代わりに、-xchip=generic を使用してください。

-xa

代わりに、-xprofile=tcov を使用してください。

-xcg

-xarch-xchip-xcache のデフォルト値を活かすために、代わりに -O を使用してください。

-xnativeconnect

旧式のため、代替オプションはありません。 

-xprefetch=yes

代わりに -xprefetch=auto,explicit を使用してください。

-xprefetch=no

代わりに -xprefetch=no%auto,no%explicit を使用してください。

-xtarget=386

代わりに -xtarget=generic を使用してください。

-xtarget=486

代わりに -xtarget=generic を使用してください。