Arm Compiler for Embedded 6.23 のリリースノート
目次
1. リリース概要
この章では、Arm Compiler for Embedded 製品と Arm Compiler for Embedded 6.23 リリースの概要について説明します。
1.1 製品の説明
Arm Compiler for Embedded 6.23 は、ベアメタルソフトウェア、ファームウェア、およびリアルタイムオペレーティングシステム(RTOS) アプリケーションを開発するための、Arm の最新の組み込みC/C++コンパイルツールチェインです。
ツールチェインは、次の Arm 統合開発環境 (IDE) と互換性があります:
- Arm Development Studio
- Arm Keil MDK v6
強力な最適化手法と最適化されたライブラリを通して、Arm Compiler for Embedded は組み込みシステム開発者が挑戦的なパフォーマンス目標とメモリ制約を満たすことを可能にします。
Arm Compiler for Embedded は、家電、産業、医療、ネットワーク、鉄道、ストレージ、通信など、さまざまな業界のリーディングカンパニーで使用されています。 Armは、プロジェクトが以下の場合は、本リリースの代わりに、LTSおよび機能安全認証版のArm Compiler for Embedded FuSa を検討することを強く推奨します。
- 長期メンテナンス要件がある
- EN50128、IEC61508、IEC62304、ISO26262などの機能安全要件がある
- Automotive Enhanced プロセッサを使用している
Arm Compiler for Embedded または Armの統合開発環境(IDE)については、代理店にお問い合わせください。
1.2 リリースのハイライト
Arm Compiler for Embedded 6.23 は2024年10月現在の最新リリースです。
本リリースのキーとなるハイライトは以下の通りです:
- Armv9.6-Aアーキテクチャのベータサポート
- A-profileアーキテクチャの 2024 拡張機能のサポート
- 以下のプロセッサのサポート:
- Neoverse V3
- Neoverse N3
- Cortex-X925
- Cortex-A725
- チェックポインタ演算命令の自動生成のサポート
- コンパイラに指定されたターゲットオプションによって有効になるアーキテクチャ機能を出力するオプションのサポート
ライセンス条件に従い、Arm Compiler for Embedded 6.23 を使用して、以下のArm アーキテクチャおよびプロセッサ用のビルドが行えます:
Architecture | Processor Family | Standard Processors | Automotive Enhanced Processors |
Armv9.6-A[BETA] | - | - | - |
Armv9.5-AまでのArmv9-A | Neoverse | V3,V2 N3,N2 |
V3AE |
Cortex | X925 X4, X3, X2 A725, A715, A710, A510 A520, A510 |
A720AE, A520AE | |
Armv8.9-AまでのArmv8-A | Neoverse | V1 N1 E1 |
- |
Cortex |
X1, A17, A15, A12 |
A78AE, A76AE A65AE |
|
Armv7-A | Cortex | A17, A15, A12 A9, A8, A7, A5 |
- |
Armv8-R AArch64 | Cortex | R82 | R82AE |
Armv8-R | Cortex | R52+, R52 | - |
Armv7-R | Cortex | R8, R7, R5, R4F, R4 | - |
Armv8.1-MまでのArmv8-M | Cortex | M85 M55, M52 M35P, M33 M23 |
- |
STAR | STAR-MC1 | - | |
Armv7-M | Cortex | M7, M4, M3 | - |
SecurCore | SC300 | - | |
Armv6-M | Cortex | M1, M0, M0+ | - |
SecurCore | SC000 | - |
詳細については以下のドキュメントを参照してください:
- Arm Development Studioプロダクトページ
- Arm Keil MDK v6プロダクトページ
- Arm Compiler for Embedded User GuideのSupport level definitionsの章
1.3 含まれるコンポーネント
Arm Compiler for Embedded 6.23 に含まれるツールチェーンコンポーネントとさまざまな種類のドキュメントを一覧表示します。
Category | Component | Description |
ツールチェインコンポーネント | armclang | LLVMとClangテクノロジをベースとしたコンパイラおよび統合アセンブラ |
armar | ELFオブジェクトファイル群をまとめるアーカイバ | |
armlink | オブジェクトやライブラリをまとめ、実行可能形式を生成するリンカ | |
fromlef | イメージ変換ユーティリティ兼逆アセンブラ | |
Arm C libraries | 組込みシステム向けのランタイムサポートライブラリ | |
Arm C++ libraries | LLVM libc++プロジェクトベースのライブラリ | |
armasm | 非推奨となった古いArm アーキテクチャ専用の armasm-syntaxアセンブリコード用の旧アセンブラ。 新しいアセンブリファイルではarmclang統合アセンブラを使用 |
|
User documentation | User Guide | ツールチェインの使用を助けるサンプルとガイドを提供します |
Reference Guide | ツールチェインの設定に役立つ情報を提供します | |
Arm C and C++ Libraries and Floating-Point Support User Guide |
Arm libraryと浮動小数点サポートに関する情報を提供します | |
Errors and Warnings Reference Guide | Arm Compiler for Embedded に含まれるツールがレポートする エラーやワーニングのリストを提供します |
|
Migration and Compatibility Guide | Arm Compiler 5 からArm Compiler for Embedded への 移行を支援する情報を提供します |
|
Release notes | これらのリリースノート |
- これらのコンポーネントは下記から入手できます。
コンポーネントタイプ | Source |
ツールチェインコンポーネント | Product Download Hub (PDH)から入手可能 |
ドキュメント | Arm Developerから利用可能 |
1.4 製品の品質
この製品は実動作環境での使用に適した最終リリース品質の製品です。
この製品内の一部の機能は最終リリース品質の機能ではない、またはサポートされていません。 該当する場合は、ドキュメント内に機能のステータスが明示的に記載されています。このような機能の詳細については、 Arm Compiler for Embedded User GuideのSupport level definitionsセクションを参照してください。
2. Arm Compiler for Embedded 6.23 をダウンロード
Arm Compiler for Embedded 6.23 は、所持されているライセンスと権限に応じて、スタンドアローン、Arm統合開発環境 (IDE) の一部として、または Success Kit の一部としてダウンロードが可能です。
このリリースをスタンドアローンでダウンロードするには、Arm Product Download Hub (PDH)の ACOMPEコードを使用します。 この製品コード内のツールチェーンダウンロードパッケージは、2024年10月時点で次の環境での使用を想定としています:
Host architecture | Host operating system | Toolchain download package | Host environment |
x86_64 | ・Red Hat Enterprise Linux 9 ・Red Hat Enterprise Linux 8 ・Red Hat Enterprise Linux 7 ・Ubuntu 24.04 LTS ・Ubuntu 22.04 LTS ・Ubuntu 20.04 LTS |
x86_64 Linux | ・スタンドアロン製品として使用 ・Arm Development Studioに統合 ・Keil MDK version 6に統合 |
・Windows Server 2022 ・Windows 11 ・Windows 10 |
x86_64 Windows | ・スタンドアロン製品として使用 ・Arm Development Studioに統合 ・Keil MDK version 6に統合 |
|
for Keil® MDK | ・Keil MDK version 6に統合 | ||
AArch64 | ・Ubuntu 24.04 LTS ・Ubuntu 22.04 LTS ・Ubuntu 20.04 LTS |
AArch64 Linux | ・スタンドアロン製品として使用 ・Keil MDK version 6に統合 |
✝ Arm は、このリリースに環境を追加する権利を留保します。環境はリリースによって異なる場合があります。
以下の制限が適用されます:
- Linuxホストプラットフォームに必要なglibcの最小バージョンは以下の通りです。
-
- x86_64 ホストプラットフォームの場合は 2.15
- AArch64 ホストプラットフォーム場合は 2.17
-
- ツールチェインを Arm Development Studio のインストールディレクトリに直接インストールしないでください。
- Keil MDK version 6内の µVision で使用するには、ツールチェインを µVision のインストールディレクトリの ARMサブディレクトリにインストールする必要があります。例えば、
C:\Keil_v5\ARM\ARMCompiler6.23
- 従来の Keil ライセンスでの使用は、x86_64 Windows ホストプラットフォームでのみ許可されます。
詳細については、以下を参照してください:
- ツールチェインのインストール手順についてはArm Compiler for Embedded User GuideのSystem requirements and installationの章を参照してください。
- ツールチェインを Arm Development Studio に統合する手順については、 Arm Development Studio Getting Started Guideの Register a compiler toolchainの章を参照してください。
- ツールチェーンを Arm Keil MDK v6に統合する手順については、 Arm Keil Studio Visual Studio Code Extensions User Guideを参照してください。
- User-based ライセンス(UBL)を使用するようにツールチェインを構成する手順については、 User-based Licensing User Guideを参照してください。
- µVision User's GuideのManage Arm Compiler Versionsの章を参照してください。
3. 以前のリリースとの違い
以下に、Arm Compiler for Embedded 6.23 シリーズのリリース日付を示します:
- 6.23 (2024年10月にリリースされました)
以下に、以前のリリースのArm Compiler for Embedded 6.22 との違いを示します。
この章の範囲に関する情報については、Does Arm document all known issues that affect each Arm Compiler release? の記事を参照してください。
以下の情報には、技術的な不正確さや誤植が含まれる場合があります。
それぞれの変更点には、ユニークな識別子SDCOMP-が割り振られています。
もしArmへこのリリースノート内の特定の問題について連絡が必要な場合、適切な識別子を通知してください。
3.1 一般的な変更
- [SDCOMP-67423]コンパイラに指定されたターゲットオプションによって有効になっているアーキテクチャ機能を印刷するための --print-enabled-extensionsオプションのサポートが追加されました。
詳細については、Reference Guideの --print-enabled-extensions セクションを参照してください。 - [SDCOMP-67398]以前は、-march=<name> でコンパイルする場合 (<name>は Armv9-A 以降のターゲットを指定します)、 コンパイラは Realm Management Extension (RME) Memory Encryption Contexts feature (FEAT_MEC) を有効にしていました。 コンパイラは、<name> が Armv9.2-A 以降のターゲットを指定する場合にのみ FEAT_MEC を有効にするようになりました。
- [SDCOMP-67153]以前は、-march=<name> または -mcpu=<name> オプションを使用し、 +fpmr アーキテクチャ機能修飾子を使用せずに AArch64 状態用にコンパイルすると、 コンパイラと統合アセンブラは、アクセスする特殊レジスタとしてFloating-point Mode Register (FPMR) を 指定する MRS または MSR 命令に対してエラーを報告していました。
これは下記のように変更されました: - コンパイラと統合アセンブラは、アクセスする特殊レジスタとして FPMR を指定する MRS または MSR 命令に対してエラーをリポートしなくなりました。
- コンパイラと統合アセンブラは、+fpmr アーキテクチャ機能修飾子を指定する -march=<name> または -mcpu=<name> オプションを使用してコンパイルするときに、次のいずれかのエラーをリポートするようになりました:
- unsupported argument '<name>+fpmr' to option '-march='
- unsupported argument '<name>+fpmr' to option '-mcpu='
- [SDCOMP-66891] Checked Pointer Arithmetic 命令 (FEAT_CPA) を有効にするターゲットオプションを使用してコンパイルする場合、 チェック ポインタ演算命令の自動生成のサポートが追加されました。
- [SDCOMP-66170]下記のA-profileアーキテクチャのサポートが変更されました。
アーキテクチャ 状態 -march=<name> オプション 以前のサポートレベル 新しいサポートレベル Armv9.6-A AArch64 sarmv9.6-a 未サポート Beta Armv9.6-A AArch32 sarmv9.6-a 未サポート Beta - [SDCOMP-66018] AArch64 状態の以下のA-プロファイル機能のサポートが変更されました:
機能識別子 機能の説明 -march / -mcpu +<feature> option(s) 以前のサポートレベル 新しいサポートレベル FEAT_CMPBR 比較と分岐命令 cmpbr 未サポート Beta FEAT_F8F16MM FP8 から半精度行列乗算 f8f16mm 未サポート Beta FEAT_F8F32MM FP8 から単精度行列乗算 f8f32mm 未サポート Beta FEAT_FPRCVT スカラー FP レジスタの浮動小数点数から整数への変換 fprcvt 未サポート Beta FEAT_LSFE 大規模システムフロート拡張 lsfe 未サポート Beta FEAT_LSUI 非特権ロードストア lsui 未サポート Beta FEAT_OCCMO 外部キャッシュ可能キャッシュのメンテナンス操作 occmo 未サポート Beta FEAT_PCDPHINT プロデューサー・コンシューマーデータ配置のヒント pcdphint 未サポート Beta FEAT_PoPs 物理ストレージのポイント pops 未サポート Beta FEAT_RME_GPC3 Realm Management Extension (RME) グラニュール保護チェック 3 拡張 rme-gpc3 未サポート Beta FEAT_SME2 Scalable Matrix Extension version2 sme2 Alpha サポート FEAT_SME2p1 Scalable Matrix Extension version2.1 sme2p1 Alpha サポート FEAT_SME2p2 Scalable Matrix Extension version2.2 sme2p2 未サポート Beta FEAT_SME_B16B16 非拡張BFloat16 から BFloat16のSME ZA-targeting演算 sme-b16b16 未サポート サポート FEAT_SSVE_AES Streaming Scalable Vector Extensions(SVE) モードの高度暗号化標準と 128-bit polynomial multiply long命令 ssve-aes 未サポート Beta FEAT_SSVE_F8F16MM Streaming SVE FP8から半精度行列乗算へ ssve-f8f16mm 未サポート Beta FEAT_SSVE_F8F32MM Streaming SVE FP8から単精度行列乗算へ ssve-f8f32mm 未サポート Beta FEAT_SVE2p1 Scalable Vector Extensions version 2.1 sve2p1 Beta サポート FEAT_SVE2p2 Scalable Vector Extensions version 2.2 sve2p2 未サポート Beta FEAT_SVE_AES2 SVE multi-vectorの高度暗号化標準と 128-bit polynomial multiply long命令 sve-aes2 未サポート Beta FEAT_SVE_B16B16 SVE2 および SME2 の非拡張 BFloat16 から BFloat16 への演算 sve-b16b16 未サポート サポート FEAT_SVE_BFSCALE BFloat16 Floating-Point指数調整 sve-bfscale Beta サポート FEAT_SVE_F16F32MM SVE 半精度から単精度への行列乗算 sve-f16f32mm Beta サポート
-march=armv9.6-a でコンパイルすると、 コンパイラはデフォルトでこれらの機能の以下のサブセットを有効にします。
- FEAT_CMPBR
- FEAT_FPRCVT
- FEAT_LSUI
- FEAT_OCCMO
- FEAT_SME2
- FEAT_SME2p1
- FEAT_SME2p2
- FEAT_SVE2p1
- FEAT_SVE2p2
より詳細については以下を参照してください:
- Reference Guide 内、-marchの章
- Reference Guide 内、-mcpuの章
- Arm Architecture Reference Manual およびReference Manual Supplement内の各機能に関連する項目
- [SDCOMP-65970] 以前は、Arm C++ ライブラリでは文字列を解析して浮動小数点の無限大と NaN を生成することができました。たとえば、Arm C++ ライブラリでは次の文字列の解析が可能でした:
String Parsed as Inf Floating-point infinity NaN Floating-point NaN
代わりに浮動小数点のinfinityとNaNを生成するには、-ffp-mode=full でコンパイルし、std::numeric_limits クラステンプレートの適切なメンバ関数を使用します。 - [SDCOMP-65848] 以前は、-march=armv8-r を使用して AArch32状態用にコンパイルすると、 コンパイラは Cortex-R52 ターゲット用に最適化されたコードを生成しました。 また、デフォルトの -mfpu=<name> オプションは -mfpu=neon-fp-armv8 に設定されていました。 この動作は下記のように変更されました。
- コンパイラは、Cortex-R52 ターゲット用に最適化されたコードを生成しなくなりました。
- デフォルトの -mfpu=<name> オプションが -mfpu=fpv5-sp-d16 に設定されました。
- [SDCOMP-65776]コンパイラは、最大許容サイズである約2GBより大きい翻訳単位に対して、誤ってエラーをリポートしない可能性がありました。 コンパイラは、次のエラーのいずれかをリポートするようになりました:
- file '<filename>' is too large for Clang to process
- translation unit is too large for Clang to process: ran out of source locations
- [SDCOMP-65746] Arm A-profile A64命令セットアーキテクチャの バージョン 2024-06 では、 次の FEAT_PAuth_LR命令のレジスタバリアントのニーモニックが変更されました:
以前のニーモニック 新しいニーモニック AUTIASPPC AUTIASPPCR AUTIBSPPC AUTIBSPPCR RETAASPPC RETAASPPCR RETABSPPC RETABSPPCR
詳細については、Arm Aprofile A64 Instruction Set Architecture のバージョン 2024-06 の Base instructionsの章をご参照ください。 - [SDCOMP-65617] 以前は、AArch64 状態用のコンパイルの場合、SP と PC を多様化子として使用して LR の署名を可能にするポインタ認証命令 (FEAT_PAuth_LR) を有効にするターゲットオプション -mbranch-protection=standard は -mbranch-protection=bti+pac-ret と同等でした。
この動作は変更されました。
-mbranch-protection=standard オプションは、 -mbranch-protection=bti+pac-ret+pc と同等になりました。
以前の動作を復元するには、FEAT_PAuth_LR を有効にするターゲットオプションを使用してコンパイルする場合、 -mbranch-protection=standard ではなく -mbranch-protection=bti+pac-ret を使用してコンパイルします。
詳細については、Reference Guideの -mbranch-protection の章をご参照ください。 - [SDCOMP-65457] Cortex-X925プロセッサのサポートが追加されました。
Cortex-X925をターゲットにするには、以下のarmclangオプションのいずれかを使用してください:
暗号化拡張 オプション あり --target=aarch64-arm-none-eabi -mcpu=cortex-x925+crypto+sve2-aes+sve2-sha3+sve2-sm4 なし --target=aarch64-arm-none-eabi -mcpu=cortex-x925 - [SDCOMP-65456] Cortex-A725プロセッサのサポートが追加されました。
Cortex-A725をターゲットにするには、以下のarmclangオプションのいずれかを使用してください:
暗号化拡張 オプション あり --target=aarch64-arm-none-eabi -mcpu=cortex-a725+crypto+sve2-aes+sve2-sha3+sve2-sm4 なし --target=aarch64-arm-none-eabi -mcpu=cortex-a725 - [SDCOMP-65350] Neoverse N3プロセッサのサポートが追加されました。
Neoverse N3をターゲットにするには、以下のarmclangオプションのいずれかを使用してください:
暗号化拡張 オプション あり --target=aarch64-arm-none-eabi -mcpu=neoverse-n3+crypto+sve2-aes+sve2-sha3+sve2-sm4 なし --target=aarch64-arm-none-eabi -mcpu=neoverse-n3 - [SDCOMP-63482] 以前は、B が 8 ビットアラインに揃えられ、B のサイズが 8、16、32、または 64 ビットの場合にのみ、 コンパイラはstructのビットフィールドメンバB への C++ 構造化バインディングのデバッグ情報を生成していました。 この動作は変更されました。コンパイラは、structのすべてのビットフィールドメンバへの C++ 構造化バインディングのデバッグ情報を生成するようになりました。
- [SDCOMP-58939] Neoverse V3プロセッサのサポートが追加されました。
Neoverse V3をターゲットにするには、以下のarmclangオプションのいずれかを使用してください:
暗号化拡張 オプション あり --target=aarch64-arm-none-eabi -mcpu=neoverse-v3+crypto+sve2-aes+sve2-sha3+sve2-sm4 なし --target=aarch64-arm-none-eabi -mcpu=neoverse-v3
3.2 不具合の修正
このセクションには、Arm Compiler for Embedded の本リリースで行われた不具合の修正に関する情報が含まれています。 ツールチェーンの特定のコンポーネントの不具合の修正にそれぞれ重点を置いたサブセクションが含まれています。
3.2.1 Compiler and integrated assembler, armclang
このセクションには、コンパイラおよび統合アセンブラである armclang で行われた不具合の修正のリストが含まれています。
- [SDCOMP-67544]AArch32 状態用にコンパイルする場合、コンパイラは単精度浮動小数点型の volatile 変数に対して誤ったコードを生成する可能性がありました。
- [SDCOMP-67194]-moutline を指定してコンパイルする場合、または -mno-outline を指定せずに -Oz を指定してコンパイルする場合、コンパイラはアウトライン関数に対して誤ったコードを生成する可能性がありました。
- [SDCOMP-67150]Armv9.5-Aターゲット用にコンパイルする場合、コンパイラと統合アセンブラは、デフォルトで次のアーキテクチャ機能を有効にできませんでした。
機能識別子 機能の説明 -march=<name>/-mcpu=<name> +<feature> option(s) FEAT_FAMINMAX 最大絶対値と最小絶対値の命令 faminmax FEAT_LUT ルックアップテーブル命令 lut - [SDCOMP-67120]AArch32状態用にコンパイルする場合、-fno-omit-frame-pointer を使用せず、 -mframe-chain=aapcs または -mframe-chain=aapcs+leaf を使用すると、 インラインアセンブラは、フレームポインターレジスタ R11 をそのclobber listに含まれる インラインアセンブリの状態に対して、次のワーニングを誤ってリポートできまていせんでした。
- inline asm clobber list contains reserved registers: R11
- [SDCOMP-66787] -mfloat-abi=hard を指定して、メイン拡張機能を備えた Armv8-M ターゲットでコンパイルすると、 コンパイラは誤って、セキュア関数から呼び出される非セキュア関数によって浮動小数点ユニットが使用される可能性があることを示さないコードを生成する可能性がありました。
- [SDCOMP-66328]AArch64状態用にコンパイルする場合、戻りアドレスの署名の 2 番目の多様化子としてプログラムカウンターを使用して ポインター認証分岐保護を有効にする -mbranch-protection=<protection> オプションを使用すると、 コンパイラーは関数に対して誤った C++ 例外アンワインド情報と誤ったデバッグ情報を生成する可能性がありました。
- [SDCOMP-65997]AArch64 状態用にアセンブルする場合、インライン アセンブラと統合アセンブラは、 アクセスする特殊レジスタとして TRBMPAM_EL1 を指定する MRS または MSR 命令に対して、次のいずれかのエラーを誤ってリポートしていました:
- expected readable system register
- expected writable system register or pstate
- [SDCOMP-65607]コンパイラは、<arm_sve.h> システム ヘッダーで定義されている次の形式の Scalable Vector Extension version 2(SVE2) 組み込み関数に対して誤ったコードを生成する可能性がありました:
- svwhilegt_*()
- svwhilege_*()
- [SDCOMP-65592] Scalable Matrix Extension feature(FEAT_SME) を有効にし、Scalable Vector Extension feature(FEAT_SVE) を有効にしない ターゲット オプションを使用してコンパイルすると、コンパイラは、ストリーミング モードで実行されていると注釈が付けられていない関数に対して、 Scalable Vector Extension(SVE) 命令を誤って生成する可能性がありました。
ストリーミング モードの詳細については、Controlling the use of streaming mode section of the Arm C Language Extensions (ACLE) をご参照ください。 - [SDCOMP-65564]コンパイラは、<arm_sve.h< システムヘッダーで定義されている次の Scalable Vector Extension(SVE) 組み込み関数に対して 誤ったコードを生成する可能性がありました:
- svqadd[_n_s8]()
- svqadd[_s8]()
- svqsub[_n_s8]()
- svqsub[_s8]()
- [SDCOMP-65460]コンパイラと統合アセンブラは、次のアーキテクチャ機能に必要なすべての依存関係を暗黙的に有効にできませんでした
機能識別子 機能の説明 FEAT_FP8 FP8命令用の Arm FP8フォーマット E5M2 および E4M3 FEAT_FP8DOT2 FP8 から半精度 2-way dot積命令 FEAT_FP8DOT4 FP8 から単精度 4-way dot積命令 FEAT_FP8FMA FP8から半精度および単精度の積和演算命令 FEAT_SME_F8F16 SME2 FP8 から半精度の積和、ドット積、外積命令 FEAT_SSVE_FP8DOT2 Streaming SVE モードでの SVE2 FP8 から半精度 2-way dot積命令 FEAT_SSVE_FP8DOT4 Streaming SVE モードでの SVE2 FP8 から単精度 4-way dot積命令 - 最大絶対値と最小絶対値の命令 (FEAT_FAMINMAX).
- ルックアップテーブル命令(FEAT_LUT).
- [SDCOMP-65418]AArch32状態用にコンパイルする場合、-fno-omit-frame-pointer を使用せず、-mframe-chain=aapcs または -mframe-chain=aapcs+leaf を使用すると、コンパイラはフレームポインタレジスタ R11 を誤って破損するコードを生成する可能性がありました。
- [SDCOMP-65243]インラインアセンブラと統合アセンブラは、無効な述語パターンを指定するScalable Vector Extension(SVE) 命令のエラーを誤ってレポートしませんでした。 インラインアセンブラと統合アセンブラは、次のエラーをレポートするようになりました。
- invalid operand for instruction
- [SDCOMP-65172]-gdwarf-2 または -gdwarf-3 を使用してコンパイルすると、 コンパイラはビットフィールドに対して誤ったデバッグ情報を生成する可能性がありました。
- [SDCOMP-65141]ビッグエンディアンターゲット用にアセンブルする場合、インラインアセンブラと統合アセンブラは、 同じリテラル値を 32ビットレジスタと 64ビットレジスタの組み合わせにロードする LDR 命令のシーケンスに対して誤ったコードを生成していました。
- [SDCOMP-65113] AArch64状態用にアセンブルする場合、-march=<name> または -mcpu=<name> オプションを使用して、 デフォルトで下記のアーキテクチャ機能 F のいずれかを有効にし、+no<feature> 修飾子を使用して F を無効にすると、インラインアセンブラと統合アセンブラは誤って F を無効にできませんでした。
機能識別子 機能の説明 -march=<name>/-mcpu=<name> +no<feature> option(s) FEAT_FlagM 条件フラグ操作命令 +noflagm FEAT_SB 投機バリア +nosb FEAT_SPECRES 投機制限命令 +nopredres FEAT_SSBS 投機的ストアバイパスセーフ +nossbs
- [SDCOMP-65094]-fno-optimize-sibling-calls を使用せず、Pointer Authentication Code(PAC) 保護を有効にする -mbranch-protection=<protection> オプションを使用し、メイン拡張機能を備えた Armv8.1-M ターゲットに対してコンパイルすると、 名前付きレジスタ変数に R12 を使用する関数に対してコンパイラが誤ったコードを生成する可能性がありました。
- [SDCOMP-64877]異なる -mbranch-protection=<protection> オプションでコンパイルされたオブジェクトにLink-Time Optimization(LTO) を適用すると、 ポインタ認証を使用した分岐保護を有効にする -mbranch-protection=<protection> オプションでコンパイルされたオブジェクトに対して、 ポインタ認証を使用した分岐保護を有効にすることができませんでした。
- [SDCOMP-64829]Standardization of memory operations feature (FEAT_MOPS) を有効にするターゲットオプションを使用してコンパイルすると、 コンパイラがアーキテクチャ的にCONSTRAINED UNPREDICTABLEな命令を誤って生成する可能性がありました。
- [SDCOMP-64335]AArch64状態用にコンパイルする場合、および Large System Extensions feature(FEAT_LSE) を有効にするターゲットオプションを使用すると、 コンパイラは、アトミック交換操作のロック取得に誤って失敗するコードを生成する可能性がありました。
- [SDCOMP-64209]AArch32状態用にアセンブルする場合、統合アセンブラは、.fpu <fpu_name> ディレクティブを含むアセンブリ言語ソースファイルに対して、 次の致命的なエラーを誤ってレポートする可能性がありました:
- error in backend: Unknown FPU: <number>
- [SDCOMP-63913]RET および BR 命令の Straight-Line Speculation(SLS) に対する緩和策を有効にする -mharden-sls=<option> オプションを使用してコンパイルし、 -moutline を使用するか、-mno-outline なしで -Oz を使用すると、コンパイラが不正なコードを生成する可能性がありました。
- [SDCOMP-61486]C++11以降のソース言語モードでコンパイルすると、 コンパイラは式である noexcept(typeid(V)) に対して誤ったコードを生成していました。
3.2.2 Linker, armlink
- このセクションには、Linker, armlink で行われた不具合の修正のリストが含まれています。
- [SDCOMP-65517]2つの実行領域 A と B で、A が B より低いアドレスにある場合、 リンカーは A の名前が常に B の名前より字句的に前であると誤って想定していました。 その結果、リンカーが誤ったコールグラフまたはスタック使用情報を生成する可能性がありました。 この問題は修正され、リンカーは、A の名前が常に B の名前より字句的に前であると想定しなくなりました。
- [SDCOMP-64999] C++例外を有効にして AArch32状態でコンパイルされた入力オブジェクトをリンクすると、 リンカーが誤った C++例外処理テーブルを生成する可能性がありました。
3.2.3 Libraries and system headers
- このセクションには、ツールチェーンに付属する C および C++ ライブラリとシステム ヘッダーで行われた不具合の修正のリストが含まれています。
- [SDCOMP-67219]qsort() 関数の microlib 実装により、実行時にスタック使用量が増加する可能性がありました。
- [SDCOMP-66090]AArch64状態の calloc(num, size) 関数の Arm C ライブラリ実装が正しくありませんでした。 その結果、下記のいずれかが発生する可能性がありました。
- calloc() は、num*size の値が(1<<64) 以上の場合に、誤って null ポインターを返すことができません。 これにより、予期しない実行時動作が発生する可能性がありました。
- calloc() は、num*size の値が (1<<32) 以上(1<<64) 未満の場合に、 誤って常に null ポインターを返しました。
- [SDCOMP-65871] ハードウェア浮動小数点サポートのない Armv8-R AArch64 ターゲット用にコンパイルする場合、 double 型の値または変数を含む浮動小数点演算または C ライブラリ関数呼び出しで誤った結果が返されたり、 FE_INEXACT 浮動小数点例外フラグが誤って設定されたりする可能性がありました。
- [SDCOMP-65388] Arm C ライブラリは、静的ストレージ期間を持つ C++ オブジェクトを含むマルチスレッドプログラムに対してスレッドセーフではありませんでした。
4. サポート
お客様からのフィードバックは我々にとって重要です。
製品のいかなる側面についても、障害報告と改善に関する提案を歓迎します。
不具合修正と機能拡張は、Arm Compiler for Embedded maintenance ポリシーに従って将来のリリースに対して検討されます。
プロジェクトに長期保守要件または機能安全要件がある場合、LTSおよび機能安全認証版のArm Compiler for Embedded FuSa の使用を検討してください。
フィードバックあるいはサポートが必要な問題について、お仕事あるいはアカデミックなE-mailアドレスを使用してお客様の製品の購入元にご連絡をいただくか、可能であればcaseをオープンしてください。
必要に応じて、以下の情報をお書き添えください:
- ツールからの--vsnの出力
- ツールが生成するエラーメッセージの完全な内容
- 問題を再現するのに必要なプリプロセス済みのソースコード、その他のファイル、コマンドラインオプション。プリプロセス済みのソースコードの生成方法はReference Guide 内の-E の章をご参照ください。
当社へのお問い合わせは、こちら。
6. リリースヒストリー
弊社FAQ<Arm Compiler for Embedded 製品のリリースヒストリー>をご参照ください。