Arm Compiler 6.12のリリースノート
目次
1. 紹介
これは、リリース時に提供されたリリースノートの最初のセットです。
リリースノートの最新版については、https://developer.arm.comをご参照ください。
Arm Compiler 6.12では次の機能が追加されました:
- Cortex-A65AE、Neoverse E1、Neoverse N1のサポート
- Armv8.5-Aのオプション機能であるメモリタギング拡張用組み込み関数のアルファサポート
- Armv8.5-Aのオプション機能であるメモリタギング拡張でのメモリタギングを伴うヒープ保護のサポート
- Armv8.5-Aのオプション機能であるメモリタギング拡張でのメモリタギングを伴うスタック保護のアルファサポート
- スタック保護機能のサポート
- グローバル名前付きレジスタ変数のサポート
Arm Compiler 6.12は、以下のように使用されることを意図しています:
- Arm Development Studioに組み込み使用
- Keil MDKに組み込み使用
- スタンドアロンでのツールチェインインストレーション
これら製品から少なくとも1つの適切なライセンスが利用可能である必要があります。
ライセンスの購入についてはinfo-arm@dts-insight.co.jpへご連絡ください。
フローティングライセンスをご使用の場合は、armlmdおよびlmgrdをversion 11.14.1.0以降にアップデートする必要があります。ARMでは、常にhttps://developer.arm.com/products/software-development-tools/license-management/downloadsから入手できる最新バージョンのライセンスサーバーソフトウェアを使用することをお勧めします。
EULA
Arm Compilerはコンパイラ独自のEULAをなくしました。Arm Compiler 6.12リリースでは、Arm Development Studioと他のArm製品で使用されている統一されたEULAを採用しています。
LLVM の再ライセンシング
Arm Compiler 6.12には、ユーザーコードにリンク可能なC++ライブラリ(libc ++、libc ++abi、libunwind) を含むLLVMプロジェクトのコンポーネントが含まれています。ライブラリに含まれるコードのライセンス条項は、LLVMの再ライセンスの一環として、Apache 2.0 license with LLVM exceptionsに変更されました。新しいライセンス(https://llvm.org/LICENSE.txt)の条件の下であなたの義務をチェックするべきです。 LLVMの再ライセンスの詳細については、http://www.llvm.org/foundation/relicensing/を参照してください。
1.1 Arm Compiler 6 の構成
Arm Compiler 6は、Arm Compiler 5の後継であり、以下にリストされたコンポーネントを含みます。以前のプロジェクトからプロジェクトを移行するための情報は、製品ドキュメンテーション内のMigration and Compatibility Guideをご覧ください。
- armclang
- armclang は、armcc の後継で LLVM とClang テクノロジをベースにしています。
- armlink, armasm, fromelf, armar
- armlink, armasm, fromelf, および armarは、Armv8をサポートするために拡張され、Arm Compiler5と同様に振る舞います。
- 組込みシステム向けのArm C and C++ ライブラリ
- 標準のARMコンパイラ組込みライブラリはArmv8をサポートするために拡張され、機能的には完全に一致していない可能性がありますが、Arm Compiler 5で見出されるものと同様に振る舞います。
- Arm Compiler 6は、C++標準テンプレートライブラリとして、libc++を含みます
アセンブラに関する注意事項:
- GNUとArm Compilerツールチェン間の移植性を向上させるために、Arm Compiler 6はデフォルトで、GNUアセンブラシンタックスにより近いとされるLLVMに統合されたアセンブラを採用しています。LLVMに統合されたアセンブラはデフォルトで armclangによって呼び出されます。副作用として、Arm Compiler 6はレガシーな armcc のインラインおよび組込みアセンブラを含むC/C++ソースファイルをコンパイルできません。
- 従来のアセンブラ(armasm)はデフォルトでは呼び出されませんが、armasm 構文で記述されたソースコードをアセンブルするためにArm Compiler 6に含まれています。 従来のアセンブラは、Arm Compiler 5以前の既存プロジェクトの移行を支援するために含まれています。従来のアセンブラはArmv8をサポートするように拡張されていましたが、このアセンブラには最新のArmv8アップデートの機能がすべて含まれていません。またArmはarmasmにアーキテクチャサポートを追加する予定はありません。 新しいプロジェクトでは、armclang インラインアセンブラと統合アセンブラを推奨しています。
1.2 Arm Compiler 6.12 でサポートされたこと
次の表は、最も一般的なツールキットのサポートレベルを示しています:アーキテクチャおよびプロセッサ | サポートレベル | ライセンス | |||||||
Keil MDK | Arm Development Studio | ||||||||
Lite | Essential | Plus | Professional | Bronze | Silver | Gold | |||
8.5-AまでのArmv8-A | Neoverse N1/E1 | サポート済 | - | - | - | - | - | - | (*) |
Cortex-A76AE/76/65AE | サポート済 | - | - | - | - | - | - | (*) | |
Cortex-A75/73/72/57/55/53/35/32 | サポート済 | - | - | - | - | - | - | Yes | |
Armv7-A | Cortex-A17/15/12/9/8/7/5 | サポート済 | - | - | - | Yes | - | Yes | Yes |
Armv8-R | Cortex-R52 | サポート済 | - | - | - | - | - | - | Yes |
Armv7-R | Cortex-R8/7/5 | サポート済 | - | - | - | - | - | Yes | Yes |
Cortex-R4F/4 | サポート済 | - | - | Yes | Yes | - | Yes | Yes | |
Armv8-M | Cortex-M35P/33/23 | サポート済 | - | 非セキュアのみ | Yes | Yes | Yes | Yes | Yes |
Armv7-M | SC300 | サポート済 | - | - | Yes | Yes | Yes | Yes | Yes |
Cortex-M7/4/3 | サポート済 | 32 Kbyte コード制限 | Yes | Yes | Yes | Yes | Yes | Yes | |
Armv6-M | SC000 | サポート済 | - | - | Yes | Yes | Yes | Yes | Yes |
Cortex-M1/0/0+ | サポート済 | 32 Kbyte コード制限 | Yes | Yes | Yes | Yes | Yes | Yes | |
Armv6-M 以前のアーキテクチャ | 非サポート | - | - | - | - | - | - | - | |
Arm以外のアーキテクチャ | 非サポート | - | - | - | - | - | - | - |
* 物理デバイスを含むプロセッサのリリース後。より詳細についてはサプライヤに確認してください。
サポートレベル | 説明 |
サポート済 | 製品品質を保ち、一番高位のサポート優先度 |
ベータ | 実装は完了済みだが、テストは部分的。お客様の試用とフィードバックを歓迎 |
アルファ | 実装は未完了でテストは部分的。お客様の試用とフィードバックを歓迎 |
コミュニティ | オープンソーステクノロジで利用可能な追加機能がARM Compiler 6に組込み済み。Arm社はこれら機能の品質レベルや機能レベルへの言及はしない。お客様の試用とフィードバックを歓迎 |
非サポート | 機能がツールチェインに含まれていないか非推奨になっており、テストは未実施 当該機能を使用する場合は完全な自己責任。 |
サポートされている機能および機能のサポートレベルの詳細については、製品のマニュアルを参照してください。
2. インストール方法
Arm Compiler 6.12が、ツールキット(例:Arm Development Studio)の一部として含まれている場合、ツールキットのインストーラがインストレーションプロセスを処理します。ツールキットのインストレーション方法を参照してください。その他のケースの場合、Arm Compiler 6.11 をどのように使用するかに依存して適切なインストレーションの場所を選択する必要があります:
- Arm Development Studio 2018.0 以降へ統合
- Keil MDK 5.22 以降へ統合
- スタンドアロン製品として使用
2.1. Arm Development Studio 2018.0 以降への統合
Arm Compiler 6.12 は、Arm Development Studioのデフォルトのインストレーションディレクトリを含む、その他任意の場所にインストールすることができます。https://developer.arm.com/docs/101470/latest/configure-arm-development-studio/register-a-compiler-toolchain
で示す方法に従って、ツールチェーンをArm Development Studio 2018.0以降に統合することができます。
2.2. Keil MDK 5.22 以降への統合
Arm Compiler 6.12はKeil MDKインストレーションのARMサブディレクトリ以下にインストールする必要があります。たとえば、Keil MDKインストレーションがC:\Keil_v5\の場合、C:\Keil_v5\ARM\ARMCompiler6.12へインストールすることをおすすめします。Arm Compiler 6.12 32-bit Windowsバージョンのみが、Keil シングルユーザライセンスまたはKeil フローティングユーザライセンスと一緒に使用できます。
インストール後、
http://www.keil.com/support/man/docs/uv4/uv4_armcompilers.htm
のチュートリアルで示す方法に従って、MDKのプロジェクトへツールチェーンの統合が可能です。
2.3. スタンドアロン製品として使用
Arm Compiler 6.12をArm Development StudioあるいはKeil MDKのパッケージ外からでも独立してインストールすることができます。ライセンスを認識させるには以下の作業が必要です:
- 環境変数ARMLMD_LICENSE_FILEがライセンスファイルまたはライセンスサーバーを指していることを確認します。
- お手持ちのライセンスによって、さらに環境変数の設定が必要なことがあります。どのように環境を構築するかの手順は
https://developer.arm.com/products/software-development-tools/license-management/resources/product-and-toolkit-configuration
をご覧ください。
2.4. Linuxへのインストール
Arm Compiler 6.12は、以下のサポートされるプラットフォームでテストされています:- Red Hat Enterprise Linux 6 Workstation, 64-bit only.
- Red Hat Enterprise Linux 7 Workstation, 64-bit only.
- Ubuntu Desktop Edition 14.04 LTS, 64-bit only.
- Ubuntu Desktop Edition 16.04 LTS, 64-bit only.
Arm Compiler 6.12 をインストールするには、install_x86_64.sh を実行( sourceではありません) し、画面の指示に従ってください。インストーラは、Arm Compiler 6.12 をお客様が指定したディレクトリに解凍します。
armclang バイナリは、お客様の指定したディレクトリ内にArm Compiler 6.12 の一部としてインストールされたlibstdc++のコピーへ動的にリンクされています。
2.5. Windowsへのインストール
Arm Compiler 6.12 は、以下のサポートされるプラットフォームでテストされています:- Windows Server 2012, 64-bit only.
- Windows 7 Enterprise SP1.
- Windows 7 Professional SP1.
- Windows 8.1 Enterprise, 64-bit only.
- Windows 8.1 Professional, 64-bit only.
- Windows 10 Enterprise, 64-bit only.
- Windows 10 Professional, 64-bit only.
Arm Compiler 6.12は、2019年02月現在、Windows 10の最新の機能アップデートでテストされています。以降のアップデートでも問題なく動作することが期待されます。
Windows 64-bitホストプラットフォーム上でArm Compiler 6.12をインストールするために、win-x86_64\setup.exeを実行し、画面の指示に従ってください。
Windows 32-bitホストプラットフォーム上でArm Compiler 6.12をインストールするために、 win-x86_32\setup.exeを実行し、画面の指示に従ってください。
以前のバージョンのArm Compiler 6 がすでにインストールされており、アップグレードしたい場合は、以前のバージョンを一旦アンインストールしてから新しいバージョンのArm Compiler 6 をインストールいただくことを推奨します。
Arm Compiler 6はMicrosoft Visual Studio 2015で構築されており、WindowsのUniversal C Runtimeをインストールする必要があります。詳細な情報は、
https://support.microsoft.com/en-gb/help/2999226/update-for-universal-c-runtime-in-windows
をご確認ください。
3. アンインストール
Linuxでは、Arm Compiler 6.12インストールディレクトリを削除してください。Windowsでは、コントロールパネルのプログラムの追加と削除からArm Compiler 6.12を選択し、アンインストールボタンを押下してください。
4. ドキュメンテーション
Arm Compiler 6.12 の以下ドキュメントが利用可能です。- User Guide
- armar User Guide
- armasm User Guide
- armclang Reference Guide
- armlink User Guide
- fromelf User Guide
- Arm C and C++ Libraries and Floating-Point Support User Guide
- Migration and Compatibility Guide
- Software Development Guide
- Errors and Warnings Reference Guide
- Scalable Vector Extension User Guide
developer.arm.com 内の
Arm Compiler 6 documentation
をご確認ください。
2018年1月, Arm社は、脆弱性 Variant 1: bounds check bypass (CVE-2017-5753)に関する情報を公開しました。
https://developer.arm.com/support/security-update/compiler-support-for-mitigations
を参照し、 このArm CompilerリリースのMigration pathの推奨事項を使用して、この脆弱性を軽減してください。この軽減のAPIは変更される可能性があることに注意してください。
5. フィードバックとサポート
お客様からのフィードバックは我々にとって重要です。製品のあらゆる局面において、欠陥報告と改善に関する提案を歓迎します。フィードバックあるいはサポートについて、お客様の製品の購入元あるいは、
https://support.developer.arm.com
へご連絡ください。
必要に応じて、ツールからの--vsnの出力、問題を再現するのに必要なソースコードおよびその他のファイルとコマンドラインを提供してください。
当社へのお問い合わせは、こちら。
6. リリース履歴と変更
以下に、Arm Compiler 6.12 シリーズのリリース日付を示します:- 6.12 (2019年02月にリリースされました)
以下に、新しい機能と修正された不具合を含むそれぞれのリリースで変更された概要を示します。
特に指定がない限り、一つ前のリリースからの変更点を示します。
それぞれの項目別に分類され、ユニークな識別子SDCOMP-<NNNNN>を伴います。
もしARMへこのリリースノート内の特定の問題について連絡が必要な場合、適切な識別子を通知してください
Arm Compiler 6.12での変更点
以下に直前のリリースであるArm Compiler 6.11からの変更点を示します。Arm Compiler 6.12での一般的な変更
- [SDCOMP-52966] Armv8-A以降のターゲットに対して、コンテキストによる予測制限、投機バリアおよび投機的ストアバイパスセーフ命令のサポートが追加されました。これらの命令はArmv8.5-A以降のターゲットでは必須となっており、Armv8.4-A以前のターゲットではオプションです。コンテキストによる予測制限および投機的ストアバイパスセーフ命令はAArch64状態でのみ使用可能です。
これらの命令をターゲットとするには、以下からオプションを選択してください:
アーキテクチャ armclang armlink および fromelf Armv8.5-A以降でのコンテキストによる予測制限、予測バリアおよび投機的ストアバイパスセーフ命令 -march=armv8.5-a 指定不要 Armv8.<ver>-A (<ver> 1, 2, 3, は 4)でのコンテキストによる予測制限命令 -march=armv8.<ver>-a+predres 指定不要 Armv8.<ver>-A (<ver> 1, 2, 3, は 4)での予測バリア命令 -march=armv8.<ver>-a+sb 指定不要 Armv8.<ver>-A (<ver> 1, 2, 3, は 4)での投機的ストアバイパスセーフ命令 -march=armv8.<ver>-a+ssbs 指定不要 Armv8-Aでのコンテキストによる予測制限命令 -march=armv8-a+predres 指定不要 Armv8-Aでの予測バリア命令 -march=armv8-a+sb 指定不要 Armv8-Aでの投機的ストアバイパスセーフ命令 -march=armv8-a+ssbs 指定不要
旧アセンブラarmasmではこれら命令はサポートしません。
これらのオプションのより詳細についてはarmclang Reference Guide内-march および-mcpu の章を参照してください。
- [SDCOMP-53105] Cortex-A65AE プロセッサのサポートが追加されました。Cortex-A65AEをターゲットとするには以下のオプションを選択してください:
armclang:
- --target=aarch64-arm-none-eabi -mcpu=cortex-a65ae
armasm、armlinkおよびfromelf: - --cpu=8.2-A.64:AArch64 ステート用
- [SDCOMP-53106] Neoverse E1 プロセッサのサポートが追加されました。Neoverse E1をターゲットとするには以下のオプションを選択してください:
armclang:
- --target=aarch64-arm-none-eabi -mcpu=neoverse-e1
armasm、armlinkおよびfromelf: - --cpu=8.2-A.64:AArch64 ステート用
- [SDCOMP-53107] Neoverse N1 プロセッサのサポートが追加されました。Neoverse E1をターゲットとするには以下のオプションを選択してください:
armclang:
- --target=aarch64-arm-none-eabi -mcpu=neoverse-n1 :AArch64ステート用
- --target=arm-arm-none-eabi -mcpu=neoverse-n1 :AArch32ステート用
armasm、armlinkおよびfromelf: - --cpu=8.2-A.64:AArch64 ステート用
- --cpu=8.2-A.32:AArch32 ステート用
Arm Compiler 6.12での拡張
コンパイラと統合されたアセンブラ(armclang)
- [SDCOMP-53080] AArch32状態でのグローバル名前付きレジスタ変数機能をサポートしました。
この機能の詳細についてはarmclang Reference Guide内Global named register variablesおよび-ffixed-rN の項目を参照してください。
これにより、従来のarmccグローバル名前付きレジスタ変数機能を使用していたソースコードの移行が可能になります。
従来のarmccオプション--global_reg = reg_name および__global_reg(N) キーワードの使用の置き換えについては、Migration and Compatibility Guideを参照してください。 - [SDCOMP-52575] スタック保護機能のサポートが追加されました。以下のオプションのうちいずれかを利用してスタック保護機能を有効化できます:
- -fstack-protector
- -fstack-protector-strong
- -fstack-protector-all
これらのオプションのより詳細についてはarmclang Reference Guide内-fstack-protector、-fstack-protector-strong、-fstack-protector-all および-fno-stack-protector の章を参照してください。
旧armcc のオプション--protect_stack および--protect_stack_all を使用したソースコードの移行についてはMigration and Compatibility Guideを参照してください。
- [SDCOMP-52165] 浮動小数点値を持つシステムレジスタへのアクセスを可能にするArm C Language Extensions (ACLE) の特殊レジスタ組み込み関数をサポートしました。浮動小数点値を持つシステムレジスタへのアクセスは以下の組み込み関数から選択してください:
- __arm_rsrf() は単精度浮動小数点値を含む32-bitシステムレジスタを読み出します。
- __arm_wsrf() は単精度浮動小数点値を含む32-bitシステムレジスタに書き込みます。
- __arm_rsrf64() は倍精度浮動小数点値を含む64-bitシステムレジスタを読み出します。
- __arm_wsrf64() は倍精度浮動小数点値を含む64-bitシステムレジスタに書き込みます。
- [SDCOMP-51418] Armv8.5-Aのオプション、メモリタギング拡張によるメモリタギングスタック保護(スタックタギング)のアルファサポートが行われました。メモリタギングスタック保護は以下のオプションで使用できます:
armclang:
- -mmemtag-stackf オプションはメモリタギング拡張を使用するスタック保護コードを生成します。
armlink:
- --library_security=protection オプションはメモリタギングスタック保護に使用する保護ライブラリの選択を制御します。
これらのオプションのより詳細についてはarmclang Reference Guide内-mmemtag-stack および-mno-memtag-stack と、armlink User Guide内--library_security=protection の章を参照してください。
- [SDCOMP-51359] Armv8.5-Aのオプション、メモリタギング拡張によるメモリタギングスタック保護(スタックタギング)のArm C Language Extensions (ACLE) 組み込み関数のアルファサポートが行われました。
ライブラリおよびシステムヘッダ
- [SDCOMP-51360] Armv8.5-Aのオプション、メモリタギング拡張によるメモリタギングヒープ保護機能をサポートしました。
この機能のより詳細についてはArm C and C++ Libraries and Floating-Point Support User Guide 内Choosing a heap implementation for memory allocation functions の項目をご参照ください。
Arm Compiler 6.12で修正された不具合
コンパイラと統合されたアセンブラ(armclang)
- [SDCOMP-52855] 特定の環境下で、-O0 を使用してコンパイル時、ビット単位のAND演算子と、それに続くビットごとの左シフト演算子を含む式に対して誤ったコードを生成することがありました。
- [SDCOMP-52600] 特定の環境下で、-O0 を除くあらゆる最適化レベルでのコンパイル時、同じポインタを条件付きで2回以上間接参照する関数に対して誤ったコードを生成することがありました。
- [SDCOMP-52544] 特定の環境下で、-O0 を除くあらゆる最適化レベルで-mno-unaligned-access オプションを使用したコンパイル時、ローカル構造体変数のメンバM のサイズが4バイトの倍数で、アライメントの要件が4バイト未満である際に、M に対してアンアラインなアクセスを誤って実行するコードを生成する可能性がありました。
- [SDCOMP-52274] 特定の環境下で、-O0 を除くあらゆる最適化レベルでAArch32状態を指定してのコンパイル時、負の整数の定数と32ビットより小さいサイズの変数との間の比較演算に対して誤ったコードを生成する可能性がありました。
- [SDCOMP-52206] -masm=auto あるいは-masm=armasm とFPU およびAdvanced SIMD 拡張 が有効な名前を-mfpu=name オプションを指定した場合、armasmの呼び出しの際にAdvanced SIMD 拡張なしのターゲットを誤って定義することがありました。
以下の-mfpu=name オプションでFPU およびAdvanced SIMD 拡張が有効です:
- neon
- neon-fp-16
- neon-vfpv4
- neon-fp-armv8
- crypto-neon-fp-armv8
- [SDCOMP-52117] 特定の環境下で、AArch64状態を指定してのコンパイル時、定数グローバル変数V に対するデータマッピングシンボルの生成に失敗することがありました。その後のリンク時にリンカはV をデータ型ではなくコード型として扱うため、予期しない実行時の振舞いをする可能性がありました。
- [SDCOMP-51640] 特定の環境下で、T32状態を指定してのコンパイル時、関数A のアドレスが常に4バイト境界に置かれると誤って想定することがありました。その後、ビットごとのAND演算子を使用するA を含む計算に対して誤ったコードを生成することがありました。
- [SDCOMP-51578] 特定の環境下で、ハードウェア浮動小数点ユニットをサポートするターゲットに対し、AArch32状態を指定してのアセンブル時、インラインアセンブラと統合アセンブラはアクセスされる拡張レジスタのリストで16を超えるダブルワードレジスタを渡されたVLDM とVSTM 命令に対しエラーのレポートに失敗することがありました。代わりにインラインアセンブラと統合アセンブラは予測不能なエンコーディングになるVLDM とVSTM 命令を生成する可能性がありました。
インラインアセンブラと統合アセンブラはerror: list of registers must be at least 1 and at most 16 正しくをレポートするようになりました。 - [SDCOMP-50652] 特定の環境下で、-mpixolib を指定してのコンパイル時、位置独立なデータまたはコードのアドレスに依存するグローバル変数について不正な初期化コードを生成することがありました。
Linker (armlink)
- [SDCOMP-52640] 特定の環境下で、--callgraph、--info=stack または--info=summarystack オプションを指定して、関数呼び出しを一切行わない未参照のローカル関数を含む1つ以上の入力オブジェクトをリンクした場合、リンカはInternal fault: [0x2c9471:
] をレポートすることがありました。 - [SDCOMP-52261] 特定の環境下で、デバッグ情報を含み、多重定義のシンボルがある入力オブジェクトをリンクすると、リンカが誤ってError: L6743E: Relocation #REL:< rel > in < object >(.debug_info) with respect to < symbol > that has an alternate def. Internal consistency check failed を報告することがありました。
ライブラリおよびシステムヘッダ
- [SDCOMP-52623] AArch64状態のstd::condition_variable::wait_for() およびstd::this_thread::sleep_for()関数に対するArm threaded C++ ライブラリ実装が誤って非サポートのlong double型を使用することがありました。
- [SDCOMP-52288] Arm Cライブラリはリアルタイムヒープとも呼ばれるHeap2という名前の代替ヒープ実装を提供しています。AArch64状態を指定してコンパイルする場合、Heap2実装が選択され、Arm Cライブラリのmutex関数を要求するプログラム実装で、且つArm Cライブラリのメモリアロケーション関数posix_memalign() がメモリのアロケーションに失敗すると、posix_memalign() は誤ってヒープのためのmutexのリリースをしないことがありました。これによって予期しない実行時の振る舞いを引き起こす可能性がありました。
- [SDCOMP-51346] Arm CライブラリにはHeap2という名前の代替ヒープ実装があり、リアルタイムヒープとしても参照されます。Heap2実装を選択してAArch64状態を指定してコンパイルする場合、Arm Cライブラリメモリアロケーション関数のmalloc()、realloc()、calloc() およびfree() は、メモリブロックへのポインタに対して16バイトではなく8バイトのアライメント要求を誤って指定していました。さらに実装ではメモリブロックのサイズを格納するための変数を誤って32ビットサイズのものを使用していたために4GB以上のメモリブロックをサポートできていませんでした。これによって予期しない実行時の振る舞いを引き起こす可能性がありました。
- [SDCOMP-50975] 特定の環境下で、Arm Cライブラリのraise() 関数を使用してプログラムがsignalを起こすと、Arm Cライブラリ実装の__default_signal_handler() 関数が起こされたsignalをハンドルする際に誤ってエラーメッセージを表示しないことがありました。
Arm Compiler 6.12の既知の不具合
- [SDCOMP-50507] AArch64 Armv8.2-A半精度浮動小数点コンパイラ組み込み関数のコンパイラサポートには、次の制限があります:
- コンパイラは、浮動小数点絶対値比較用コンパイラ組み込み関数と浮動小数点整数変換用コンパイラ組み込み関数のサブセットについて、 fatal error: error in backendまたはerror: cannot compile this builtin function yetを誤って報告します。
- 浮動小数点乗算型拡張(要素別)の組み込み関数浮動小数点乗算型拡張(要素別)の組み込み関数 vmulxh_lane_f16() およびvmulxh_laneq_f16() はサポートされていません。
- [SDCOMP-50470] コンパイラは、_Float16 データ型について不正なデフォルト引数生成に関連する関数呼び出しのエラーの報告に失敗することがあります。