[llvm-dev] Loop invariant code motion optimization does not happen for the input code

36 views
Skip to first unread message

Sudakshina Dutta via llvm-dev

unread,
May 2, 2021, 2:35:18 AM5/2/21
to LLVM Development List
Dear all,

Greetings. I have been trying to have a loop invariant code motion on the LLVM IR (.ll) file which has been generated from the following .c file.

int main()
{
    int a = 5, b = 20, c = 50, d = 1, x;
    while(a < b)
    {
        x = d + 1;
        x = d + 2;
        c = c + 5;
        a = a + 1;
    }
}
Both the first two statements should qualify for loop invariant code motion. However, loop invariant code does not move out of the loop in the generated .ll file. Note that I have applied the following commands.

clang -S -emit-llvm prog1.c  -o prog1.ll
opt -licm -S prog1.ll -o prog1-opt3.ll -opt-bisect-limit=300

Can you please help in this regard ?

Thanks and regards,
Sudakshina

Craig Topper via llvm-dev

unread,
May 2, 2021, 3:08:16 AM5/2/21
to Sudakshina Dutta, LLVM Development List
Does your function in prog1.ll have the optnone attribute on it? If so try adding "-Xclang -disable-O0-optnone" to your clang command line

~Craig


_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

Sudakshina Dutta via llvm-dev

unread,
May 2, 2021, 3:32:02 AM5/2/21
to Craig Topper, LLVM Development List
Thanks a lot for your help.
Reply all
Reply to author
Forward
0 new messages