このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
コンパイル ツールチェーン (静的解析)
静的解析用のソース コードのビルドに使用するコンパイラを指定します。
説明
この名前のオプションは、Polyspace Platform (Polyspace Test) ユーザー インターフェイスでのみ利用可能です。標準の Polyspace® ユーザー インターフェイスにおける同等のオプションについては、コンパイラ (-compiler)
を参照してください。
静的解析用のソース コードのビルドに使用するコンパイラを指定します。このオプションは静的解析にのみ適用されます。動的テストでは、オプション [コンパイル ツールチェーン (テスト)]
(Polyspace Test) を使用してビルド ツールチェーンを指定します。
Polyspace は組み込みアプリケーションの開発に使用されている最も一般的な諸コンパイラを完全にサポートしています。次の一覧を参照してください。これらのコンパイラでは、使用するコンパイラとターゲット プロセッサを指定するだけで静的解析を実行できます。その他のコンパイラでは、コンパイラ名として [generic]
を指定します。コンパイラ エラーが発生する場合は、コンパイラ固有の拡張を明示的に定義してエラーを回避します。
オプションの設定
以下のいずれかの方法を使用してオプションを設定します。
Polyspace Platform ユーザー インターフェイス (デスクトップ製品のみ) — プロジェクト構成の [ビルド] タブで [ターゲットおよびコンパイラ] を選択してから、このオプションの値を選択します。
コマンド ラインとオプション ファイル — オプション
-compiler
を使用します。コマンド ライン情報を参照してください。
このオプションを使用する理由
Polyspace はこの情報を使用して、C/C++ 規格には含まれていなくても、言語拡張に含まれる構文を解釈します。
たとえば、このオプションを使用すると、sfr
、sbit
、bit
などの追加の言語キーワードを使用できます。コンパイラを指定しない場合、これらの追加のキーワードが Polyspace 解析中にコンパイル エラーの原因になる可能性があります。
静的解析時に、Polyspace はコンパイルを行うために実際にコンパイラを呼び出すことはしません。特に以下に注意してください。
Polyspace 解析では、コンパイラ フラグを直接指定できません。コンパイラ フラグをエミュレートするには、ビルド コマンドをトレースするか同等の Polyspace 解析オプションを手動で指定します。ターゲット環境とコンパイラの動作の指定を参照してください。
Code Prover は、通常のコンパイラよりもリンク ポリシーが厳格です。たとえば、コンパイラで特定のコンパイラ オプションを使用して宣言の不一致を許可している場合、Code Prover でこのリンク ポリシーをエミュレートすることはできません。コンパイルおよびリンクのエラーのトラブルシューティング (Polyspace Code Prover)を参照してください。
設定
Polyspace は、GCC、Clang、および Visual Studio® コンパイラをネイティブにサポートしています。これらのコンパイラでは、使用可能な任意のターゲット プロセッサを選択できます。サポートされている他の専用コンパイラについては、Polyspace では特定のターゲット プロセッサをサポートしています。
既定値: generic
GCC コンパイラ
gnu3.4
GCC 3.4 構文の解析が可能です。
gnu4.6
GCC 4.6 構文の解析が可能です。
gnu4.7
GCC 4.7 構文の解析が可能です。
サポートされていない GCC 拡張については、制限を参照してください。
gnu4.8
GCC 4.8 構文の解析が可能です。
サポートされていない GCC 拡張については、制限を参照してください。
gnu4.9
GCC 4.9 構文の解析が可能です。
サポートされていない GCC 拡張については、制限を参照してください。
gnu5.x
GCC 5.x 構文の解析が可能です。使用可能な GCC 5.x リリースのリストについては、GCC リリースを参照してください。
サポートされていない GCC 拡張については、制限を参照してください。
gnu6.x
GCC 6.x 構文の解析が可能です。使用可能な GCC 6.x リリースのリストについては、GCC リリースを参照してください。
サポートされていない GCC 拡張については、制限を参照してください。
gnu7.x
GCC 7.x 構文の解析が可能です。使用可能な GCC 7.x リリースのリストについては、GCC リリースを参照してください。
サポートされていない GCC 拡張については、制限を参照してください。
gnu8.x
GCC 8.x 構文の解析が可能です。使用可能な GCC 8.x リリースのリストについては、GCC リリースを参照してください。
サポートされていない GCC 拡張については、制限を参照してください。
gnu9.x
GCC 9.x 構文の解析が可能です。使用可能な GCC 9.x リリースのリストについては、GCC リリースを参照してください。
サポートされていない GCC 拡張については、制限を参照してください。
gnu10.x
GCC 10.x 構文の解析が可能です。使用可能な GCC 10.x リリースのリストについては、GCC リリースを参照してください。
サポートされていない GCC 拡張については、制限を参照してください。
gnu11.x
GCC 11.x 構文の解析が可能です。使用可能な GCC 11.x リリースのリストについては、GCC リリースを参照してください。
サポートされていない GCC 拡張については、制限を参照してください。
gnu12.x
GCC 12.x 構文の解析が可能です。使用可能な GCC 12.x リリースのリストについては、GCC リリースを参照してください。
サポートされていない GCC 拡張については、制限を参照してください。
gnu13.x
GCC 13.x 構文の解析が可能です。使用可能な GCC 13.x リリースのリストについては、GCC リリースを参照してください。
サポートされていない GCC 拡張については、制限を参照してください。
Clang コンパイラ
clang3.x
解析では、以下のバージョンの Clang 構文を使用できます。
3.5.0、3.5.1、および 3.5.2
3.6.0、3.6.1、および 3.6.2
3.7.0 と 3.7.1
3.8.0 と 3.8.1
3.9.0 と 3.9.1
clang4.x
Clang 4.0.0 および 4.0.1 構文の解析が可能です。
clang5.x
Clang 5.0.0、5.0.1、および 5.0.2 構文の解析が可能です。
clang6.x
Clang 6.0.0 および 6.0.1 構文の解析が可能です。
clang7.x
Clang 7.0.0、7.0.1、および 7.1.0 構文の解析が可能です。
clang8.x
Clang 8.0.0 および 8.0.1 構文の解析が可能です。
clang9.x
Clang 9.0.0 および 9.0.1 構文の解析が可能です。
clang10.x
Clang 10.0.0 および 10.0.1 構文の解析が可能です。
clang11.x
Clang 11.0.0、11.0.1、および 11.1.0 構文の解析が可能です。
clang12.x
Clang 12.0.0 および 12.0.1 構文の解析が可能です。
clang13.x
Clang 13.0.0 および 13.0.1 構文の解析が可能です。
clang14.x
Clang 14 構文の解析が可能です。
clang15.x
Clang 15 構文の解析が可能です。
clang16.x
Clang 16 構文の解析が可能です。
Visual Studio コンパイラ
visual9.0
Microsoft® Visual C++® 2008 構文の解析が可能です。
visual10.0
Microsoft Visual C++ 2010 構文の解析が可能です。
visual11.0
Microsoft Visual C++ 2012 構文の解析が可能です。
visual12.0
Microsoft Visual C++ 2013 構文の解析が可能です。
visual14.0
Microsoft Visual C++ 2015 構文の解析が可能です (Microsoft Visual Studio Update 2 をサポートしています)。
visual15.x
Microsoft Visual C++ 2017 構文の解析が可能です。使用可能な Microsoft Visual Studio 2017 バージョンのリストについては、Visual Studio 2017 リリース ノート履歴を参照してください。
visual16.x
Microsoft Visual C++ 2019 構文の解析が可能です。使用可能な Microsoft Visual Studio 2019 バージョンのリストについては、Visual Studio 2019 リリース ノート履歴を参照してください。
visual17.x
Microsoft Visual C++ 2022 構文の解析が可能です。使用可能な Microsoft Visual Studio 2022 バージョンのリストについては、Visual Studio 2022 リリース ノート履歴を参照してください。
その他のコンパイラ
armcc - arm
ARM® v5 コンパイラに関連する非 ANSI® C 構文およびセマンティクスの解析が可能です。
ARM v5 コンパイラ (-compiler armcc)
を参照してください。armclang - arm
ARM v6 コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
ARM v6 コンパイラ (-compiler armclang)
を参照してください。codewarrior - s12z
、codewarrior - powerpc
NXP CodeWarrior® コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
cosmic - s12z
Cosmic コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
Cosmic コンパイラ (-compiler cosmic)
を参照してください。diab - *
Wind River® Diab コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
Diab コンパイラ (-compiler diab)
を参照してください。generic
標準の構文のみが解析されます。
言語規格は、次のオプションの選択によって決まります。
規格を明示的に指定しない場合、規格は選択したコンパイラに依存します。
greenhills - *
Green Hills® コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
Green Hills コンパイラ (-compiler greenhills)
を参照してください。iar
IAR Systems (www.iar.com) のコンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
iar-ew - *
IAR Embedded Workbench コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
intel - x86_64
Intel® C++ Compiler Classic (icc/icl) コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
Intel C++ Compiler Classic (icc/icl) (-compiler intel)
を参照してください。keil
ARM (www.keil.com) の Keil™ 製品に関連する 非 ANSI C 構文およびセマンティクスの解析が可能です。
microchip
MPLAB XC8 C コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
MPLAB XC8 C コンパイラ (-compiler microchip)
を参照してください。renesas - *
Renesas® コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
Renesas コンパイラ (-compiler renesas)
を参照してください。tasking - *
TASKING コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
TASKING コンパイラ (-compiler tasking)
を参照してください。ti - *
Texas Instruments® コンパイラに関連する非 ANSI C 構文およびセマンティクスの解析が可能です。
Texas Instruments コンパイラ (-compiler ti)
を参照してください。
ヒント
コンパイラの仕様によって、多くのコンパイラ固有のマクロの値が決定されます。Polyspace で特定のマクロがどのように定義されるかを確認するには、オプション
-dump-preprocessing-info
を使用します。マクロ定義をオーバーライドするには、オプション
[プリプロセッサ定義] (-D)
を使用します。マクロの定義を解除するには、オプション
[無効なプリプロセッサ定義] (-U)
を使用します。
Visual Studio コンパイラを使用する場合、
long long
を 64 ビットに設定してください。プロセッサの詳細
を参照してください。コマンド ラインでlong long
を 64 ビットに設定するには、オプション引数-long-long-is-64bits
を使用します。オプション
[JSF AV C++ ルールのチェック] (-jsf-coding-rules)
を使用する場合、コンパイラgeneric
を選択します。別のコンパイラを使用すると、Polyspace では、ISO 規格への準拠を必要とする JSF® コーディング ルールをチェックできません。たとえば、次の AV ルール 8 です。"すべてのコードは ISO/IEC 14882:2002(E) 標準 C++ に準拠する"
制限
GNU コンパイラ
Polyspace では GNU コンパイラの特定の機能がサポートされません。
GNU® コンパイラ version 4.7 以降:
入れ子関数。
たとえば、以下では関数
bar
は関数foo
に入れ子になっています。int foo (int a, int b) { int bar (int c) { return c * c; } return bar (a) + bar (b); }
1 つのオペランドで値が一様なベクトルの省略表記を使用する、ベクトル型の二項演算。
たとえば、加算演算
2+a
では、{2,2,2,2} の省略表記として 2 を使用しています。typedef int v4si __attribute__ ((vector_size (16))); v4si res, a = {1,2,3,4}; res = 2 + a; /* means {2,2,2,2} + a */
関数パラメーターの事前宣言。
たとえば、以下ではパラメーター
len
が事前宣言されています。void func (int len; char data[len][len], int len) { /* … */ }
複素整数データ型。
ただし、複素数の浮動小数点データ型はサポートされています。
初期化リストを使用したフレキシブル配列メンバーをもつ構造体の初期化。
たとえば、構造体
S
はフレキシブル配列メンバーtab
をもちます。S
型の変数は初期化リストで直接初期化されます。たとえば、struct S { int x; int tab[]; /* flexible array member - not supported */ }; struct S s = { 0, 1, 2} ;
s.tab[1]
をデリファレンスすると、解析中に警告が表示され、結果にレッド チェックが表示されます。128 ビット変数。
Polyspace ではこのデータ型を意味的に解析できません。Bug Finder では 128 ビット データ型を使用できますが、Code Prover でそのようなデータ型 (たとえば、GCC 拡張の
__float128
) を使用した場合、コンパイル エラーが表示されます。
GNU コンパイラ Version 7.x:
型名
_FloatN
および_FloatNx
は意味的にサポートされていません。解析では、これらをfloat
、double
、またはlong double
型として扱います。1.2f123
や2.3F64x
など、接尾辞fN
、FN
、またはfNx
を使用する_FloatN
または_FloatNx
型の定数はサポートされていません。
Visual Studio コンパイラ
Polyspace では Visual Studio コンパイラの特定の機能がサポートされません。
C++ Accelerated Massive Parallelism (AMP)。
C++ AMP は、Visual Studio の機能で、特定のターゲットの特定の種類のデータ並列ハードウェアに対して C++ コードの実行速度を上げます。通常、
restrict
キーワードを使用してこの機能を有効にします。void Buffer() restrict(amp) { ... }
__assume
ステートメント。通常、
__assume
は false である条件と一緒に使用します。このステートメントは、オプティマイザーがそれ以降の条件を true と仮定しなければならないことを示します。Code Prover では、この矛盾を解決できません。次のエラーが表示されます。Asked for compulsory presence of absent entity : assert
C++ 用マネージ拡張 (.NET Framework に必要)、またはその後継となる C++/CLI (共通言語基盤用に変更された C++)
__declspec
キーワードと属性 (noreturn
、nothrow
、selectany
、およびthread
以外)。
Polyspace システム ヘッダー
コンパイラ ヘッダーへのパスを指定しないと、コンパイラでコードがコンパイルされる場合でも、Polyspace では専用のステム ヘッダーが使用され、プロジェクトがコンパイルされない可能性があります。
Polyspace がコンパイラのヘッダー ファイルを使用するようにするには、polyspace-configure
を実行するか、またはコンパイラ ヘッダー ファイルへのパスを手動で指定してください。Polyspace 解析への標準ライブラリ ヘッダーの指定を参照してください。
コマンド ライン情報
パラメーター: -compiler |
値: armcc | armclang | clang3.x | clang4.x | clang5.x | clang6.x | clang7.x | clang8.x | clang9.x | clang10.x | clang11.x | clang12.x | clang13.x | codewarrior | cosmic | diab | generic | gnu3.4 | gnu4.6 | gnu4.7 | gnu4.8 | gnu4.9 | gnu5.x | gnu6.x | gnu7.x | gnu8.x | gnu9.x | gnu10.x | gnu11.x | gnu12.x | greenhills | iar | iar-ew | intel | keil | microchip | renesas | tasking | ti | visual10.0 | visual11.0 | visual12.0 | visual14.0 | visual15.x | visual16.x | visual9.0 |
既定値: generic |
例 1 (Bug Finder): polyspace-bug-finder -lang c -sources |
例 2 (Bug Finder): polyspace-bug-finder -lang cpp -sources |
例 1 (Code Prover): polyspace-code-prover -lang c -sources |
例 2 (Code Prover): polyspace-code-prover -lang cpp -sources |
例 1 (Bug Finder Server): polyspace-bug-finder-server -lang c -sources |
例 2 (Bug Finder Server): polyspace-bug-finder-server -lang cpp -sources |
例 1 (Code Prover Server): polyspace-code-prover-server -lang c -sources |
例 2 (Code Prover Server): polyspace-code-prover-server -lang cpp -sources |