2

I'm trying to remove unused code with Keil ARM tools that use ARMCC compiler. I've previously used GCC based compilers for ARM and I could easily remove the unused code with:

-fdata-sections -ffunction-sections

For ARMCC i found similar flag

--split_sections

but it works only with functions and not with variables.

Is there any way to remove unused variables with ARMCC?


Edit:

For example giving the following library code:

lib.c :

static int veryBigArray[1000000UL];

int func1() { ... }

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

and my project code:

project.c:

int main(void)
{
   func1();
}

I want to remove func2() and veryBigArray using compiler/linker optimizations.

4

2 回答 2

1

我们从 ARM 支持收到的官方回答是,目前(ARMCC v5.03 [Build 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

例如,如果全局数据仅在一个函数中使用,并且该函数已定义但从未使用过,则在 armcc 中自动删除数据,无需 --remove。

我说“在大多数情况下”是因为在某些情况下用户告诉编译器不要专门优化它。

Arm 编译器版本 6 (armclang) 确实具有 -fdata-sections。

于 2016-07-15T23:39:50.250 回答