Sorry for what may possibly be a rather stupid question, but how on earth do you make LLC inline a function? I've got this code: attributes 0 = { alwaysinline nounwind } define internal i32 @lambda(i32 %a, i32 %x) #0 { %1 = add i32 %a, %x ret i32 %1 } define i32 @foo(i32 %a) nounwind { %1 = call i32 @lambda(i32 %a, i32 10) ret i32 %1 } And no matter what I do, the function @lambda ends up being called with a call instruction. I've tried with -O2, -O3, and with and without the alwaysinline attribute. How do I get LLC or Clang to inline the above @lambda function? Thanks in advance! -- Mikael -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131201/0787ea68/attachment.html>
You should use "opt" with -inline, or -O2/3 to optimise this. llc only runs backend optimisations. On 1 December 2013 18:51, Mikael Lyngvig <mikael at lyngvig.org> wrote:> Sorry for what may possibly be a rather stupid question, but how on earth > do you make LLC inline a function? I've got this code: > > attributes 0 = { alwaysinline nounwind } > > define internal i32 @lambda(i32 %a, i32 %x) #0 { > %1 = add i32 %a, %x > ret i32 %1 > } > > define i32 @foo(i32 %a) nounwind { > %1 = call i32 @lambda(i32 %a, i32 10) > ret i32 %1 > } > > And no matter what I do, the function @lambda ends up being called with a call instruction. I've tried with -O2, -O3, and with and without the alwaysinline attribute. > > How do I get LLC or Clang to inline the above @lambda function? > > Thanks in advance! > > > -- Mikael > > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131201/10f096f0/attachment.html>
Thank you! -- Mikael 2013/12/1 Joey Gouly <joel.gouly at gmail.com>> You should use "opt" with -inline, or -O2/3 to optimise this. > llc only runs backend optimisations. > > > > On 1 December 2013 18:51, Mikael Lyngvig <mikael at lyngvig.org> wrote: > >> Sorry for what may possibly be a rather stupid question, but how on earth >> do you make LLC inline a function? I've got this code: >> >> attributes 0 = { alwaysinline nounwind } >> >> define internal i32 @lambda(i32 %a, i32 %x) #0 { >> %1 = add i32 %a, %x >> ret i32 %1 >> } >> >> define i32 @foo(i32 %a) nounwind { >> %1 = call i32 @lambda(i32 %a, i32 10) >> ret i32 %1 >> } >> >> And no matter what I do, the function @lambda ends up being called with a call instruction. I've tried with -O2, -O3, and with and without the alwaysinline attribute. >> >> How do I get LLC or Clang to inline the above @lambda function? >> >> Thanks in advance! >> >> >> -- Mikael >> >> >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131201/81face6d/attachment.html>
Maybe Matching Threads
- [LLVMdev] x86: inline an LLVM IR function?
- [LLVMdev] "Mapping High-Level Constructs to LLVM IR" Github URL
- [LLVMdev] "Mapping High-Level Constructs to LLVM IR" Github URL
- [LLVMdev] "Mapping High-Level Constructs to LLVM IR" Github URL
- [LLVMdev] Anybody translating the LLVM FAQ from HTML to Sphinx?