[llvm-dev] Forcing loop optimization

Johannes Doerfert via llvm-dev llvm-dev at lists.llvm.org
Mon Jun 14 07:37:11 PDT 2021


Hi Sudakshina,

Add -sroa (or mem2reg) to your second command to simplify the IR in a 
way loop unroll can deal with:

https://godbolt.org/z/refxnMcf3

I removed options that are not needed in the link above.

Hope this helps,
   Johannes


On 6/14/21 8:23 AM, Sudakshina Dutta via llvm-dev wrote:
> Dear all,
>
> Good day to you. Is it possible to have forced application of loop
> unrolling or any other loop optimization ? I have tried applying loop
> unrolling on the following code. However, the optimization has not been
> applied by Clang.
>
> *Code (code.c)*
> int main()
> {
>      int i1, i2, N;
>      int In[50], A[50], D[50];
>
>      N = 25;
>      A[0] = In[0] + 5;
>      #pragma clang loop unroll (enable)
>      for(i1 = 1; i1 <= 25; i1++)
>      {
>              A[i1] = In[i1];
>              D[i1] = A[i1];
>      }
>      return D[N];
> }
>
> *The applied commands*
>
>     1. clang -S -emit-llvm code.c  -o code.ll -Xclang -disable-O0-optnon
>     2. opt -loop-unroll -S code.ll -o code-opt.ll -opt-bisect-limit=300
>     -unroll-count=3 -print-after=loop-unroll
>
> Regards,
> Sudakshina
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list