[llvm-dev] ORC v2 question

Dibyendu Majumdar via llvm-dev
2019-08-10T20:13:05Z

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