Carlo Kok via llvm-dev
2016-Nov-24 13:39 UTC
[llvm-dev] llvm optimizer turning musttail into tail
I've got some calls like: musttail call void bitcast (i32 (i32, i8*, %Type*)* @MyMethod to void (i32, i8*)*)(i32 %0, i8* %1) ret void Into something like: %8 = tail call i32 @MyMethod(i32 %0, i8* %1, %Type* null) ret void I realize I'm losing a parameter there, but this is an interface jump trick I use and relies on the end code being a 'jmp' (x86). I realize i can probably use noopt & noinline to do this trick, but I do want llvm to optimize and inline calls if it can prove it always calls a given method. Any way i can do this? -- Carlo Kok RemObjects Software
Carlo Kok via llvm-dev
2016-Nov-24 13:41 UTC
[llvm-dev] llvm optimizer turning musttail into tail
On 2016-11-24 14:39, Carlo Kok via llvm-dev wrote:> > I've got some calls like: > > musttail call void bitcast (i32 (i32, i8*, %Type*)* @MyMethod to void > (i32, i8*)*)(i32 %0, i8* %1) > ret void >This should have said: that llvm optimizes into something like:> %8 = tail call i32 @MyMethod(i32 %0, i8* %1, %Type* null) > ret void > > I realize I'm losing a parameter there, but this is an interface jump > trick I use and relies on the end code being a 'jmp' (x86). I can probably> use noopt & noinline to do this trick, but I do want llvm> to optimize and inline calls if it can prove it always calls a given > method. Any way i can do this? >-- Carlo Kok RemObjects Software
Sean Silva via llvm-dev
2016-Nov-27 00:06 UTC
[llvm-dev] llvm optimizer turning musttail into tail
This sounds buggy to me. What pass is doing this? -- Sean Silva On Thu, Nov 24, 2016 at 5:39 AM, Carlo Kok via llvm-dev < llvm-dev at lists.llvm.org> wrote:> > I've got some calls like: > > musttail call void bitcast (i32 (i32, i8*, %Type*)* @MyMethod to void > (i32, i8*)*)(i32 %0, i8* %1) > ret void > > Into something like: > %8 = tail call i32 @MyMethod(i32 %0, i8* %1, %Type* null) > ret void > > I realize I'm losing a parameter there, but this is an interface jump > trick I use and relies on the end code being a 'jmp' (x86). I realize i can > probably use noopt & noinline to do this trick, but I do want llvm to > optimize and inline calls if it can prove it always calls a given method. > Any way i can do this? > > -- > Carlo Kok > RemObjects Software > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://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/20161126/65c604c3/attachment.html>
Sean Silva via llvm-dev
2016-Nov-27 00:37 UTC
[llvm-dev] llvm optimizer turning musttail into tail
r287955 seems like it might be related. -- Sean Silva On Sat, Nov 26, 2016 at 4:06 PM, Sean Silva <chisophugis at gmail.com> wrote:> This sounds buggy to me. What pass is doing this? > > -- Sean Silva > > On Thu, Nov 24, 2016 at 5:39 AM, Carlo Kok via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> >> I've got some calls like: >> >> musttail call void bitcast (i32 (i32, i8*, %Type*)* @MyMethod to void >> (i32, i8*)*)(i32 %0, i8* %1) >> ret void >> >> Into something like: >> %8 = tail call i32 @MyMethod(i32 %0, i8* %1, %Type* null) >> ret void >> >> I realize I'm losing a parameter there, but this is an interface jump >> trick I use and relies on the end code being a 'jmp' (x86). I realize i can >> probably use noopt & noinline to do this trick, but I do want llvm to >> optimize and inline calls if it can prove it always calls a given method. >> Any way i can do this? >> >> -- >> Carlo Kok >> RemObjects Software >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://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/20161126/d41676f1/attachment.html>
Reasonably Related Threads
- llvm optimizer turning musttail into tail
- [lld] elf linker creates undefined empty symbol
- Missing symbol __executable_start on Android when linking with LLD
- [lld] elf linker creates undefined empty symbol
- Missing symbol __executable_start on Android when linking with LLD