Oracle Solaris Studio 12.2: C ユーザーガイド

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

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

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

この節には、参照しやすいように、コンパイラオプションが機能別に分類されています。各オプションの詳細は、表 A–15 および付録 B C コンパイラオプションリファレンス を参照してください。フラグによっては、複数の使用目的があるため、複数の個所に記載されているものがあります。

これらのオプションは、特に記載がないかぎりすべてのプラットフォームに適用されます。Solaris SPARC システム版のオペレーティングシステムに特有の機能は (SPARC) として表記され、x64 システム版のオペレーティングシステムに特有の機能は (x86) として表記されます。Solaris プラットフォームのみに適用されるオプションには、(Solaris) というマークが付きます。Linux プラットフォームのみを対象とするオプションには、(Linux) というマークが付きます。

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

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

オプション  

処理  

-fast

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

-fma

(SPARC) 浮動小数点の積和演算 (FMA) 命令の自動生成を有 効にします。 

-p

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

-xalias_level

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

-xannotate

(Solaris) binopt(1) のようなバイナリ変更ツールを使用してあとで変換できるバイナリを作成するようコンパイラに指示します。

-xbinopt

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

-xbuiltin

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

-xdepend

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

-xF

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

-xhwcprof

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

-xinline

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

-xinstrument

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

-xipo

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

-xipo_archive

ファイル間の最適化にアーカイブ (.a) ライブラリを含める

-xjobs

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

-xlibmil

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

-xlic_lib=sunperf

Sun のパフォーマンスライブラリにリンクします。

-xlinkopt

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

-xlibmopt

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

-xmaxopt

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

-xnolibmil

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

-xnolibmopt

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

-x0

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

-xnorunpath

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

-xpagesize

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

-xpagesize_stack

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

-xpagesize_heap

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

-xpch

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

-xpec

自動チューニングシステム (Automatic Tuning System、ATS) と組み合わせて使用できる、移植可能な実行可能コード (Portable Executable Code、PEC) バイナリを生成します。詳細は、http://cooltools.sunsource.net を参照してください。

-xpchstop

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

-xpentium

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

-xprefetch

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

-xprefetch_level

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

-xprefetch_auto_type

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

-xprofile

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

-xprofile_ircache

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

-xprofile_pathmap

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

-xrestrict

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

-xsafe

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

-xspace

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

-xunroll

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

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

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

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

オプション  

処理  

-fast

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

-m32|-m64

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

-mt

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

-p

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

-xarch

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

-xautopar

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

-xhwcprof

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

-xipo

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

-xlinkopt

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

-xmemalign

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

-xopenmp

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

-xpagesize

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

-xpagesize_stack

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

-xpagesize_heap

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

-xpg

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

-xprofile

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

-xvector=lib

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

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

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

オプション  

処理  

-xchar_byte_order

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

-xdepend

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

-xmemalign

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

-xopenmp

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

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

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

オプション  

処理  

-flteval

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

-fma

(SPARC) 浮動小数点の積和演算 (FMA) 命令の自動生成を有 効にします。 

-fnonstd

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

-fns

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

-fprecision

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

-fround

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

-fsimple

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

-fsingle

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

-fstore

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

-ftrap

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

-nofstore

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

-xdepend

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

-xlibmieee

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

-xsfpconst

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

-xvector

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

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

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

オプション  

処理  

-mt

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

-xautopar

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

-xcheck

スタックオーバーフローに関する実行時検査を追加し、ローカル変数を初期化します。

-xdepend

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

-xloopinfo

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

-xopenmp

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

-xreduction

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

-xrestrict

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

-xvpara

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

-xthreadvar

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

-Zll

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

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

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

オプション  

処理  

-A

#assert 前処理指令に似せて、指定の tokens を使用し name を述語として関連付けます。

-C

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

-D

#define 前処理指令に似せて、指定の tokens を使用し name を関連付けます。

-E

プリプロセッサのみでソースファイルを処理し、出力を stdout に送ります。

-fd

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

-H

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

-I

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

-include

コンパイラは引数 filename を、主要なソースファイルの 1 行目に記述されているかのように #include プリプロセッサ指令として処理します。

-P

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

-U

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

-X

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

-xCC

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

-xc99

サポートされる C99 機能をコンパイラで認識させるかどうかを制御します。

-xchar

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

-xcsi

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

-xM

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

-xM1

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

-xMD

-xM と同様にメイクファイルの依存関係を生成しますが、コンパイルを含みます。

-xMF

メイクファイルの依存関係情報を保存するファイル名を指定します。 

-xMMD

メイクファイルの依存関係を生成しますが、システムヘッダーを除外します。

-xP

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

-xpg

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

-xtrigraphs

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

-xustr

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

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

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

オプション  

処理  

-c

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

-o

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

-S

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

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

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

オプション  

処理  

-#

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

-###

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

-features

C 言語の各種機能を有効または無効にします。

-keeptmp

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

-V

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

-W

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

-X

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

-xc99

サポートされる C99 機能をコンパイラで認識させるかどうかを制御します。

-xchar

char の符号を保持します。

-xhelp

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

-xjobs

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

-xpch

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

-xpchstop

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

-xtemp

cc が使用する一時ファイルの dir を設定します。

-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 と Solaris Studio ISO C との間の相違に対して警告を出します。

-xvpara

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

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

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

オプション  

処理  

-xcheck

スタックオーバーフローに関する実行時検査を追加し、ローカル変数を初期化します。

-g

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

-s

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

-xdebugformat

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

-xpagesize

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

-xpagesize_stack

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

-xpagesize_heap

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

-xs

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

-xvis

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

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

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

オプション  

処理  

-B

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

-d

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

-G

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

-h

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

-i

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

-L

リンカーがライブラリを検索するリストに dir を付け加えます。

-l

オブジェクトライブラリ libname.so、または libname.a をリンクの対象とします。

-mc

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

-mr

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

-Q

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

-R

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

-xMerge

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

-xcode

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

-xldscope

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

-xnolib

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

-xnolibmil

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

-xstrconst

このオプションは、将来のリリースでは推奨されません。代わりに、-features=[no%]conststrings を使用します。

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

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

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

オプション  

処理  

-m32|-m64

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

-xarch

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

-xcache

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

-xchip

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

-xregs

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

-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 を使用してください。

-xarch=v7,v8,v8a

廃止。 

-xcg

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

-xcrossfile

代わりに -xipo を使用します。

-xnativeconnect

廃止。これに代わるオプションはありません。 

-xprefetch=yes

代わりに - xprefetch=auto,explicit を使用します。

-xprefetch=no

代わりに -xprefetch=no%auto,no%explicit を使用します。

-xsb

廃止。これに代わるオプションはありません。 

-xsbfast

廃止。これに代わるオプションはありません。 

-xtarget=386

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

-xtarget=486

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

-xvector=yes

代わりに、--xvector=lib を使用します。

-xvector=no

代わりに、-xvector=none を使用します。