Green Hills コンパイラに関連する Polyspace コンパイル エラーの修正
オプション [コンパイル ツールチェーン (静的解析)] に [greenhills] を選択すると、この問題が発生します。
問題
Polyspace® 解析中、Greenhills コンパイラ固有の拡張機能に関連するエラーが表示されます。たとえば、識別子 __ev64_u16__ など、Green Hills ターゲット [rh850] に固有のベクトル データ型に関連するエラーが原因で、解析が停止する場合があります。
解決法
Polyspace 解析のコンパイラ フラグの定義
ターゲットに [rh850] を指定した Green Hills® コンパイラを使用してコードをコンパイルする場合、Single Instruction Multiple Data (SIMD) ベクトル命令を有効にするために、次の 2 つのフラグを指定することがあります。
-rh850_simd:SIMD ベクトル命令をサポートする組み込み関数を有効にします。この関数はコンパイラ ヘッダー ファイルで定義します。以下のデータ型を使用可能です。__ev64_u16____ev64_s16____ev64_u32____ev64_s32____ev64_u64____ev64_s64____ev64_opaque____ev128_opaque__
-rh850_fpsimd:浮動小数点 SIMD ベクトル命令をサポートする組み込み関数を有効にします。この関数はコンパイラ ヘッダー ファイルで定義します。以下のデータ型を使用可能です。__ev128_f32____ev256_f32__
Polyspace 解析は、既定では SIMD サポートを有効にしません。Polyspace に対してコンパイラ フラグを指定しなければなりません。
Polyspace 解析で、コマンド ライン オプション -compiler-parameter を使用します。Polyspace Platform ユーザー インターフェイスでは、プロジェクト構成にコマンド ライン オプションを入力できます。それには、[静的解析] タブに移動して [詳細設定] ノードを選択し、Other フィールドにこのオプションを入力します。
-rh850_simd:Polyspace 解析には、以下を使用します。-compiler-parameter -rh850_simd
-rh850_fpsimd:Polyspace 解析には、以下を使用します。-compiler-parameter -rh850_fpsimd
メモ
__ev128_opaque__は Polyspace では 16 バイトにアライメントされます。__ev256_f32__は Polyspace では 32 バイトにアライメントされます。
特定の Polyspace オプションを指定した -os_dir のエミュレート
Green Hills コンパイラを使用するビルド コマンドから Polyspace プロジェクトを作成する場合、コンパイラ オプション -os_dir はプロジェクトに実装されません。-os_dir オプションをエミュレートするために、オプションのパス引数をインクルード フォルダーとして Polyspace プロジェクトに明示的に追加できます。
ネイティブ Windows 開発向けの Greenhills コンパイラ エミュレーションについてテクニカル サポートに問い合わせる
Polyspace は i386 ターゲットの組み込み構成をサポートしています。x86 Green Hills コンパイラがネイティブ Windows® 開発向けに構成されている場合は、Code Prover でコンパイル エラーが表示されるか、誤った解析結果が表示されることがあります。テクニカル サポートにお問い合わせください。
たとえば、Green Hills コンパイラでは long double のサイズを組み込みターゲットについては 12 バイトと見なしますが、ネイティブ Windows については 8 バイトと見なします。Polyspace では既定で 12 バイトと見なします。