[LLVMdev] Is it possible to inline Functions without using LLVM JIT Framework?
Mian M. Hamayun
mian-muhammad.hamayun at imag.fr
Mon Sep 5 06:43:56 PDT 2011
This is exactly what I am interested in. I tried this, and it works for
simple functions that don't use other functions or global data.
But for functions dependent on external/global references, it poses some
problems as I also need to copy/clone these references. I am still
looking into this ... an example from anyone would be great ... :)
I have found another way to tackle this problem. Your comments are still
desirable on any potential side-effects. Here is what I do
- Clone input the module using CloneModule Function.
- Modify the Linkage type to GlobalValue::InternalLinkage for all
(So that they don't conflict with other modules at link time)
- Add my Generated function to the Cloned Module.
- Run Optimization and Inliner Passes.
(This Inlines the functions and removes un-used functions/globals)
- Emit the Optimized BitCode Module.
On 09/02/2011 04:29 PM, Jeff Fifield wrote:
> On Fri, Sep 2, 2011 at 4:23 AM, Mian M. Hamayun
> <mian-muhammad.hamayun at imag.fr> wrote:
>> But I am also looking into the possibility of doing the same using LLVM Pass
>> Manager (Without using llvm-ld). This looks difficult due to the fact that
>> the function definitions ought to be in the same module as the caller, in
>> order to be inlined and then optimized onwards, I guess !!! (Correct me If I
>> am Wrong at this)
> I have a system where I need to do this quite often. In my inlining
> pass I open the module containing the function I wish to inline, copy
> the function into the current module, then call InlineFunction.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 3781 bytes
Desc: S/MIME Cryptographic Signature
More information about the llvm-dev