[LLVMdev] Using a function from another module

Garrison Venn gvenn.cfe.dev at gmail.com
Mon Jan 11 02:14:02 PST 2010

So, having given my last response, I'm still bothered by this. I think what I find unusual is 
that one has to manually JIT and map (ExecutionEngine::addGlobalMapping(...)). Maybe
I'm out there, but I keep on wanting to have the linkage supplied in the Module A decl. take
care of this for me. So instead of an enum value of llvm::GlobalValue::ExternalLinkage, 
I could conceptually give it (the decl.), a module (module B in this case), or maybe an enum 
linkage, module pair. Of course representing this in IR might be a problem.

Anyway what do I know.  


On Jan 10, 2010, at 14:23, Michael Muller wrote:

> Kenneth Uildriks wrote:
>> On Sun, Jan 10, 2010 at 12:38 PM, Garrison Venn <gvenn.cfe.dev at gmail.com> wrote:
>>> Won't passing llvm::Function* around vs strings (function names), also work, at code generation time,
>>> without the need for a module A dec to module B impl. mapping?
>>> Garrison
>> Nope.  You cannot place a call instruction into one module whose
>> callee is a Function from another module.  You have to put a
>> declaration into the same module, and have your call instruction call
>> that.  And then they need to be linked together, either by llvm-link
>> or (if JITting) by addGlobalMapping.
> Actually, this is the first thing I tried, and the correct function does seem 
> to get called - but it looks like the Verifier complains about it, which leads 
> me to believe that there may be broader issues involved.
> =============================================================================
> michaelMuller = mmuller at enduden.com | http://www.mindhog.net/~mmuller
> -----------------------------------------------------------------------------
> Scnozwangers? Vermicious Knids? What kind of rubbish is that?
> - Mr. Salt, "Willy Wonka and the Chocolate Factory"
> =============================================================================

More information about the llvm-dev mailing list