JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: C ユーザーガイド     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  C コンパイラの紹介

2.  C コンパイラ実装に固有の情報

3.  C コードの並列化

4.  lint ソースコード検査プログラム

5.  型に基づく別名解析

6.  ISO C への移行

7.  64 ビット環境に対応するアプリケーションへの変換

8.  cscope: 対話的な C プログラムの検査

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

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

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

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

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

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

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

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

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

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

A.1.9 診断のオプション

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

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

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

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

A.1.14 廃止オプション

B.  C コンパイラオプションリファレンス

C.  ISO/IEC C 99 の処理系定義の動作

D.  C99 の機能

E.  ISO/IEC C90 の処理系定義の動作

F.  ISO C データ表現

G.  パフォーマンスチューニング

H.  Oracle Solaris Studio C: K&R C と ISO C の違い

索引

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

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

特に明記しないかぎり、オプションはすべてのプラットフォームに適用されます。SPARC ベースシステムに固有の機能は (SPARC) として識別し、x86/x64 ベースシステムに固有の機能は (x86) として識別しています。Oracle Solaris プラットフォームのみに適用されるオプションには、(Solaris) というマークが付きます。Linux プラットフォームのみを対象とするオプションには、(Linux) というマークが付きます。

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

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

オプション
処理
-fast
実行可能コードの速度を向上させるコンパイルオプションの組み合わせを選択します。
-fma
(SPARC) 浮動小数点の積和演算 (FMA) 命令の自動生成を有 効にします。
-library=sunperf
Sun Performance Library とリンクします
-p
プロファイル用のデータを収集するためにオブジェクトコードを準備します
-xalias_level
コンパイラで、型に基づく別名の解析および最適化を実行するように指定します。
-xannotate
(Solaris) 最適化および監視ツール binopt(1)、code-analyzer(1)、discover(1)、collect(1)、および uncover(1) で使用可能なバイナリを作成するよう、コンパイラに指示します
-xbinopt
あとで最適化、変換、分析を行うために、バイナリを準備します。
-xbuiltin
標準ライブラリ関数を呼び出すコードの最適化を改善します。
-xdepend
ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。
-xF
リンカーによるデータおよび関数の順序変更を有効にします。
-xhwcprof
(SPARC) コンパイラのハードウェアカウンタによるプロファイリングのサポートを有効にします。
-xinline
指定された関数のみのインライン化を試みます。
-xinstrument
スレッドアナライザで分析するために、プログラムをコンパイルして計測します。
-xipo
内部手続き解析パスを呼び出すことにより、プログラム全体の最適化を実行します。
-xipo_archive
クロスファイル最適化でアーカイブ ( .a ) ライブラリを取り込むことを許可します。
-xkeepframe
指定した関数のスタック関連の最適化を禁止します
-xjobs
コンパイラが作成するプロセスの数を設定します。
-xlibmil
実行速度を上げるために一部のライブラリルーチンをインライン化します。
-xlic_lib=sunperf
廃止。Sun Performance Library にリンクするには、—library=sunperf を使用します。
-xlinkopt
再配置可能なオブジェクトファイルのリンク時の最適化を実行します。
-xlibmopt
最適化された数学ルーチンのライブラリを有効にします。
-xmaxopt
pragma opt のレベルを指定されたレベルに制限します。
-xnolibmil
数学ライブラリルーチンをインライン化しません。
-xnolibmopt
最適化された数学ルーチンのライブラリを有効化しません。
-xO
オブジェクトコードを最適化します。
-xnorunpath
実行可能ファイル内の共有ライブラリの実行時検索パスのインクルードを抑止します。
-xpagesize
スタックとヒープの優先ページサイズを設定します。
-xpagesize_stack
スタックの優先ページサイズを設定します。
-xpagesize_heap
ヒープの優先ページサイズを設定します。
-xpch
共通の一連のインクルードファイル群を共有するソースファイルを持つアプリケーションのコンパイル時間を短縮します。
-xpec
追加のチューニングやトラブルシューティングで使用できる移植可能な実行可能コード(Portable Executable Code、PEC) バイナリを生成します。
-xpchstop
活性文字列の最後のインクルードファイルを指定するために、-xpch と組み合わせて使用できます。
-xprefetch
先読み命令を有効にします。
-xprefetch_level
-xprefetch=auto を設定したときの先読み命令の自動挿入を制御します。
-xprefetch_auto_type
間接先読みの生成方法を制御します。
-xprofile
プロファイルのデータを収集、または最適化のためにプロファイルを使用します。
-xprofile_ircache
-xprofile=collect 段階から保存されたコンパイルデータを再利用することで、-xprofile=use 段階のコンパイル時間を改善します
-xprofile_pathmap
1 つのプロファイルディレクトリ内で複数のプログラムや共有ライブラリをサポートします。
-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 前処理指令が実行されたかのように、name を述語として、指定された tokens に関連付けます。
-C
前処理指令の行のものを除いて、プリプロセッサがコメントを削除することを抑止します。
-D
まるで #define 前処理指令が実行されたかのように、name を指定された tokens に関連付けます。
-E
ソースファイルに対してプリプロセッサのみを実行し、その出力を stdout に送ります。
-fd
K&R 形式の関数の定義や宣言について報告します。
-H
現在のコンパイル中にインクルードされた各ファイルのパス名を、標準エラーに 1 行に 1 つずつ出力します。
-I
#include ファイルが相対ファイル名で検索されるリストに、ディレクトリを追加します。
-include
コンパイラが引数 filename を、まるでそれが主ソースファイルの先頭行に#include プリプロセッサ指令として存在しているかのように処理します。
-P
ソースファイルに対して C プリプロセッサのみを実行します。
-U
プリプロセッサシンボル name の初期定義をすべて削除します。
-X
-X オプションは ISO C 規格に準拠する度合いを指定します。
-xCC
C++ 形式のコメントを受け入れます。
-xc99
サポートされる C99 機能のコンパイラ認識を制御します。
-xchar
char が符号なしとして定義されているシステムからの移行を支援します。
-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
コンパイラが実行する各コンポーネントの名前とバージョン ID を出力するよう、cc に指示します。
-W
C コンパイルシステムのコンポーネントに引数を渡します。
-X
-X オプションは ISO C 規格に準拠する度合いを指定します。
-xc99
サポートされる C99 機能のコンパイラ認識を制御します。
-xchar
char の符号を保持します
-xhelp
オンラインヘルプ情報を表示します。
-xjobs
コンパイラが作成するプロセスの数を設定します。
-xpch
共通の一連のインクルードファイル群を共有するソースファイルを持つアプリケーションのコンパイル時間を短縮します。
-xpchstop
活性文字列の最後のインクルードファイルを指定するために、-xpch と組み合わせて使用できます。
-xtemp
cc によって使用される一時ファイル用のディレクトリを、dir に設定します。
-xtime
各コンパイルコンポーネントによって使用される時間と資源を報告します。
-Y
C コンパイルシステムのコンポーネントの場所用の新しいディレクトリを指定します。
-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 と Oracle Solaris Studio ISO C との違いについて警告を発行します。
-xvpara
#pragma MP 指令が指定されているが、並列化用に正しく指定されていない可能性のあるループについて、警告します。

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

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

オプション
処理
-xcheck
スタックオーバーフローの実行時検査を追加し、局所変数を初期化します。
-g
デバッガ用の追加のシンボルテーブル情報を生成します。
-g3
追加のデバッグ情報を生成します。
-s
出力オブジェクトファイルからすべてのシンボリックデバッグ情報を削除します。
-xdebugformat
stabs 形式ではなく dwarf 形式でデバッグ情報を生成します。
-xpagesize
スタックとヒープの優先ページサイズを設定します。
-xpagesize_stack
スタックの優先ページサイズを設定します。
-xpagesize_heap
ヒープの優先ページサイズを設定します。
-xs
dbx のためのオブジェクトファイルの自動読み取りを無効にします。
-xvis
(SPARC) VIS 命令セットに定義されているアセンブリ言語テンプレートをコンパイラが認識します。

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

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

オプション
処理
-B
リンク用ライブラリのバインディングを staticdynamic のどちらにするかを指定します。
-d
リンクエディタで動的リンクまたは静的リンクを指定します。
-G
動的にリンクされる実行可能ファイルの代わりに共有オブジェクトを生成するためのオプションを、リンクエディタに渡します。
-h
共有動的ライブラリに異なるバージョンのライブラリを持つような名前を割り当てます。
-i
すべての LD_LIBRARY_PATH 設定を無視するオプションを、リンカーに渡します。
-L
リンカーがライブラリを検索する際に使用するリストに、ディレクトリを追加します。
-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 ビットオブジェクトの形式を Oracle Solaris x86 プラットフォーム用に変更します。

A.1.14 廃止オプション

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

表 A-14 廃止のオプション表

オプション
処理
-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 を使用してください。
-xlicinfo
廃止。これに代わるオプションはありません。
-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 を使用します。