相关疑难解决方法(0)

GCC 5.1循环展开

给出以下代码

#include <stdio.h>

int main(int argc, char **argv)
{
  int k = 0;
  for( k = 0; k < 20; ++k )
  {
    printf( "%d\n", k ) ;
  }
}
Run Code Online (Sandbox Code Playgroud)

使用GCC 5.1或更高版本

-x c -std=c99 -O3 -funroll-all-loops --param max-completely-peeled-insns=1000 --param max-completely-peel-times=10000
Run Code Online (Sandbox Code Playgroud)

部分循环展开,它将循环展开十次然后进行条件跳转.

.LC0:
        .string "%d\n"
main:
        pushq   %rbx
        xorl    %ebx, %ebx
.L2:
        movl    %ebx, %esi
        movl    $.LC0, %edi
        xorl    %eax, %eax
        call    printf
        leal    1(%rbx), %esi
        movl    $.LC0, %edi
        xorl    %eax, %eax
        call    printf
        leal    2(%rbx), %esi
        movl    $.LC0, %edi …
Run Code Online (Sandbox Code Playgroud)

c gcc loops compiler-optimization loop-unrolling

6
推荐指数
1
解决办法
541
查看次数

标签 统计

c ×1

compiler-optimization ×1

gcc ×1

loop-unrolling ×1

loops ×1