[llvm-dev] ThinLTO promotion is ending up with "invalid" IR before IR-Linking

Teresa Johnson via llvm-dev llvm-dev at lists.llvm.org
Fri Dec 23 09:34:33 PST 2016


On Thu, Dec 22, 2016 at 8:55 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:

> Hey,
>
> As I’m playing with Metadata lazy-loading, I added a verifier right before
> running the IRLinker in FunctionImport.cpp, and it does not pass (on
> current trunk) in a few cases. One that I looked at ended up with aliases
> pointing to available_externally functions for instance.
>

How do these look after IRLinking (in the dest module)? I looked at the
logic in renameModuleForThinLTO and all the conversions to
available_externally are predicated on it being in the provided
GlobalsToImport set. But in FunctionImport.cpp selectCallee() we
specifically prevent importing of aliases that would result in the aliasee
becoming available_externally. Presumably the resulting IRLinked dest
module looks legit, otherwise we would have later verifier failures.


> I’m hesitant about breaking the IR verifier like that before calling the
> IRLinker. The alternative I can see now would be:
> - to perform any handling that requires breaking the verifier as part of
> the IRLinker process,
> - or to perform the verifier-breaking changes that we do as a pre-process
> step to the IRLinker as a post-process step on the linked module.
>

Wouldn't this second option result in verification errors on the resulting
dest module?

Teresa


>
> Any thoughts on this?
>
>> Mehdi
>
>


-- 
Teresa Johnson |  Software Engineer |  tejohnson at google.com |  408-460-2413
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161223/13c7d9f0/attachment.html>


More information about the llvm-dev mailing list