小编Chr*_* BB的帖子

有没有让 GCC 优化掉冗余指令的技巧?

编译gcc -mcpu=cortex-m0 -mthumb -Os 会发出冗余指令,如本说明性示例所示:

void memzero(void* p, int n)
{
    n -= 4;
    do
    {
        *(int*)((char*)p + n) = 0;
        n -= 4;
    }
    while(n > 0);
}
Run Code Online (Sandbox Code Playgroud)

结果是:

memzero:
  movs r3, #0
  subs r1, r1, #4
.L2:
  str r3, [r0, r1]
  subs r1, r1, #4
  cmp r1, #0
  bgt .L2
  bx lr
Run Code Online (Sandbox Code Playgroud)

显然,显式比较本质上是一个 nop。有没有办法打开更多优化来解决这个问题?

c gcc arm

3
推荐指数
1
解决办法
211
查看次数

标签 统计

arm ×1

c ×1

gcc ×1