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? > > GarrisonNope. 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.
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" =============================================================================
Cool! I wouldn't have believed it until I saw my test results. Thanks for ed. Garrison On Jan 10, 2010, at 14:02, 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.
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. Garrison 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" > =============================================================================