[LLVMdev] Problems with lazy linking change

Eli Friedman eli.friedman at gmail.com
Fri Nov 4 10:55:37 PDT 2011


On Fri, Nov 4, 2011 at 10:46 AM, Matt Pharr <matt.pharr at gmail.com> wrote:
> r143524 changed ModuleLinker such that when linking a Module B into a Module A, any internal/private/... functions in B are only linked into A if there is a use of them in A.  This is problematic for my usage of module linking, where I'm basically linking a few modules together (some of which include internal functions) and then generating additional code that may use some of the internal functions--so I'd like everything to be linked in at the start, so that all of those functions are available.  I don't want to not mark those functions as internal, since if they're not used, I'd like them to be eliminated when I'm done with compilation.  With this change, those functions are now no longer available.
>
> If there's a different way I should be doing this (i.e. if I'm doing the wrong thing in the above), I'd be interested to hear a suggestion.

One way to do something like this is to mark the relevant functions
external, then use the -internalize pass once everything is linked
together.  That should be much less sensitive to how exactly linking
works.

-Eli




More information about the llvm-dev mailing list