【发布时间】:2014-12-05 06:38:49
【问题描述】:
我正在尝试在以下程序中选择性地展开第二个循环:
#include <stdio.h>
int main()
{
int in[1000], out[1000];
int i,j;
#pragma nounroll
for (i = 100; i < 1000; i++)
{
in[i]+= 10;
}
#pragma unroll 2
for (j = 100; j < 1000; j++)
{
out[j]+= 10;
}
return 1;
}
当我使用以下选项运行 clang (3.5) 时,它会将两个循环展开 4 次。
clang -std=c++11 -O3 -fno-slp-vectorize -fno-vectorize -mllvm -unroll-count=4 -mllvm -debug-pass=Arguments -emit-llvm -c *.cpp
我做错了什么?另外,如果我添加-fno-unroll-loops,或跳过-unroll-count=4 标志,它不会展开任何循环。
另外,关于如何调试编译错误的任何提示?
【问题讨论】:
标签: c++ optimization clang llvm-clang loop-unrolling