Я пытаюсь выборочно раскатать вторую петлю в следующей программе:Loop разворачивая в звоне
#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;
}
Когда я бег лязга (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
, он не развит какой-либо цикл.
Также есть подсказки о том, как отлаживать ошибки прагмы?