[cfe-users] question about loop unrolling

George Burgess IV via cfe-users cfe-users at lists.llvm.org
Wed Jun 27 22:45:40 PDT 2018


It may be that clang added the `optnone` attribute to main when you built
it in (b): https://godbolt.org/g/WhM1UA . optnone, as the name implies,
requests that optimizations are skipped for a given function. If this is
the case, removing the optnone might make (b) do what you want.

For (c), I'd introduce something that may have side-effects, so LLVM can't
easily model+eliminate the entire loop. Examples of this being an external
function call (https://godbolt.org/g/toqR6b) or making your int volatile (
https://godbolt.org/g/4svW7F).

George

On Tue, Jun 26, 2018 at 12:48 PM luck.caile via cfe-users <
cfe-users at lists.llvm.org> wrote:

> 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:
>
>    1. adding pragma before loop in test.cpp: #pragma clang loop
>    unroll_count(2)
>
> It did not unroll the loop.
>
>    1. 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…..”
>
>    1. 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
> _______________________________________________
> cfe-users mailing list
> cfe-users at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20180627/96e2743b/attachment.html>


More information about the cfe-users mailing list