メインコンテンツ

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 バイトと見なします。