コンパイラ・オプションのクイック・リファレンス・ガイド

ここでは、コンパイルのオプションすべてと、リンカを制御するオプションの一部を紹介します。

他のすべてのオプションは、IA-32 および Itanium ベース・システムの両方に対応しています。

オプション 説明 デフォルト
-0f_check
IA-32 のみ
古いプロセッサ向けに記述されたコードに何らかの0f命令が使用されていても、そのデコード処理を誤らないように処置します。
オフ
-A- 事前定義済みマクロ
オフ
-[no]align
IA-32 のみ
変数と配列のメモリ・レイアウトを分析し、構成を変更します。 オフ
-Aname[(value)] nameというシンボルを、指定した一連のvalueに関連付けます。#assert という前処理ディレクティブと同じです。
オフ

-ansi

ANSI C/C++規格に厳密に準拠しているダイアレクトを選択します。

オフ

-ansi_alias[-]

-ansi_aliasによってコンパイラは、次の点を前提にします。

  • 配列が外部からアクセスされません。
  • ポインタを非ポインタ型にキャストしません。また、その逆もしません。
  • 2つの異なるスカラ型のオブジェクトへの参照はエイリアス不可です。例えば、int型のオブジェクトはfloat型のオブジェクトと、またはfloat型のオブジェクトはdouble型のオブジェクトとエイリアスの設定はできません。

プログラムが上記の条件を満たす場合、-ansi_aliasフラグを設定することでプログラムの最適化が向上します。ただし、プログラムが上記の条件を1つでも満たさない場合、コンパイラは-ansi_aliasフラグを設定することで誤ったコードを生成する可能性があります。

オフ

-ax{i|M|K|W}
IA-32 のみ

指定したプロセッサ向けに専用のコード(iMKW)を生成し、かつ汎用性のある IA-32 コードも生成します。

  • i = Pentium® Pro プロセッサ、Pentium II プロセッサの命令
  • M = MMX® テクノロジの命令  
  • K = ストリーミング SIMD 拡張命令対応 Pentium III プロセッサ
  • W = ストリーミング SIMD 拡張命令 2 対応 Pentium 4 プロセッサ

オフ

-C 前処理済みのソース出力の中にコメントを書き込みます。
オフ
-c オブジェクト・ファイルが生成された後、コンパイルの処理を止めます。C/C++ のソースファイルまたは前処理済みのソースファイルのそれぞれについてコンパイラがオブジェクト・ファイルを生成します。同様に、アセンブリ・ファイルについてもアセンブラがオブジェクト・ファイルを生成します。
オフ
-c99[-] C プログラムの C99 サポートを有効 [無効] にします。
オン
-dM 前処理を行った後に有効なマクロ定義を出力します (-Eと使用)。 オフ
-Dname[=value] マクロ名(name)を定義し、そのマクロ名と指定された値(value)を関連付けます。#define 前処理ディレクティブと同じ働きをします。
オフ
-dryrun ドライバ・ツール・コマンドを表示し、ツールを実行しません。 オフ

-dynamic-linkerfilename

デフォルト以外の動的リンカ(filename)を選択します。

オフ

-E

C/C++ のソースファイルの前処理の後、コンパイルの処理を止め、その結果をstdoutに書き込みます。

オフ

-EP #lineディレクティブについては省いて、前処理の結果を標準出力に出力します。
オフ
-falias プログラムでエイリアシングを前提に処理します。 オン
-fcode-asm オプションのコードのコメント付きアセンブリ・ファイルを生成します。-Sが必要です。 オフ
-fno-alias プログラムでエイリアシングしないことを前提に処理します。 オフ
-ffnalias 関数内でのエイリアシングを前提に処理します。 オン
-fno-fnalias 関数内でエイリアシングしないことを前提に処理しますが、複数の呼び出しにわたる場合はエイリアシングを前提に処理します。 オフ
-fno-rtti RTTI サポートを無効にします。 オフ
-f[no]verbose-asm コンパイラのコメント付きアセンブリ・ファイルを生成します。 オン

-fnsplit[-]
Itanium ベース・システムのみ

関数分割を有効にします[無効にします]。デフォルトではオンです(-prof_useとともに用いる)。-prof_useを使用する際に関数分割を無効にするには、-fnsplit-も指定してください。

オフ

-fp
IA-32 のみ

汎用レジスタとしての EBP レジスタの使用を無効にします。

オフ

-fpic, -fPIC 位置に依存しないコードを生成します。 オフ
-fp_port
IA-32 のみ
代入&型キャスト時に浮動小数点の結果を丸めます。速度に多少影響します。 オフ
-fr32
Itanium ベース・システムのみ
浮動小数点レジスタのうち下位32個だけを使用します。 オフ
-fshort-enums 列挙型に必要なバイトを割り当てます。 オフ
-fsource-asm オプションのコードのコメント付きアセンブリ・ファイルを生成します。 -Sが必要です。 オフ
-fsyntax-only -syntax と同じです。 オフ
-ftz[-]
Itanium ベース・システムのみ
異常値の結果を0にフラッシュします。
オフ
-funsigned-char デフォルトの char 型を unsigned に変更します。 オフ
-funsigned-bitfields デフォルトのビットフィールド型を unsigned に変更します。 オフ
-g オブジェクト・コードの中にシンボリック・デバッグ情報を生成します。 ソースレベルでのデバッガがこの情報を使用します。
オフ
-H インクルード・ファイルの順番を出力して、コンパイルを継続します。 オフ
-help 各種コンパイラ・オプションの一覧を出力します。 オフ
-idirafterdir 2番目のインクルード・ファイルの検索先にディレクトリ(dir)を追加します( -I の後)。 オフ
-Idirectory インクルード・ファイルを探すときの、標準以外の directoryを指定します。  
オフ
-i_dynamic インテル提供のライブラリを動的にリンクします。 オフ
-inline_debug_info コールサイトのソース・ポジションをインライン化コードに割り当てる代わりに、インライン化コードのソース・ポジションを保存します。 オフ
-ip ファイルを1個コンパイルするときにプロシージャ間の最適化を有効にします。
オフ
-IPF_fma[-]
Itanium ベース・システムのみ
浮動小数点乗算と加算/減算の組み合わせを有効[無効]にします。
オフ
-IPF_fltacc[-]
Itanium ベース・システムのみ
浮動小数点の精度に影響する最適化を有効 [無効] にします。
オフ
-IPF_flt_eval_method0
Itanium ベース・システムのみ
プログラムにより指定された精度で浮動小数点オペランドが評価されます。
オフ
-IPF_fp_speculationmode
Itanium ベース・システムのみ

次のモード(mode条件で浮動小数点の推測を有効にします。

  • fast - 浮動小数点演算を推測します
  • safe - 安全な場合のみ推測します
  • strict - off と同じです
  • off - 浮動小数点演算の推測を無効にします
オフ
-ip_no_inlining -ipを指定してプロシージャ間の最適化が行われるときに、インライン化については無効にします。しかし、他のプロシージャ間の最適化には何の影響も与えません。
オフ
-ip_no_pinlining
IA-32 のみ
部分的なインライン展開を無効にします。-ip-ipoのいずれかが必要です。 オフ
-ipo 複数ファイルにわたるプロシージャ間の最適化を有効にします。
オフ
-ipo_c あとのリンク段階で使用できるマルチファイル・オブジェクト・ファイル( ipo_out.o )を生成します。
オフ
-ipo_obj -ipoとともに指定すると、実際のオブジェクト・ファイルが強制的に生成されます。
オフ
-ipo_S ipo_out.sという名前のマルチファイル・アセンブリ・ファイルを生成します。
オフ
-ivdep_parallel
Itanium ベース・システムのみ
このオプションは、IVDEP ディレクティブが指定されたループにループ・キャリー・メモリ依存が確実にないことを示します。
オフ
-Kc++ ソースファイルも、認識できないファイルも、すべて C のソースファイルとしてコンパイルします。

オン
(icpc/ecpcで使用)

-Knopic, -KNOPIC
Itanium ベース・システムのみ
位置に依存しないコードを生成しません。 オフ
-KPIC, -Kpic 位置に依存しないコードを生成します。 オフ(IA-32)
オン(Itanium ベース・

システム)

-Ldirectory directoryで指定したディレクトリを検索してライブラリを探すようリンカに命令します。  
オフ
-long_double
IA-32 のみ
long double データ型のデフォルト・サイズを64ビットから80ビットに変更します。
オフ
-M ソースファイルに含まれている#include行を基にして、ソースファイルごとにmakefileの依存行を生成します。 オフ
-march=cpu
IA-32 のみ
指定された cpu に対して排他的にコードを生成します。 cpu に指定できる値には次のものがあります。
  • pentiumpro - Pentium Pro プロセッサ、Pentium II プロセッサの命令
  • pentiumii - MMX命令
  • pentiumiii - ストリーミング SIMD 拡張命令
  • pentium4 - Pentium 4 命令
オフ
-mcpu=cpu 指定した cpu に合わせて最適化します。

IA-32の場合、cpu に指定できる値には次のものがあります。

  • pentium - Pentium プロセッサに合わせて最適化します。
  • pentiumpro - Pentium Pro プロセッサ、Pentium II プロセッサ、Pentium III プロセッサの各プロセッサに合わせて最適化します。
  • pentium4 - Pentium 4 プロセッサに合わせて最適化します(デフォルト)。
Itanium ベースのシステムの場合、cpu に指定できる値には次のものがあります。
  • itanium - Itanium プロセッサに合わせて最適化します。
  • itanium2 - Itanium 2 プロセッサに合わせて最適化します(デフォルト)。
オン

pentium
IA-32 の場合

itanium2
Itanium ベース・システムの場合

-MD 前処理およびコンパイルを行います。依存情報が含まれている出力ファイル(.d 拡張子)を生成します。 オフ
-MFfile

makefileの依存情報をfileに生成します。-M または -MM.を指定する必要があります。

オフ
-MG -Mと類似していますが、見つからないヘッダファイルを、生成したファイルとして処理します。 オフ
-MM -Mと類似していますが、システム・ヘッダ・ファイルをインクルードしません。 オフ
-MMD -MDと類似していますが、システム・ヘッダ・ファイルをインクルードしません。 オフ
-MX インテルwbツールで使用される情報を含む依存ファイル(.o.dep拡張子)を生成します。 オフ
-mp 浮動小数点演算について、できる限り ANSI C 標準と IEEE 754 標準に適合するようにします。 オフ
-mp1 浮動小数点の精度を上げます(速度に与える影響は-mpより低いです)。
オフ
-mrelax -relax をリンカに渡します。 オン
-mno-relax -relax をリンカに渡しません。 オフ
-mserialize-volatile
Itanium ベース・
システムのみ
volatileデータ・オブジェクトの参照に対して、制限されたメモリアクセスの順序を適用します。 オフ
-mno-serialize-volatile
Itanium ベース・システムのみ
揮発データ・オブジェクトの参照に対して、ランタイム時およびコンパイル時のメモリアクセスの順序を抑制する場合があります。特に、.rel/.acqコンプリータはロードおよびストアの参照で実行されません。 オフ
-nobss_init ゼロに初期化される変数を DATA セクションに格納します。ゼロに初期化される変数をBSSに置くのを禁止します(DATAを使用)。
オフ
-no_cpprt C++ ランタイム・ライブラリでリンクしません。 オフ
-nodefaultlibs リンク時に標準ライブラリを使用しません。  
-nolib_inline 標準ライブラリ関数のインライン展開を禁止します。
オフ
-nostartfiles リンク時に標準起動ファイルを使用しません。 オフ
-nostdlib リンク時に標準ライブラリと起動ファイルを使用しません。 オフ
-O IA-32システムの -O1 と同じです。Itanium ベース・システムの -O2 と同じです。 オフ
-O0 最適化を無効にします。
オフ
-O1 最適化を行います。速度について最適化します。Itanium コンパイラの場合、-O1 は、コードサイズを小さくするためにソフトウェアによるパイプライン化をオフにします。
オン
-O2 IA-32システムの -O1 と同じです。Itanium ベース・システムの-O と同じです。
オフ
-O3 -O2の内容に加え、もっと効果の高い最適化を実行しますが、コンパイル時間が長くなる場合があります。パフォーマンスに及ぼす影響はアプリケーションに依存します。パフォーマンスの向上が見られないアプリケーションもあります。
オフ

-Obn

コンパイラによるインライン展開を制御します。どの程度までインライン展開が行われるかは、次のようにnの値によって異なります。

  • 0:インライン化を無効にします。
  • 1__inline キーワードで宣言された関数のインライン化を有効にします(デフォルト)。C++ 言語に従ったインライン化も有効にします。
  • 2: どの関数についてもインライン化を有効にします。ただし、どの関数をインライン化するかはコンパイラが決めます。プロシージャ間の最適化が有効になり、-ip と同じ効果が得られます。

オン

-ofile

出力ファイルに付ける名前をfileに指定します。

オフ

-openmp OpenMP* ディレクティブに基づいてマルチ・スレッド・コードを生成する処理を、パラレライザに許可します。-openmpオプションは、最適化レベル-O2 (デフォルト)またはそれ以上で有効です。
オフ
-openmp_report{0|1|2} OpenMP パラレライザの診断レベルを制御します。
オン
-openmp_report1
-openmp_stubs シーケンシャル・モードによるOpenMP プログラムのコンパイルを有効にします。openmp ディレクティブは無視され、スタブOpenMPライブラリがリンクされます(シーケンシャル)。 オフ
-opt_report -opt_report_file が指定されている場合を除き、最適化レポートを作成し、stderr に送ります。 オフ
-opt_report_filefilename 最適化レポートを保持するfilename を指定します。このオプションが指定されれば、-opt_report を実行する必要はありません。 オフ
-opt_report_levellevel 出力の冗長レベル( level )を指定します。有効なレベル引数:
  • min
  • med
  • max

レベルが指定されていない場合、minがデフォルトで使用されます。

オフ
-opt_report_phasename レポートが生成されるコンパイル・フェーズ名(name)を指定します。複数のフェーズから出力を得るために同じコンパイルで複数回、オプションを使用できます。
有効な name 引数には次のものがあります。
  • ipo: プロシージャ間最適化
  • hlo: 高度な最適化
  • ilo: 中間言語スカラ最適化機構 (Intermediate Language Scalar Optimizer)
  • ecg: コード・ジェネレータ
  • omp: OpenMP*
  • all: すべてのフェーズ
オフ
-opt_report_routinesubstring

ルーチン部分文字列substring )を指定します。名前の一部に substring を含むすべてのルーチンからレポートを生成します。デフォルトでは、すべてのルーチンのレポートが生成されます。

オフ
-opt_report_help -opt_report_phase の可能なすべての設定を表示します。コンパイルは実行されません。 オフ
-P, -F C/C++ のソースファイルの前処理が済んだら、コンパイルの処理を止め、その結果をファイルに書き込みます。 このファイル名は、コンパイラのデフォルトのファイル命名規則に従って付けられます。
オフ
-parallel 安全に並列実行可能な並列ループを検出し、そのループに対するマルチスレッド・コードを自動的に生成します。 オフ
-par_report{0|1|2|3} 自動パラレライザの診断レベルを制御します。 レベルは、0、1、2、または3で制御されます。
  • -par_report0 = 診断情報を表示しません。
  • -par_report1 = 正常に自動並列化されたループを表示します。(デフォルト)
  • -par_report2 = 正常に自動並列化されたループおよび不正に自動並列化されたループを表示します。
  • -par_report3 = 2 と同じです。また、自動並列化を妨げる実証された依存および推測された依存についての追加情報を示します。
オフ
-par_threshold[n] 並列でのループの実行が効果的である可能性に基づいてループの自動並列化のしきい値を設定します(n=0 から 100)。このオプションは、コンパイル時に計算量が確定できないループに使用します。
  • -par_threshold0 - ループは、計算量に関わらず自動並列化を行います。
  • -par_threshold100 - ループは並列化実行が有効であることが確実な場合にのみ自動並列化されます。
オフ
-pc32
IA-32 のみ
内部FPU精度を24ビットの仮数に設定します。 オフ
-pc64
IA-32 のみ
内部FPU精度を53ビットの仮数に設定します。 オン
-pc80
IA-32 のみ
内部FPU精度を64ビットの仮数に設定します。 オフ
-prec_div
IA-32 のみ
浮動小数点除算から乗算へ変換する最適化処理を無効にします。浮動小数点除算の精度を上げます。
オフ
-prof_dir dirname プロファイル情報(*.dyn、*.dpi)を格納するディレクトリ( dirname )を指定します。
オフ
-prof_file filename プロファイル・サマリ・ファイルに付けるファイル名(filename)を指定します。
オフ
-prof_gen[x] プログラムをインストルメントしてインストルメント実行に備え、さらに静的プロファイル情報ファイル(.spi)も新たに生成します。x修飾子を付けると、補足情報が収集されます。
オフ
-prof_use 動的フィードバック情報を使用します。
オフ
-Qinstall dir コンパイラのインストール先のルートとしてdirを設定します。 オフ
-Qlocation,tool,path toolで指定したツールの所在として path を指定します。
オフ
-Qoption,tool,list コンパイルの一連の処理の中で、引数 list を、アセンブラやリンカなど別の tool に渡します。
オフ
-qp, -p, -pg UNIX* prof toolを使って関数のプロファイリングができるようにコンパイルとリンクを行います。 オフ
-rcd
IA-32 のみ
FPU の丸め制御の変更を無効にします。浮動小数点から整数への高速変換を行います。
オフ
-[no]restrict restrict指示子とともに指定すると、ポインタの一義化が有効 [無効] になります。 オフ
-S .s拡張子の付いたアセンブリ・ファイルを生成し、コンパイルを停止します。
オフ
-shared 共用オブジェクトを生成します。 オフ
-size_lp64
Itanium ベース・システムのみ
long型、ポインタ型のビットサイズは、64ビットを前提に処理します。 オフ
-sox[-]
IA-32 のみ
コンパイラのオプションとバージョン情報を実行ファイルに保存します[保存しません]。注: このオプションの目的は、Itanium ベース・システムでの互換性を得ることのみです。 オフ
-static 共用ライブラリとリンクしないようにします。 オフ
-std=c99 C プログラムのC99 サポートを有効にします。 オン
-syntax C/C++ のソースファイルおよび前処理済みのソースファイルの構文解析が済んだらコンパイラの処理を止めます。 つまり、プログラムの構文のチェックだけを行います。コードも出力ファイルも生成しません。警告とメッセージはstderrに出力されます。
オフ
-tpp1
Itanium ベース・システムのみ
Itanium プロセッサ向けに最適化します。 オフ
-tpp2
Itanium ベース・システムのみ
Itanium 2 プロセッサ向けに最適化します。生成されたコードは、Itanium プロセッサと互換性があります。 オン

-tpp5
IA-32 のみ

インテル Pentium プロセッサ向けに最適化します。

オフ

-tpp6
IA-32 のみ
インテル Pentium Pro プロセッサ、Pentium II プロセッサ、および Pentium III プロセッサ向けに最適化します。
オフ
-tpp7
IA-32 のみ
Pentium 4 およびインテル® Xeon™ プロセッサに有利に働くようにコードを調整します。
オン
-Uname

どのマクロnameについても定義できないようにします。これは、#undef という前処理ディレクティブと同じ働きをします。

オフ
-unroll0
Itanium ベース・システムのみ
ループのアンロールを有効にします。
オフ
-unroll[n]
IA-32 のみ

ループをアンロールする最大回数を設定します。nを省略すると、アンロールの適否をコンパイラが判断します。ループのアンロールを禁止するときは、n = 0にしてください。

オフ

-use_asm

アセンブラからオブジェクト・ファイルを生成します。

オフ

-use_msasm
IA-32 のみ

GNUスタイルではなく、Microsoft* MASMスタイルのインライン化アセンブリ・フォーマットを使用します。  

オフ

-u symbol

symbol が未定義のようにみせます。

オフ

-V

コンパイラのバージョン情報を表示します。

オフ

-v

ドライバ・ツール・コマンドおよび実行ツールを表示します。

 

-vec_report[n]
IA-32 のみ

ベクトライザの診断情報の分量を調整します。

  • n =0 診断情報なし
  • n =1 ベクトル化されたループを示す(デフォルト)         
  • n =2 ベクトル化ループ/非ベクトル化ループを示す
  • n =3 ベクトル化ループ/非ベクトル化ループと、データ依存性情報の禁止とについて示す
  • n =4 非ベクトル化ループを示す
  • n =5 非ベクトル化ループと、データの禁止とについて示す

オン
-vec_report1

-w 警告メッセージをまったく表示しません。 オフ

-Wall

すべての警告を有効にします。

オフ

-wn

診断機能の動作を調整します。

  • n =0 エラーを表示する(-wと同じ)
  • n =1 警告とエラーとを表示する(デフォルト)
  • n =2 リマーク、警告、エラーを表示する

オン
-w1

-wdL1[,L2,...]

L1からLNまでの診断を禁止します。

オフ
-weL1[,L2,...] L1からLNまでの診断結果の重要度をエラーに変更します。
オフ

-Werror

警告をエラーと見なします。

オフ

-wnn

何個エラーが出力されたらコンパイルを止めるかを指定します。 個数はnで指定します。

オン
-wn100

-wrL1[,L2,...] L1からLNまでの診断結果の重要度を警告に変更します。
オフ
-wwL1[,L2,...] L1からLNまでの診断結果の重要度を警告に変更します。
オフ

-Wl,o1[,o2,...]

リンカに渡されるo1o2、その他のオプションです。

オフ

-xtype

-xtypeに続くすべてのソースファイルは次のいずれであると認識されます。 

  • c - C ソースファイル
  • c++ - C++ ソースファイル
  • c-header - C ヘッダファイル
  • cpp-output - C 前処理済みファイル
  • assembler - アセンブリ・ファイル
  • assembler-with-cpp - 前処理の必要なアセンブリ・ファイル。
  • none - 認識を無効にし、ファイル拡張子へ戻します。

オフ

-X

インクルード・ファイルの検索先ディレクトリ・リストから標準ディレクトリを削除します。

オフ

-Xa 拡張ANSI Cダイアレクトを選択します。 オン
-Xc ANSI規格に厳密に準拠しているダイアレクトを選択します。 オフ
-x{i|M|K|W}
IA-32 のみ
指定したプロセッサでのみ動作するコードを生成します。iMKWのプロセッサ別コードで指定します。
  • i = Pentium Pro プロセッサ、Pentium II プロセッサの命令
  • M = MMX 命令
  • K = ストリーミング SIMD 拡張命令
  • W = Pentium 4 プロセッサの命令

オフ
-Xlinker val リンカに直接渡されるvalです。 オフ
-Zp{1|2|4|8|16} 構造体および共用体のアライメント境界を設定します。1バイト、2バイト、4バイト、8バイト、16バイトのいずれかになります。
オン
-Zp16