mirror of
https://github.com/RPCSX/llvm.git
synced 2025-03-02 09:58:06 +00:00
ModuleLinker: only import what is in GlobalsToImport, regarless if it is a function or not.
The alias handling was specific to the old iterative inlining mechanism, so that is dead now. The variable handling could make a difference, since we were previously falling through to the normal selection logic, but we don't observe changes in the validation because no client seems to rely on it. Differential Revision: http://reviews.llvm.org/D19307 From: Mehdi Amini <mehdi.amini@apple.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266893 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4ca56a61f4
commit
9887f4ef74
@ -268,31 +268,15 @@ bool ModuleLinker::shouldLinkFromSource(bool &LinkFromSrc,
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isPerformingImport()) {
|
||||
// LinkFromSrc iff this is a global requested for importing.
|
||||
LinkFromSrc = GlobalsToImport->count(&Src);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SrcIsDeclaration = Src.isDeclarationForLinker();
|
||||
bool DestIsDeclaration = Dest.isDeclarationForLinker();
|
||||
|
||||
if (isPerformingImport()) {
|
||||
if (isa<Function>(&Src)) {
|
||||
// For functions, LinkFromSrc iff this is a function requested
|
||||
// for importing. For variables, decide below normally.
|
||||
LinkFromSrc = GlobalsToImport->count(&Src);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if this is an alias with an already existing definition
|
||||
// in Dest, which must have come from a prior importing pass from
|
||||
// the same Src module. Unlike imported function and variable
|
||||
// definitions, which are imported as available_externally and are
|
||||
// not definitions for the linker, that is not a valid linkage for
|
||||
// imported aliases which must be definitions. Simply use the existing
|
||||
// Dest copy.
|
||||
if (isa<GlobalAlias>(&Src) && !DestIsDeclaration) {
|
||||
assert(isa<GlobalAlias>(&Dest));
|
||||
LinkFromSrc = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (SrcIsDeclaration) {
|
||||
// If Src is external or if both Src & Dest are external.. Just link the
|
||||
// external globals, we aren't adding anything.
|
||||
|
Loading…
x
Reference in New Issue
Block a user