Ошибки, связанные с компилятором Green Hills

Если вы выбираете greenhills для опции Compiler (-compiler), вы сталкиваетесь с этой проблемой.

Проблема

Во время анализа Polyspace® вы видите, что ошибка, связанная с векторными типами данных, характерными для Зеленых Выступов, предназначается для rh850. Например, вы видите ошибку, связанную с идентификатором __ev64_u16__.

Причина

При компиляции кода с помощью компилятора Green Hills с целевым rh850, чтобы включить инструкции по вектору одной инструкции несколько данных (SIMD), вы задаете два флага:

  • -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. В пользовательском интерфейсе можно ввести параметр командной строки в Other Поле (Polyspace Bug Finder), под Advanced Settings в панели Configuration.

  • -rh850_simd: Для вашего анализа Polyspace использовать

    -compiler-parameter -rh850_simd

  • -rh850_fpsimd: Для вашего анализа Polyspace использовать

    -compiler-parameter -rh850_fpsimd

    Примечание

    • __ev128_opaque__ 16 байтов, выровненных в Polyspace.

    • __ev256_f32__ 32 байта, выровненные в Polyspace.