『コンパイラリファレンス』に対する改訂

この付録では、本書の改訂版に加えられた技術的変更について説明しています。

Table 45. 発行 D と発行 E の相違点

変更点関連するトピック
--reassociate_saturation の使用方法の説明を改善しました。--reassociate_saturation、--no_reassociate_saturation
オペコードとレジスタのエンコーディングの詳細を追加しました。__cdp コンパイラ組み込み関数
オプション --allow_fpreg_for_nonfpdata--no_allow_fpreg_for_nonfpdata を追加しました。--allow_fpreg_for_nonfpdata、--no_allow_fpreg_for_nonfpdata
オプション --conditionalize--no_conditionalize を追加しました。--conditionalize、--no_conditionalize
SC000 を --cpu オプションの表に追加しました。--cpu=name
SC300 と SC000 を --compatible オプションの表に追加しました。--compatible=name
--depend=filename の記述を変更し、複数のファイルの場合は、生成された依存関係ファイルにすべてのソースファイルの依存関係行が含められることを明記しました。--depend=filename
__global_reg 記憶域クラス指定子を使用した volatile 変数は無視されるという注意を追加しました。__global_reg

Table 46. 発行 C と発行 D の相違点

変更点関連するトピック
コンパイラ組み込み関数の概要の表とペ―ジ番号を追加しました。NEON コンパイラ組み込み関数の概要
構文とコンパイラ組み込み関数の短縮表現を示す表を追加しました。コンパイラ組み込み関数のプロトタイプの軽度なエラーを修正しました。コンパイラ組み込み関数
--profile オプションを削除しました。コンパイラのコマンドラインオプション
ビルトイン GNU アトミックメモリアクセス関数のリストを追加しました。GNU 組み込み関数
CPU のリストに Cortex-A15 と Cortex-R7 を追加しました。
オプションを --implicit_using_std から --using_std に変更しました。

Table 28

各 ARM アーキテクチャバージョンで Thumb アーキテクチャバージョンの表に v7E-M を追加しました。

Table 29

レジスタの中には一部のアーキテクチャで利用できないものがある旨のメモを追加しました。

名前付きレジスタ変数

--echo オプションを追加しました。--echo
--use_frame_pointer オプションを追加しました。

--use_frame_pointer

--depend_single_line オプションと --no_depend_single_line オプションを追加しました。
ARMCCnn* に対する ARMCC41* 環境変数を変更しました。

各トピック

ARM コンパイラ v4.1 から ARM コンパイラ 4.1 以降に変更しました。
--library_interface=none オプションを追加しました。

--library_interface=lib

--preprocess_assembly オプションを追加しました。

--preprocess_assembly

-Warmcc,--gcc_fallback オプションを追加しました。

-Warmcc,--gcc_fallback

--remove_unneeded_entities オプションの説明を変更しました。

--remove_unneeded_entities、--no_remove_unneeded_entities

変数リストを使用するために --apcs オプションを変更しました。

--apcs=qualifer...qualifier

ARM コンパイラツールチェーンと DS-5 を使用した場合にオプションが不要なことを追記しました。
コマンドラインオプションと検索パスへのリンクを追加しました。
検索パスとして ../include を追加しました。

--implicit_include_searches、--no_implicit_include_searches

『ARM DS-5 用 FLEXnet ライセンス管理ガイド』の記述に商標を追加しました。

--licretry

__cdp の例の変数宣言で const unsigned int を追加しました。また、第 2 オペコードは 3 ビットである必要があるため、ops の値を 0xAB から 0xA3 に変更しました。

__cdp コンパイラ組み込み関数

ARM および 32 ビット Thumb をサポートするプロセッサ用にコンパイルした場合、__irq 関数は ARM コードまたは Thumb コードにコンパイルするというメモを変更しました。--arm#pragma armARM、Thumb、および ThumbEE 命令セットへのリンクを追加しました。

__irq

ARMv6-M および ARMv7-M 以外のアーキテクチャでのみ PC が LR-4 に設定されることに言及しました。さらに、ARMv6-M と ARMv7-M、__irq は、コンパイルされた出力に影響を与えないというメモを追加しました。

__irq

廃止の --ltcg に関するメモを追加しました。『コンパイラの使用』の ltcg のトピックへのリンクも追加しました。

--ltcg

FPv4_SP を FPv4-SP に変更しました。

--fpu=name

ARM 用語集をその他の情報に追加しました。

表記規則とフィードバック

--visibility_inlines_hidden から #pragma GCC visibility を削除しました。

--visibility_inlines_hidden

mask および flags ビットについての詳細を追加しました。『コンパイラの使用』<fenv.h> のトピックについてのメモとリンクも追加しました。「好ましい」を「推奨」に変更しました。

VFP ステータスコンパイラ組み込み関数

使用法のセクションで、クラス、構造体、共用体、および列挙型について言及しました。この属性を関数と変数に適用できるという記述も追加しした。
--vfp--fpu に変更しました。

--fpu=name

複数のソースファイルを指定した場合の、--depend オプションの記述を修正しました。

--depend=filename


Table 47. 発行 B と発行 C の相違点

変更点関連するトピック
標準 C90 を C90 に変更するなど、「サポートされるモード」列を更新しました。複合リテラルに GNU C++ を追加しました。可変個引数マクロに C90、C99、C++ を追加しました。__alignof__ の起点を GCC 固有に変更しました。void ポインタ算術演算から GNU C++ を削除しました。Table 37
標準 C99 機能のリストからモード(C90 と C++)の記述を削除しました。C および C++ 言語に対する GNU 拡張機能
ISO 標準に属さない機能のリストから asm キーワードを削除しました。asm キーワードは標準 C++ の一部であることが削除の理由です。asm キーワードは個別に記述されています。C および C++ 言語に対する GNU 拡張機能
列名を「拡張対象」から「起源」に変更しました。__attribute__* についてのエントリの「起源」列で GCC 固有について言及しました。Table 37

Table 48. 発行 A と発行 B の相違点

変更点関連するトピック
コンパイラで、at 属性を不完全型での宣言に使用するとエラーが発生します。__attribute__((at(address))) 変数属性
入力パラメータの記述。このコンパイラ組み込み関数は上級ユーザを対象にしているというユーザガイダンス。__cdp コンパイラ組み込み関数
符号なし範囲 0 ≤ ≤ 2sat - 1 にサチュレートされた値を返します。__usat コンパイラ組み込み関数
概要と使用法の記述。__promise コンパイラ組み込み関数
--ignore_missing_headers は、依存関係生成オプションが指定されている場合のみ有効です。--ignore_missing_headers
rvct30rvct30_c90rvct31rvct31_c90rvct40rvct40_c90 の明確な説明。--library_interface=lib
ARM Linux 変換オプションを指定して --show_cmdline を使用する場合は、-Warmcc を使用する必要があります。--show_cmdline
--show_cmdline が有用な場合。--show_cmdline
--default_definition_visibility=visibility が、extern 変数および関数定義のデフォルトの ELF シンボルの可視性を制御することを明確化。--default_definition_visibility=visibility
__declspec(dllimport) は、DLL ライブラリへのリンク時に、ダイナミックシンボルテーブルからシンボルをインポートします(文の明確化のみ)。__declspec(dllimport)
新トピック--narrow_volatile_bitfields
APSRPSRDSPMVFR1MVFR0FPINSTFPINST2 が追加されました。名前付きレジスタ変数
追加の GNU 組み込み関数。標準以外の関数
キャストする場合の __packed の使用に対する制限を明確化。__packed
Cortex-M4 プロセッサなど、ARM v7E-M アーキテクチャが追加されました。--cpu=name
__TARGET_FEATURE_NEON が追加されました。定義済みマクロ
ARM コンパイラでサポートされている GNU コンパイラの拡張機能である、新しい関数属性。__attribute__((format_arg(string-index))) 関数属性
デフォルトオプションは最適化レベルによって異なります。--data_reorder、--no_data_reorder

次の 2 つがコンパイル可能になったため、「キーワード __align は、変数名のすぐ前に置かれます」は、削除されました。

__align(n) static int x;
static __align(n) int x;
__align
C および C++ 言語に対する GNU 拡張機能。
制限の明確化。--fpu=name
デフォルトオプションは、どの最適化レベルでも同じです。--multifile, --no_multifile
最適化レベルは、マルチファイルのコンパイルに依存しません。-Onum
オプションは、ベクトル化の用途に限定する必要はありません。--reassociate_saturation、--no_reassociate_saturation
ドキュメントから削除されました。技術情報記事として利用可能です。詳細については、GNU 言語拡張機能の概要の表を参照して下さい。asm キーワード、case の範囲、共用体のキャスト、文字エスケープシーケンス、複合リテラル、条件、指定済みのイニシャライザ、拡張左辺値、イニシャライザ、インライン関数、値としてのラベル、ポインタ算術演算、ステートメント式、無名のフィールド、長さがゼロの配列。
文の明確化。__wfi コンパイラ組み込み関数
文の明確化。__yield コンパイラ組み込み関数
モジュロ 64 からモジュロ 264 の 4 つの組み込み関数のモジュロ結果の値を変更しました。

__smlald コンパイラ組み込み関数

__smlaldx コンパイラ組み込み関数

__smlsld コンパイラ組み込み関数

__smlsldx コンパイラ組み込み関数

__ssub16 intrinsic の val オプションの両方に対して加算から減算に変更しました。__ssub16 コンパイラ組み込み関数

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711