Arm Compiler 6.10のリリースノート
目次
- 1. 紹介
- 2. インストール手順
- 2.1. DS-5 5.20 以降への統合
- 2.2. Keil MDK 5.22 以降への統合
- 2.3. スタンドアロン製品として使用
- 2.4. Linuxへのインストール
- 2.5. Windowsへのインストール
- 3. アンインストール
- 4. ドキュメンテーション
- 5. フィードバックとサポート
- 6. リリース履歴と変更
1. 紹介
これは、リリース時に提供されたリリースノートの最初のセットです。 リリースノートの最新版については、https://developer.arm.comをご参照ください。
Arm Compiler 6.10 は次のサポートを追加しました:
- armclang がArmv8.2-A FP16 アーキテクチャ拡張を対象としたサポートを追加
- armclang がArmv8.1-A アトミックアーキテクチャ拡張を対象としたサポートを追加
Arm Compiler 6.10 は、以下のように使用されることを意図しています:
- DS-5に組込み使用
- Keil MDKに組込み使用
- スタンドアロンでのツールインストレーション
これら製品から少なくとも1つの適切なライセンスが利用可能である必要があります。 これら製品から少なくとも1つの適切なライセンスが利用可能である必要があります。 ライセンスの購入については ご購入前の製品・サービスに関するお問い合わせ(Arm純正開発ツール) へご連絡ください。
フローティングライセンスをご使用の場合は、armlmdおよびlmgrdをversion 11.14.1.0以降にアップデートする必要があります。ARMでは、常に https://developer.arm.com/products/software-development-tools/license-management/downloads から入手できる最新バージョンのライセンスサーバーソフトウェアを使用することをお勧めします。
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/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シンタクスで書かれたアセンブラファイルをアセンブルするために、armasmがARM Compiler 6内に含まれます。
1.2 Arm Compiler 6.10でのサポート
次の表は、最も一般的なツールキットのサポートレベルを示しています:
アーキテクチャおよびプロセッサ | サポートレベル | ライセンス / 構成 | ||||||
MDK-Lite | MDK-Essential | MDK-Plus | MDK-Professional | DS-5 Professional |
DS-5 Ultimate |
|||
Armv8-A | 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-M33/23 | サポート済み | - | 非セキュアのみ | Yes | Yes | Yes | Yes |
Armv7-M | SC300 | サポート済み | - | - | Yes | Yes | Yes | Yes |
Cortex-M7/4/3 | サポート済み | 32 Kbyte コード制限 | Yes | Yes | Yes | Yes | Yes | |
Armv6-M | SC000 | サポート済み | - | - | Yes | Yes | Yes | Yes |
Cortex-M0/M0+ | 32 Kbyte コード制限 | Yes | Yes | Yes | Yes | Yes | ||
Armv6-M 以前のアーキテクチャ | 未サポート | - | - | - | - | - | - | |
Arm以外のアーキテクチャ | 未サポート | - | - | - | - | - | - |
サポートレベル | 説明 |
サポート済み(製品化レベル) | 製品品質を保ち、一番高位のサポート優先度 |
ベータ | 実装は完了済みだが、テストは部分的。お客様の試用とフィードバックを歓迎 |
アルファ | 実装は未完了でテストは部分的。お客様の試用とフィードバックを歓迎 |
コミュニティ | オープンソーステクノロジで利用可能な追加機能がARM Compiler 6に組込み済み。Arm社はこれら機能の品質レベルや機能レベルへの言及はしない。お客様の試用とフィードバックを歓迎。 |
未サポート | 機能がツールチェインに含まれていないか非推奨になっており、テストは未実施。 当該機能を使用する場合は完全な自己責任。 |
他のツールキットでサポートされているアーキテクチャとプロセッサについては、販売元にお問い合わせください。
サポートされている機能および機能のサポートレベルの詳細については、製品のマニュアルを参照してください。
2. インストール手順
Arm Compiler 6.10 が、ツールキット(例:DS-5)の一部として含まれている場合、ツールキットのインストーラがインストレーションプロセスを処理します。ツールキットのインストレーション方法を参照してください。
その他のケースの場合、Arm Compiler 6.10 をどのように使用するかに依存して適切なインストレーションの場所を選択する必要があります:
- DS-5 5.20 以降に統合する
- Keil MDK 5.22 以降に統合する
- スタンドアロン製品として使用
2.1. DS-5 5.20 以降への統合
Arm Compiler 6.10 は、DS-5製品のインストレーションの外であるなら、デフォルトの場所を含み、任意の場所にインストールすることができます。
インストール後、 https://developer.arm.com/products/software-development-tools/ds-5-development-studio/resources/tutorials/adding-new-compiler-toolchains-to-ds-5 のチュートリアルで示す方法に従って、DS-5 5.20以降のツールチェーンに統合することができます。
DS-5 Eclipse IDE あるいは DS-5 Command PromptからArm Compiler 6.10 を使用することをおすすめします。これら環境の外でツールチェーンを使用するとき、以下の環境変数の構成が必要となります:
- DS-5インストレーション内の sw/mappings ディレクトリへのパスをARM_PRODUCT_PATHにセットします。
- DS-5 Professional Editionライセンスを使用していない場合は、ARM_TOOL_VARIANTを適切に設定してください。
詳細な情報は、 https://developer.arm.com/products/software-development-tools/license-management/resources/product-and-toolkit-configurationをご参照ください。
2.2. MDK-ARM 5.22 以降への統合
Arm Compiler 6.10 は、Keil MDKインストレーションのARMサブディレクトリ以下にインストールする必要があります。たとえば、Keil MDKインストレーションがC:Keil_v5の場合、C:Keil_v5ARMARMCompiler6.10へインストールすることをおすすめします。
インストール後、 http://www.keil.com/support/man/docs/uv4/uv4_armcompilers.htm のチュートリアルで示す方法に従って、MDKのプロジェクトへツールチェーンの統合が可能です。
2.3. スタンドアロン製品としての使用
ARM Compiler 6.10 は、DS-5製品のそれぞれのインストレーションの外であるなら、デフォルトの場所を含み、任意の場所にインストールすることができます。
ライセンスファイルあるいはライセンスサーバの場所を指定するARMLMD_LICENSE_FILE環境変数をセットしてください。Windows上ではダブルクォーテーションをこのパス内に含めないでください。パス内の空白はクォーツなしで、動作します。
DS-5 Professional Editionライセンスを使用していない場合は、ARM_TOOL_VARIANTを適切に設定してください。
詳細な情報は、 https://developer.arm.com/products/software-development-tools/license-management/resources/product-and-toolkit-configurationをご参照ください。
2.4. Linux環境へのインストレーション
Arm Compiler 6.10 は、以下のサポートされるプラットフォームでテストされています:
- 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.10 は、古いプラットフォームでは動作しません。
Arm Compiler 6.10をインストールするには、 install_x86_64.shを実行(sourceではありません)し、画面の指示に従ってください。インストーラは、Arm Compiler 6.10 をお客様が指定したディレクトリに解凍します。
armclang バイナリは、お客様の指定したディレクトリ内にArm Compiler 6.10 の一部としてインストールされたlibstdc++のコピーへ動的にリンクされています。
2.5. Windows環境へのインストレーション
Arm Compiler 6.10 は、以下のサポートされるプラットフォームでテストされています:
- 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.10 は、古いプラットフォームでは動作しません。
Windows 64-bitホストプラットフォーム上でArm Compiler 6.10 をインストールするために、win-x86_64setup.exeを実行し、画面の指示に従ってください。Windows 32-bitホストプラットフォーム上でArm Compiler 6.10をインストールするために、win-x86_32setup.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.10 をインストールディレクトリから削除してください。
Windowsの場合、コントロールパネルのプログラムの追加と削除からArm Compiler 6.10 を選択し、アンインストールボタンを押下してください。
4. ドキュメンテーション
Arm Compiler 6.10 の以下ドキュメントが利用可能です:
- 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をご参照ください。
Arm社は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://developer.arm.com/supportへご連絡ください。必要に応じて、ツールからの--vsnの出力、問題を再現するのに必要なソースコードおよびその他のファイルとコマンドラインを提供してください。当社へのお問い合わせは、 こちら 。
6. リリース履歴と変更点について
以下に、Arm Compiler 6.10 シリーズのリリース日付を示します:
- 6.10 (2018年3月にリリースされました)
以下に、新しい機能と修正された不具合を含むそれぞれのリリースで変更された概要を示します。特に指定がない限り、一つ前のリリースからの変更点を示します。それぞれの項目別に分類され、ユニークな識別子SDCOMP-<NNNNN>を伴います。もしARMへこのリリースノート内の特定の問題について連絡が必要な場合、適切な識別子を通知してください。
Arm Compiler 6.10 での変更点
以下に以前のリリースであるArm Compiler 6.9 からの変更点を示します。
Arm Compiler 6.10 での一般的な変更点
-
[SDCOMP-50185] 以前は、AArch32状態のアセンブルとA32およびT32命令セットをサポートするターゲットの場合、従来のアセンブラオプション--apcs=/nointerwork がデフォルトで選択されていました。 この振る舞いは変更されました。 このような状況ではデフォルトで、--apcs=/interwork が選択されるようになりました。
これらオプションについての詳細な情報は、armasm User Guideをご参照ください。
-
[SDCOMP-49700] 特定の状況において、レガシーアセンブラまたはリンカプロセスがファイルを前処理するためにサブプロセスとしてコンパイラを呼び出した際に、適切なライセンスがすべて既に使用されていた場合、プロセスがデッドロックする可能性がありました。これは修正されました。
-
[SDCOMP-47596] デフォルトの C++ ソース言語モードは、gnu++98 から gnu++14に変更されました。
gnu++14 言語とライブラリ機能は、ベータサポートです。Arm社は、-std=c++11でコンパイルすることを推奨しています。これは、完全にサポート済みのC++11 言語とライブラリ機能のみを使用するように、Arm Compilerを制限します。
詳細な情報は、armclang Reference Guide内の-std をご参照ください。
-
[SDCOMP-30915] 以前は、--keep=section_id あるいは --no_removeリンカオプションを使用して保持しない限り、__attribute__((used))で注釈が付けられた関数または変数は、リンカの未使用セクション削除機能によって削除されました。この振る舞いは変更されました。__attribute__((used))で注釈が付けられた関数または変数は、リンカのの未使用セクション削除機能によって削除されなくなりました。
Arm Compiler 6.10での拡張
コンパイラと統合されたアセンブラ(armclang)
-
[SDCOMP-49242] Armv8.1-A アトミックアーキテクチャ拡張を対象とするためのサポートがコンパイラに追加されました。これには、128-bit型のC++11 std::atomic比較およびスワップ操作のためのCASP命令の生成が含まれます。
-
[SDCOMP-48997] コンパイラが特定の標準Cライブラリ関数printf()などへの呼び出しを最適化しないようにするために使用できる-fno-builtinオプションのサポートが追加されました。-fno-builtinを指定せずにコンパイルすると、コンパイラはそのような呼び出しをインラインコードで置き換えたり、他のライブラリ関数を呼び出したりします。
このオプションについての詳細な情報は、armclang Reference Guideをご参照ください。 -
[SDCOMP-45236] すべてのCおよびC++ソース言語モードで、 _Float16データ型がサポートされました。
_Float16 データ型は、ISO/IEC TS 18661で定義されています。
Arm Compiler 6.10で修正された不具合
コンパイラと統合されたアセンブラ(armclang)
-
[SDCOMP-50315] 特定の状況で、 配列型のパラメータを持つラムダを含むC++コードをコンパイルすると、コンパイラは、誤って、Segmentation fault (core dumped)を報告することがありました。これは修正されました。
-
[SDCOMP-50226] -S または --save-tempsでコンパイルするときに、%notype または STT_NOTYPE型を指定する.type ディレクティブを含むインラインアセンブリステートメントがプログラムに含まれていると、アセンブリの出力に無効な型が誤って含まれていました。 これは修正されました。
-
[SDCOMP-49972] 特定の状況において、DSP拡張なしでArmv7-MターゲットまたはArmv8-Mターゲット用のコンパイるすると、コンパイラはアーキテクチャ上UNDEFINED命令SMMLSを誤って含むコードを生成する可能性があります。これは修正されました。
-
[SDCOMP-49927] AArch32ステートでアセンブルするとき、インラインアセンブラおよび統合アセンブラは、シフトされた第2レジスタオペランドに無効なシフト演算子を指定するメモリアクセス命令に対してエラーの報告に失敗していました。代わりに、インラインアセンブラと統合アセンブラがその命令を誤って無視していました。これは修正されました。 インラインアセンブラと統合アセンブラで、 error: illegal shift operatorが報告されるようになりました。
-
[SDCOMP-49843] big-endian ターゲットかつT32ステート用にアセンブルし、プログラムに命令Iを指定するinst.w命令が含まれている場合、インラインアセンブラと統合アセンブラは、バイトを誤った順序でエンコードします。これは修正されました。
-
[SDCOMP-49817] 特定の状況で、-O3, -Ofast, あるいは -Omaxでコンパイルすると、コンパイラは、ポインタ引数を __attribute__((naked))で注釈をつけられた関数に誤って渡すことができないコードを生成することがありました。これは修正されました。
-
[SDCOMP-49718] Armv6-M ターゲットまたはメイン拡張なしの Armv8-M ターゲット用にコンパイルするとき、コードに引数Pと、8バイト以上のアライン要件のローカル変数を持つ関数が含まれており、Pが可変引数リストのため スタックを使用して渡す必要がある場合、コンパイラはPに誤ってアクセスするコードを生成しました。これは修正されました。
-
[SDCOMP-49707] 特定の状況で、-Ozでコンパイルするときに、プログラムにC++例外をスローしてキャッチする関数が含まれていると、コンパイラはC++例外をキャッチする関数Fに対して、誤ったARM_EXIDXテーブルエントリを生成することがありました。その後、C++例外がスローされたとき、Fの変数が破損する可能性があります。これは修正されました。
-
[SDCOMP-49698] C++ソース言語モードでコンパイルすると、コンパイラは、template non-type parameterの無効な宣言指定子に対して誤ってエラーを報告することに失敗しました。代わりに、無効な宣言指定子を誤って無視しました。これは修正されました。コンパイラは、 error: invalid declaration specifier in template non-type parameterを報告するようになりました。
-
[SDCOMP-49645] 特定の状況で、 Advanced SIMD Extension (NEON)およびAArch32状態をサポートするターゲット用にコンパイルするときに、プログラムに整数型に拡張された比較操作が含まれていると、コンパイラが誤ったコードを生成する可能性があります。 これは修正されました。
-
[SDCOMP-49456] 特定の状況では、big-endianターゲットかつAArch32ステートで-O0 and -O1以外の最適化レベルでコンパイルすると、コンパイラは誤ってメモリアクセスを並べ替える可能性がありました。これは修正されました。
-
[SDCOMP-49246] 特定の状況で、AArch32ステートで-mfloat-abi=softを指定し、-mfpu=noneを指定せずにコンパイルすると、ビルド属性Tag_FP_archを誤って含むオブジェクトがコンパイラによって生成される可能性がありました。 その後、リンカは、ハードウェア浮動小数点命令を含むライブラリ関数の実装を誤って選択することがありました。 これは修正されました。
-
[SDCOMP-49132] 特定の状況で、メイン拡張なしの Armv8-M ターゲット用にコンパイルするときに、コードに関数ポインタによる呼び出しが含まれていると、コンパイラは誤って、 fatal error: error in backend: ran out of registers during register allocationを報告することがありました。これは修正されました。
-
[SDCOMP-48979] 特定の状況で、big-endianターゲットかつAArch64ステートで-O0と-O1以外の最適化レベルでコンパイルすると、コンパイラはベクトル化可能なメモリアクセス操作のために不正なコードを生成する可能性があります。 これは修正されました。
-
[SDCOMP-48864] 特定の状況で、Armv6-M, Armv7, Armv8-MターゲットでT32ステートでアセンブルする場合、インラインアセンブラと統合アセンブラでは、SPを汎用レジスタオペランドとして指定するVMRS あるいは VMSR命令に対して、誤ってエラーを報告するのに失敗していました。代わりに、インラインアセンブラおよび統合アセンブラは、UNPREDICTABLEな汎用レジスタエンコーディング値13でVMRS あるいは VMSR命令を生成しました。これは修正されました。 インラインアセンブラと統合アセンブラで、error: invalid operand for instructionを報告します。
-
[SDCOMP-48429] AArch32ステートでアセンブルするとき、インラインアセンブラおよび統合アセンブラは、ベースレジスタオペランドまたは任意にシフトされた第2レジスタオペランドに対する無効なレジスタを指定する命令のエラーを誤って報告することに失敗しました。 代わりに、インラインアセンブラおよび統合アセンブラは、指定されたオペランドとは異なるが有効な汎用レジスタを間違って持つ命令を生成します。これは修正されました。 インラインアセンブラと統合アセンブラは、 error: invalid operand for instructionを報告します。
-
[SDCOMP-47542] 特定の状況で、-g または -gdwarf-versionを指定したコンパイルすると、コンパイラが列挙子の値に対して誤ったデバッグ情報を生成する可能性があります。 これは修正されました。
-
[SDCOMP-25212] C または C++言語のソースコードをコンパイルするとき、コンパイラは__GNUC__プリプロセッサマクロを定義する必要がありますが、追加のGNU拡張をサポートしていないソース言語モードでは間違ってこれを行うことができません。 これは修正されました。
レガシーアセンブラ (armasm)
-
[SDCOMP-49312] 命令Iに関連するエクスポートされたシンボルSが後に続くデータブロックBを含むソースファイルをアセンブルし、Bの後にパディングを追加してIが正しくアラインされるようにする必要がある場合、アセンブラはSを誤ったアドレスに関連付けます。 これは修正されました。
ライブラリおよびシステムヘッダ
-
[SDCOMP-49975] 特定の状況で、次の関数のArm Compilerライブラリの実装は、戻り値がゼロにアンダーフローするとき、errnoをERANGEに誤って設定できませんでした:
- atan2().
- atan2f().
- erfc().
これは修正されました。
-
[SDCOMP-49764] strrchr()関数のmicrolib実装では、文字列の終端ヌル文字''の位置を突き止めるために、NULLポインタが誤って返されました。 これは修正されました。
-
[SDCOMP-49759] クラステンプレートstd::basic_stringbufのArm C++ライブラリ実装のデフォルトコンストラクタは、ヌルポインタに対するすべてのシーケンスポインタを誤って初期化できませんでした。 これは修正されました。
-
[SDCOMP-49721] std::istream_iteratorを含む== または !=演算子を含むコードをコンパイルするときに、演算子が修飾名を使用して参照されると、コンパイラは誤って、 error: no matching function for call to 'operator<operator>'. これは修正されました。
-
[SDCOMP-49323] arm_compat.hシステムヘッダーは、__ARM_ACLEマクロが定義されたときに、arm_acle.hシステムヘッダーを誤ってインクルードできませんでした。 これは修正されました。
Fromelf
-
[SDCOMP-49646] [SDCOMP-49646] --elf --localize=option[,option,…]を指定してELFファイルを処理するとき、fromelfユーティリティは--localizeの引数で指定された外部参照を誤ってローカライズし、結果としてリンカは、Error: L6283E: Object <objname> contains illegal local reference to symbol <symbolname>.を報告していました。これは修正されました。 --localizeオプションは、参照ではなく定義のみをローカライズするようになりました。
-
[SDCOMP-49582] 特定の状況で、再配置によって変更された命令を含むELFファイルを逆アセンブルするとき、fromelfユーティリティは再配置の存在を誤って示す逆アセンブリを生成する可能性があります。 これは修正されました。
-
[SDCOMP-49313] fromelfユーティリティは、加数を持つ再配置によって変更されたPC相対ロード命令を含むELFファイルを逆アセンブルすると、命令の不正なロード値を含む逆アセンブリを生成します。 これは修正されました。
-
[SDCOMP-48274] 再配置によって変更されたA64ロード命令またはストア命令を含むELFファイルを逆アセンブルする場合、fromelfユーティリティは、AArch64レジスタの代わりにAArch32レジスタを間違って含む逆アセンブリを生成する可能性があります。 これは修正されました。
-
[SDCOMP-30908] 特定の状況で、--text -gを指定してAArch64 ELFファイルを処理すると、fromelfユーティリティは、.debug_locセクションのエントリの実際の値よりも8バイトだけ誤ったオフセットを報告します。 これは修正されました。
Arm Compiler 6.10の既知の不具合
-
[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データ型の無効なデフォルト引数拡張を含む関数呼び出しのエラーを誤って報告することができません。
将来のリリースでの変更点
-
32-bit Application Binary Interface for the Arm Architectureに準拠していないレガシーR-typeダイナミックリンクモデルは、Arm Compiler 6の将来のリリースで廃止されます。
次のものが廃止されます:
- --relocと共にリンクすること。
- RELOCなロード領域属性を含むスキャッタファイルを使用して、--base_platformを使用せずにリンクする。
従来のRタイプの動的リンクモデルを使用するのではなく、Base PlatformおよびBase Platform Application Binary Interface (BPABI)リンクモデルを使用して、再配置可能な実行可能ファイルを生成します。
Base PlatformおよびBPABIリンクモデルについての情報は、armlink User Guideをご参照ください。
-
従来のSHF_COMDEFセクションフラグを含むELFセクションのサポートは、Arm Compiler 6の将来のリリースで廃止されます。
次のものが廃止されます:
- 従来のarmasm構文のAREAディレクティブのCOMDEFセクション属性。
- 従来のSHF_COMDEFセクションフラグを持つELFセクションを含むレガシーオブジェクトとのリンク。
従来のSHF_COMDEFセクションフラグの代わりにGRP_COMDATセクションフラグを使用します。:
- 従来のarmasm構文AREAディレクティブのCOMDEFセクション属性を、COMGROUP=symbol_nameセクション属性で置き換えます。
- 次のいずれかを使用して、Arm Compiler 5以前を使用してビルドされた、互換性のないレガシーオブジェクトを再ビルドする:
- 前のバージョンと同じですが、--dwarf3を使用する.
- Arm Compiler 6を使用する
従来のarmasm構文のAREAディレクティブのCOMGROUP=symbol_nameセクション属性の詳細については、armasm User Guideをご参照ください。
COMDATグループとGRP_COMDAT ELFセクションフラグの詳細については、Itanium C++ ABIをご参照ください。
-
__declspecは、 将来のArm Compiler 6のリリースでは廃止されます。
__declspecの使用方法の置き換えについては、Migration and Compatibility Guideをご参照ください。