[llvm-dev] question about loop unrolling

luck.caile via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 26 15:45:18 PDT 2018

int main() {
int ret = 0;
for (int i = 0; i < 100; i++) {
    ret += i;
return ret;
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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180626/4cba7bda/attachment.html>

More information about the llvm-dev mailing list