[llvm-dev] LLVMLinkModules2() C-API question
Alex Denisov via llvm-dev
llvm-dev at lists.llvm.org
Sat Jun 4 07:24:37 PDT 2016
Hi Lefteris,
I’m not sure how _right_ my solution is, but it should work, at least as a workaround.
To prevent a CommonModule from being destroyed you can make a copy of the module. You can do so using LLVMCloneModule method, so that the code may look like this:
let commonModuleForA = LLVMCloneModule(CommonModule)
LLVMLinkModule2(commonModuleForA, ModuleA)
let commonModuleForB = LLVMCloneModule(CommonModule)
LLVMLinkModule2(commonModuleForB, ModuleB)
Hope that will help you.
Best regards,
Alex.
> On 04 Jun 2016, at 14:01, Lefteris Karapetsas via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Hey all,
>
> A quick question about the LLVM C-Api and using LinkModules. In a normal situation where I have 2 LLVM modules and 1 depends on the other using LLVMLinkModules2() works perfectly.
>
> LLVMLinkModules2() "Links the source module into the destination module. The source module is destroyed." according to the comment of the function. That is all fine when you only have 2 modules.
>
> But how are you supposed to act in a triangulary dependency like below?
>
> CommonModule
> |
> -----------------
> | |
> ModuleA Module B
>
> 1) Create and verify common module.
> 2) Create ModuleA, Link CommonModule to ModuleA and verify the new module.
> 3) Now we have a problem. Even though we wanted to repeat step (2) for Module B this fails due to CommonModule being "damaged" as the documentation says. Even though LLVMLinkModules2() function returns success, Module B is lacking structs and functions that were defined in the CommonModule.
>
>
> I am probably doing this the wrong way and am missing something obvious.
> Any tips on how to do this the right way? Thanks in advance!
>
> ---
>
> Best Regards,
>
> Lefteris(Eleftherios) Karapetsas
> About me: My Website
>
> Keep in touch: Twitter, Github, Blog
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
--
AlexDenisov
Software Engineer, http://lowlevelbits.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 496 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160604/43286733/attachment.sig>
More information about the llvm-dev
mailing list