mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-03-07 11:59:09 +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> llvm-svn: 266893
This commit is contained in:
parent
638d3967a4
commit
a777ea5e44
@ -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