Arm Compiler 6.9 は次のサポートを追加しました:
Arm Compiler 6.9 以下のように使用されることを意図しています:
これら製品から少なくとも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 から入手できる最新バージョンのライセンスサーバーソフトウェアを使用することをお勧めします。
ARM Compiler 6は、ARM Compiler 5の後継であり、以下にリストされたコンポーネントを含みます。以前のプロジェクトからプロジェクトを移行するための情報は、製品ドキュメンテーション内の Migration and Compatibility Guide をご覧ください。
アセンブラに関する注意事項:
アーキテクチャとプロセッサ | サポートレベル |
Armv8-A (アップデートリリースを含む),ARMv7-A と準拠するプロセッサ | サポート済み(製品化レベル) |
Armv8-R, Armv7-R と準拠するプロセッサ | サポート済み(製品化レベル) |
Armv8-M, Armv7-M, Armv6-M と準拠するプロセッサ | サポート済み(製品化レベル) |
Armv6-M 以前のアーキテクチャ | 未サポート。ARM Compiler 5 をご使用ください |
Arm以外のアーキテクチャ | 未サポート |
サポートレベル | 説明 |
サポート済み(製品化レベル) | 製品品質を保ち、一番高位のサポート優先度 |
ベータ | 実装は完了済みだが、テストは部分的。お客様の試用とフィードバックを歓迎 |
アルファ | 実装は未完了でテストは部分的。 お客様の試用とフィードバックを歓迎 |
コミュニティ | オープンソーステクノロジで利用可能な追加の機能がARM Compiler 6に構築済み。 お客様の試用とフィードバックを歓迎 |
未サポート | 機能がツールチェインに含まれていないか非推奨になっており、テストは未実施。 当該機能を使用する場合は完全な自己責任。 |
サポートされている機能および機能のサポートレベルの詳細については、製品のマニュアルを参照してください。
Arm Compiler 6.9 が、ツールキット(例:DS-5)の一部として含まれている場合、ツールキットのインストーラがインストレーションプロセスを処理します。ツールキットのインストレーション方法を参照してください。
その他のケースの場合、Arm Compiler 6.9 をどのように使用するかに依存して適切なインストレーションの場所を選択する必要があります:
Arm Compiler 6.9 は、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.9 を使用することをおすすめします。これら環境の外でツールチェーンを使用するとき、以下の環境変数の構成が必要となります:
詳細な情報は、 https://developer.arm.com/products/software-development-tools/license-management/resources/product-and-toolkit-configuration をご参照ください。
Arm Compiler 6.9 は、Keil MDKインストレーションの ARM サブディレクトリ以下にインストールする必要があります。たとえば、Keil MDKインストレーションがC:Keil_v5の場合、 C:Keil_v5ARMARMCompiler6.9 へインストールすることをおすすめします。
インストール後、 http://www.keil.com/support/man/docs/uv4/uv4_armcompilers.htm のチュートリアルで示す方法に従って、MDKのプロジェクトへツールチェーンの統合が可能です。
ARM Compiler 6.9 は、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 をご参照ください。
Arm Compiler 6.9 は、以下のサポートされるプラットフォームでテストされています:
Arm Compiler 6.9 は、古いプロットフォームでは動作しません。
Arm Compiler 6.9をインストールするには、 install_x86_64.sh を実行( source ではありません)し、画面の指示に従ってください。インストーラは、Arm Compiler 6.9 をお客様が指定したディレクトリに解凍します。
armclang バイナリは、お客様の指定したディレクトリ内にArm Compiler 6.9 の一部としてインストールされたlibstdc++のコピーへ動的にリンクされています。
Arm Compiler 6.9 は、以下のサポートされるプラットフォームでテストされています:
Arm Compiler 6.9 は、古いプロットフォームでは動作しません。
Windows 64-bitホストプラットフォーム上でArm Compiler 6.9 をインストールするために、 win-x86_64setup.exe を実行し、画面の指示に従ってください。Windows 32-bitホストプラットフォーム上でArm Compiler 6.9をインストールするために、 win-x86_32setup.exe を実行し、画面の指示に従ってください。以前のバージョンのArm Compiler 6 がすでにインストールされており、アップグレードしたい場合は、以前のバージョンを一旦アンインストールしてから新しいバージョンのArm Compiler 6 をインストールいただくことを推奨します。
Arm Compiler 6は、Microsoft Visual Studio 2015のランタイムライブラリがインストールされることを必要とします。プロダクトインストーラを使用するか、あるいはこのツールチェンがDS-5の一部としてインストールされるなら、ランタイムライブラリは製品と共にインストールされます。後からコピーあるいは別のPCへインストレーションを移動される場合、ランタイムライブラリがホスト上で利用可能であることを保証する必要があります。
Linuxの場合、Arm Compiler 6.9 をインストールディレクトリから削除してください
Windowsの場合、 コントロールパネル の プログラムの追加と削除 から Arm Compiler 6.9 を選択し、 アンインストール ボタンを押下してください
Arm Compiler 6.9 の以下ドキュメントが利用可能です:
これ以上の情報は、 developer.arm.com 内の Arm Compiler 6 documentation をご参照ください。
お客様からのフィードバックは我々にとって重要です。製品のあらゆる局面において、欠陥報告と改善に関する提案を歓迎します。フィードバックあるいはサポートについて、お客様の製品の購入元あるいは、 https://developer.arm.com/support へご連絡ください。必要に応じて、ツールからの --vsn の出力、問題を再現するのに必要なソースコードおよびその他のファイルとコマンドラインを提供してください。当社へのお問い合わせは、 こちら 。
以下に、Arm Compiler 6.9 シリーズのリリース日付を示します:
以下に、新しい機能と修正された不具合を含むそれぞれのリリースで変更された概要を示します。特に指定がない限り、一つ前のリリースからの変更点を示します。それぞれの項目別に分類され、ユニークな識別子SDCOMP-<NNNNN>を伴います。もしARMへこのリリースノート内の特定の問題について連絡が必要な場合、適切な識別子を通知してください。
以下に以前のリリースであるArm Compiler 6.8 からの変更点を示します。
[SDCOMP-49098] Armv8.4-A アーキテクチャへのサポートが追加されました。Armv8.4-Aをターゲットにする場合、以下のオプションを選択してください:
armclang :
armlink および fromelf :
レガシーアセンブラ ( armasm ) は、Armv8.4-Aをサポートしません。
[SDCOMP-48770] Armv8.4-Aのオプションの暗号拡張がサポートされました。Armv8.4-Aで暗号拡張をターゲットとする場合、以下のオプションを選択してください:
armclang :
armlink および fromelf :
レガシーアセンブラ ( armasm ) は、Armv8.4-Aをサポートしていません。
特定の暗号アルゴリズムの選択についての詳細は、 armclang Reference Guide の -mcpu 章をご参照ください。
[SDCOMP-49172] 次のリリースのArm Compiler 6 (version 6.10)では、 __declspec は、非推奨です。
__declspec 使用のリプレイスに関する情報は、 Migration and Compatibility Guide をご参照ください。
[SDCOMP-49421] Armv6-MあるいはArmv8-Mメイン拡張以外のターゲットで、 -O0 以外の最適化レベルを指定されたとき、特定の状況で、スタックを使用して渡さなければならない少なくとも1つのパラメータを持つ関数呼び出しに対して、コンパイラが誤ったコードを生成する可能性があります。この不具合は修正されました。
[SDCOMP-49207] 特定の状況で、コンパイル時に -mexecute -only を指定すると、コンパイラは次の浮動小数点拡張のいずれかをサポートするターゲットのバックエンドで fatal error: error in backend を誤って報告する可能性があります:
この不具合は修正されました。
[SDCOMP-49001] T32ステートの SUB 命令の2つのオペランド形式をアセンブルするとき、インラインアセンブラおよび統合アセンブラは、 error: instruction requires: arm-mode or incorrectly generate a 32-bit instruction instead of a 16-bit instructionを誤ってレポートします。これは修正されました。
[SDCOMP-48937] 8バイトを超える整列要件を持つ変数を含むコードで、Armv6-Mあるいはメイン拡張なしのArmv8-Mターゲット向けにコンパイルするとき、特定の状況で、コンパイラは、変数のアライメント要件を考慮しない誤ったコードを生成する可能性があります。これは修正されました。
[SDCOMP-48900] インラインアセンブラと統合アセンブラでは、 # 文字の不正なな使用を、コメントの開始として間違って扱います。これにより、アセンブラは無効な命令を、異なった有効な命令として誤って扱う可能性があります。これは修正されました。インラインアセンブラと統合アセンブラでは、 error: unexpected token in argument list と表示されるようになりました。
[SDCOMP-48825] まれに、AArch32ステート用にコンパイルするときにコードに比較演算が含まれていると、コンパイラがアプリケーションプログラムステータスレジスタ(APSR)を破壊する不正なコードを生成する可能性があります。これは修正されました。
[SDCOMP-48772] オプションのDot Product命令をサポートするターゲットに対してAArch32ステート用にアセンブルするとき、インラインアセンブラおよび統合アセンブラは、2番目のソースレジスタのオペランドに無効なレジスタ名を指定する VUDOT 命令のエラーを誤って報告しませんでした。これは修正されました。インラインアセンブラと統合アセンブラでは、 error: invalid operand for instruction がレポートされるようになりました。
[SDCOMP-48718] まれに、AArch64ステート用に -O1 でコンパイルするときに、コードに比較演算が含まれていると、コンパイラは最初のソースオペランドレジスタとして SP レジスタを誤って使用する CMP 命令を生成する可能性があります。これは修正されました。
[SDCOMP-48682] コンパイラは、 const メンバを含む struct または union 型の変数への代入のエラーを誤って報告していました。これは修正されました。コンパイラは、 error: cannot assign to lvalue with const-qualified data member '<member>' を報告します。
[SDCOMP-48774] Main拡張でArmv8-Mターゲットをアセンブルするとき、アセンブラは、無効な値146または無効な特殊レジスタ名 BASEPRI_MAX_NS をアクセスする特別なレジスタとして指定する MRS 命令または MSR 命令のエラーを誤って報告していました。代わりに、アセンブラは、UNPREDICTABLE特殊レジスタのエンコーディング値 146 を使用して MRS または MSR 命令を生成しました。これは修正されました。アセンブラは、 Error: A1477E: This register combination results in UNPREDICTABLE behaviour あるいは Error: A1516E: Bad symbol 'BASEPRI_MAX_NS', not defined or external を報告します。
[SDCOMP-48776] まれに、小さなT32関数を呼び出すA32関数を含むプログラムをリンクすると、リンカの関数インライン機能が、小さなT32関数の呼び出しを、A32状態で UNPREDICTABLE である無効な命令で間違って置き換えることがありました。これは修正されました。
[SDCOMP-48715] AArch64ステートの SHF_ALLOC ELFセクションフラグを持たないセクション、または --paged または --sysv を指定したAArch32ステートのセクションを含むオブジェクトをリンクすると、リンカは、計算に失敗したセクションのメモリ内のサイズをプログラムヘッダに含むイメージを生成します。これは修正されました。
[SDCOMP-48714] 状況によっては、AArch64ステートの異なるタイプとアラインメントを持つ2つのセクション、または --paged または --sysv のAArch32ステートの2つのセクションを含むプログラムをリンクすると、リンカーは大きなサイズを誤って指定したプログラムヘッダーを含むイメージを生成する可能性がありますファイル内のサイズはメモリのサイズよりも大きくなります。これは修正されました。
[SDCOMP-45848] Arm Compilerで提供されているC++ライブラリと、 --cpu = name の name がArmv7-Rターゲットを指定しリンクされるとき、入力オブジェクトがArmv7-RターゲットのC++ソース言語モードでコンパイルされていると、 Error: L6366E: <object> attributes are not compatible with the provided attributes が誤って報告されることがありました。これは修正されました。
[SDCOMP-46889] 特定の状況で、 -ffp -mode=full でコンパイルするときに、その型によって正確に表現できない浮動小数点数がプログラムに含まれていると、その数値のバイナリ表現は、コンパイル時にコンパイラによって評価されるか、実行時に以下の文字列から浮動小数点への変換関数のいずれかを使用して生成されるかによって、誤って異なることがありました:
これは修正されました。
[SDCOMP-29999] 特定のArm Cライブラリヘッダーファイルでは、ポインタの後にコメントが続くところに文字シーケンス */* が使用されていました。 */* は、サードパーティの静的解析ツールによってフォールトとして報告されていました。これは修正されました。
[SDCOMP-49019] 特定の状況で、アセンブラ、コンパイラ、またはリンカプロセスが別のツールをサブプロセスとして起動した場合、すべての適切なライセンスがすでに使用されていた場合、プロセスがデッドロックすることがありました。これは修正されました。
[SDCOMP-49009] Arm CompilerがMDK-ARMインストレーションへインポートされ、Keil MDKのノードロックあるいはフローティングライセンスと使用された場合、ツールが誤って、 error: Failed to check out a license.Keil Licensing error: No TOOLS.ini file found をレポートすることがありました。これは修正されました。
[SDCOMP-47864] Scalable Vector Extension(SVE)をサポートするターゲットに対して、 -march = name +sve を指定してコンパイルするとき、リンク時間の最適化(LTO)はサポートされません。LTOの使用を避けるには:
このサポートされない機能は、 Scalable Vector Extension User Guide のSVE support章の既知の制限事項にリストされました。今後の リリースノート では既知の問題としては表示されません。
[SDCOMP-28016] 現在のArm Cライブラリの制限のため、 long double データ型はAArch64ステートではサポートされません。
このサポートされない機能は、 armclang Reference Guide の Support level definitions 章 にリストされました。今後のリリースノートでは既知の問題としては表示されません。
[SDCOMP-26080] 現在のArm Cライブラリの制限のため、複素数はAArch64ステートではサポートされません。 .
このサポートされない機能は、 armclang Reference Guide の Support level definitions 章 にリストされました。今後のリリースノートでは既知の問題としては表示されません。
この解答はお客様のお役に立てましたでしょうか?