Hi, I am trying out ORC v2 and facing some problems. I am using LLVM 8.0.1. I updated my ORC v1 implementation from 6.0 to 8.0 based on Kaleidoscope example (i.e. using Legacy classes) and that works fine. Now I am trying out ORC v2 apis, based on https://github.com/llvm-mirror/llvm/blob/master/examples/Kaleidoscope/BuildingAJIT/Chapter2/KaleidoscopeJIT.h. I have got it to compile and build. But looks like my compiled code is not being optimized at all. For optimization I am using the PassManagerBuilder class to setup the passes. I use OptLevel = 2. This works perfectly with ORC v1 apis, but with ORC v2 I am not sure what is happening. I can see that the optimizeModule() is being called. Second issue is - I need to use an instance method as optimizeModule() but based on the example this is now a static method. Is this a restriction in the new api? I need to pass some parameters from the JIT context such as what optimization level to use. Thanks and Regards Dibyendu
Hi Dibyendu, Could you please send me your unoptimized and expected optimized code? The default implementation only contains some transformations. It would be helpful to know what you are actually trying. Optimize Module is just a function object. On Sat, 10 Aug 2019 at 22:55, Dibyendu Majumdar via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hi, > > I am trying out ORC v2 and facing some problems. > > I am using LLVM 8.0.1. > I updated my ORC v1 implementation from 6.0 to 8.0 based on > Kaleidoscope example (i.e. using Legacy classes) and that works fine. > > Now I am trying out ORC v2 apis, based on > > https://github.com/llvm-mirror/llvm/blob/master/examples/Kaleidoscope/BuildingAJIT/Chapter2/KaleidoscopeJIT.h > . > > I have got it to compile and build. > But looks like my compiled code is not being optimized at all. > > For optimization I am using the PassManagerBuilder class to setup the > passes. I use OptLevel = 2. This works perfectly with ORC v1 apis, but > with ORC v2 I am not sure what is happening. I can see that the > optimizeModule() is being called. > > Second issue is - I need to use an instance method as optimizeModule() > but based on the example this is now a static method. Is this a > restriction in the new api? I need to pass some parameters from the > JIT context such as what optimization level to use. > > Thanks and Regards > Dibyendu > _______________________________________________ > 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/20190811/d9482339/attachment.html>
Hi Praveen, On Sat, 10 Aug 2019 at 21:05, Praveen Velliengiri <praveenvelliengiri at gmail.com> wrote:> > Could you please send me your unoptimized and expected optimized code? The default implementation only contains some transformations. It would be helpful to know what you are actually trying. > Optimize Module is just a function object. >You can view the code here: https://github.com/dibyendumajumdar/ravi/blob/master/include/ravi_llvmcodegen.h https://github.com/dibyendumajumdar/ravi/blob/master/src/ravi_llvmjit.cpp Just look for USE_ORCv2_JIT The code is messy but that is because LLVM's api keeps changing from version to version, causing huge issues for users.> > On Sat, 10 Aug 2019 at 22:55, Dibyendu Majumdar via llvm-dev <llvm-dev at lists.llvm.org> wrote: >> I am trying out ORC v2 and facing some problems. >> >> I am using LLVM 8.0.1. >> I updated my ORC v1 implementation from 6.0 to 8.0 based on >> Kaleidoscope example (i.e. using Legacy classes) and that works fine. >> >> Now I am trying out ORC v2 apis, based on >> https://github.com/llvm-mirror/llvm/blob/master/examples/Kaleidoscope/BuildingAJIT/Chapter2/KaleidoscopeJIT.h. >> >> I have got it to compile and build. >> But looks like my compiled code is not being optimized at all. >> >> For optimization I am using the PassManagerBuilder class to setup the >> passes. I use OptLevel = 2. This works perfectly with ORC v1 apis, but >> with ORC v2 I am not sure what is happening. I can see that the >> optimizeModule() is being called. >> >> Second issue is - I need to use an instance method as optimizeModule() >> but based on the example this is now a static method. Is this a >> restriction in the new api? I need to pass some parameters from the >> JIT context such as what optimization level to use. >> >> Thanks and Regards >> Dibyendu