[llvm-dev] Forcing loop optimization

Sudakshina Dutta via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 15 03:36:54 PDT 2021


Dear Prof. Johannes Doerfert,

Sorry to disturb you again. The code LLVM IR that you have shared is not
only the result of applying x86-64 clang 12.0.0 applied with -emit-llvm
-Xclang -disable-O0-optnone options. You might have applied some other
options. The reason I am asking is that the LLVM IR code which is shared
has a header and footer which generally do not appear if a code is
subjected to godbolt explorer. If the LLVM IR code generated by applying
x86-64 clang 12.0.0 applied with -emit-llvm -Xclang -disable-O0-optnone
options is subjected to opt with -sroa -loop-unroll -unroll-count=3
options, some error is shown. I am very new to compiler explorer. I shall
be grateful if you kindly reply.

Thanks,
Sudakshina

On Tue, Jun 15, 2021 at 9:01 AM Sudakshina Dutta <sudakshina at iitgoa.ac.in>
wrote:

> Thanks a lot Mr. Johannes Doerfert.
>
> On Mon, Jun 14, 2021 at 8:07 PM Johannes Doerfert <
> johannesdoerfert at gmail.com> wrote:
>
>> 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
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210615/9701d89f/attachment.html>


More information about the llvm-dev mailing list