2

ARMCCコンパイラを使用するKeilARMツールを使用して未使用のコードを削除しようとしています。以前、ARM用にGCCベースのコンパイラを使用しましたが、次の方法で未使用のコードを簡単に削除できました。

-fdata-sections -ffunction-sections

ARMCCの場合、同様のフラグが見つかりました

--split_sections

ただし、関数でのみ機能し、変数では機能しません。

ARMCCで未使用の変数を削除する方法はありますか?


編集:

たとえば、次のライブラリコードを指定します。

lib.c :

static int veryBigArray[1000000UL];

int func1() { ... }

int func2() { memset(veryBigArray, 0, sizeof(veryBigArray); }

と私のプロジェクトコード:

project.c:

int main(void)
{
   func1();
}

コンパイラ/リンカーの最適化を使用してfunc2()とveryBigArrayを削除したいと思います。

4

2 に答える 2

1

ARMサポートから受け取った公式の回答は、現在(ARMCC v5.03 [ビルド24])ARMCCコンパイラで利用できるそのようなオプションはないということです-彼らはそのようなシナリオについて考えたことはありません。

うまくいけば、それは将来のARMCCバージョンに追加されるでしょう。

于 2013-02-26T09:55:38.367 に答える
1

ほとんどの場合、データが独自のセクションにある場合は、リンカーオプションとして--removeを使用して未使用のデータを削除できます。独自のセクションにデータを配置するには、別のファイルを作成するか、セクション属性を使用します:http: //infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0375g/ chr1359124982450.html

たとえば、グローバルデータが1つの関数でのみ使用され、関数が定義されているが使用されていない場合、データは--removeを使用せずにarmccで自動的に削除されます。

「ほとんどの場合」と言うのは、ユーザーがコンパイラーに特に最適化しないように指示する場合があるためです。

Armコンパイラバージョン6(armclang)には、-fdata-sectionsがあります。

于 2016-07-15T23:39:50.250 に答える