[cfe-users] question about loop unrolling

luck.caile via cfe-users cfe-users at lists.llvm.org
Tue Jun 26 12:48:03 PDT 2018


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20180626/f111dc44/attachment.html>


More information about the cfe-users mailing list