mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-12 06:06:32 +00:00
[ThinLTO] Use new in-place symbol changes for exporting module
Due to the new in-place ThinLTO symbol handling support added in r257174, we now invoke renameModuleForThinLTO on the current module from within the FunctionImport pass. Additionally, renameModuleForThinLTO no longer needs to return the Module as it is performing the renaming in place on the one provided. This commit will be immediately preceeded by a companion clang patch to remove its invocation of renameModuleForThinLTO. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257181 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
604ad96a35
commit
44f8ddb3bb
@ -69,8 +69,7 @@ public:
|
||||
|
||||
/// Perform in-place global value handling on the given Module for
|
||||
/// exported local functions renamed and promoted for ThinLTO.
|
||||
std::unique_ptr<Module> renameModuleForThinLTO(std::unique_ptr<Module> M,
|
||||
const FunctionInfoIndex *Index);
|
||||
bool renameModuleForThinLTO(Module &M, const FunctionInfoIndex *Index);
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
|
@ -863,13 +863,9 @@ bool Linker::linkModules(Module &Dest, std::unique_ptr<Module> Src,
|
||||
return L.linkInModule(std::move(Src), Flags);
|
||||
}
|
||||
|
||||
std::unique_ptr<Module>
|
||||
llvm::renameModuleForThinLTO(std::unique_ptr<Module> M,
|
||||
const FunctionInfoIndex *Index) {
|
||||
ThinLTOGlobalProcessing ThinLTOProcessing(*M, Index);
|
||||
if (ThinLTOProcessing.run())
|
||||
return nullptr;
|
||||
return M;
|
||||
bool llvm::renameModuleForThinLTO(Module &M, const FunctionInfoIndex *Index) {
|
||||
ThinLTOGlobalProcessing ThinLTOProcessing(M, Index);
|
||||
return ThinLTOProcessing.run();
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -413,14 +413,19 @@ public:
|
||||
Index = IndexPtr.get();
|
||||
}
|
||||
|
||||
// First we need to promote to global scope and rename any local values that
|
||||
// are potentially exported to other modules.
|
||||
if (renameModuleForThinLTO(M, Index)) {
|
||||
errs() << "Error renaming module\n";
|
||||
return false;
|
||||
}
|
||||
|
||||
// Perform the import now.
|
||||
auto ModuleLoader = [&M](StringRef Identifier) {
|
||||
return loadFile(Identifier, M.getContext());
|
||||
};
|
||||
FunctionImporter Importer(*Index, ModuleLoader);
|
||||
return Importer.importFunctions(M);
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
} // anonymous namespace
|
||||
|
Loading…
Reference in New Issue
Block a user