test.cpp:
int main() {
int ret = 0;
for (int i = 0; i < 100; i++) {
ret += i;
}
return ret;
}
Hi,
I’m new to clang/llvm recently and interested in doing some stuff in optimization passes.
I tried to play above simple test with clang and see if I could get expected llvm IR by enabling llvm loop unrolling of a count 2.
Here are my attempts:
- adding pragma before loop in test.cpp: #pragma clang loop unroll_count(2)
It did not unroll the loop.
- clang++ -c -emit-llvm -S -std=c++11 test.cpp
opt test.ll -mem2reg -loop-unroll -unroll-count=2 -unroll-allow-partial -S
It did not unroll the loop.
In addition, by enabling -debug, I saw message “Skipping ‘Unroll Loops’ pass……”
- clang++ -c -emit-llvm -S -std=c++11 -O1 test.cpp
It unrolled the loop completely and directly return the final result(4950).
I assume that my llvm and clang are latest and installed correctly.
Could someone please let me know what I am missing here?
Thanks,
Kai