This is an archive of the discontinued LLVM Phabricator instance.

Linker: Add support for GlobalIFunc.
ClosedPublic

Authored by pcc on Nov 28 2018, 9:12 PM.

Details

Summary

GlobalAlias and GlobalIFunc ought to be treated the same by the IR
linker, so we can generalize the code to be in terms of their common
base class GlobalIndirectSymbol.

Diff Detail

Repository
rL LLVM

Event Timeline

pcc created this revision.Nov 28 2018, 9:12 PM
tejohnson accepted this revision.Nov 28 2018, 10:38 PM

LGTM with a few minor comments.

llvm/include/llvm/Transforms/Utils/ValueMapper.h
185 ↗(On Diff #175810)

Elsewhere this was changed to "Constant &Target", make this one consistent.

llvm/lib/Linker/IRMover.cpp
590 ↗(On Diff #175810)

This comment block might need to be generalized since it talks about aliases

llvm/test/LTO/Resolution/X86/ifunc2.ll
13 ↗(On Diff #175810)

Nit: these 2 check lines correspond to the below @foo_resolver def, so it would make more sense to put them right before it, whereas the ones you check right before it are for the copy from the other module (which might make more sense shown after the below def).

This revision is now accepted and ready to land.Nov 28 2018, 10:38 PM
This revision was automatically updated to reflect the committed changes.
pcc marked 3 inline comments as done.
Herald added a project: Restricted Project. · View Herald TranscriptAug 8 2019, 3:11 PM