2.16 未使用の関数コード

未使用の関数コードによってコードサイズが無駄に大きくなる場合があります。コンパイラに対するリンカからのフィードバックによって、未使用の関数コードを削除してコードサイズを最小限に抑えることができます。

未使用の関数コードは以下の状況で発生する場合があります。
  • ソースコードで使用されなくなった古い関数がある場合。リンカのフィードバックを使用すると、ソースコードから未使用の関数コードを手動で削除する代わりに、最終イメージから未使用のオブジェクトコードを自動的に削除できます。
  • 関数がインライン関数の場合。インライン関数が static として宣言されていない場合、アウトオブライン関数コードがオブジェクトファイル内に存在していても、そのコードの呼び出しが行われることはありません。
さらに、リンカでは、ARM 関数がいつ Thumb ステートから呼び出され、Thumb 関数がいつ ARM ステートから呼び出されるのかを検出できます。リンカのフィードバックを使用すると、インターワークのコンテキストで使用されない関数がインターワーク用にコンパイルされることを回避できます。

インターワークに必要なコンパイルの削減は、ARMv4T アーキテクチャにのみ該当します。ARMv5T 以降のプロセッサではインターワークによるペナルティは発生しません。
リンカオプション --feedback=filename は、フィードバックファイルを作成します。--feedback_type オプションは、生成された異なるタイプのフィードバックを制御します。
関連する作業
2.17 コンパイル中に未使用の関数を削除してコードサイズを最小化する
関連する参考文書
2.15 コンパイル中のリンカフィードバック
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.