forked from OSchip/llvm-project
FunctionImport: Remove the -disable-force-link-odr flag and change importFunctions to never force link.
This removes some functionality that was only being used by tests. Differential Revision: https://reviews.llvm.org/D29439 llvm-svn: 293919
This commit is contained in:
parent
97624fb1ec
commit
37e2459186
|
@ -53,12 +53,8 @@ public:
|
|||
: Index(Index), ModuleLoader(std::move(ModuleLoader)) {}
|
||||
|
||||
/// Import functions in Module \p M based on the supplied import list.
|
||||
/// \p ForceImportReferencedDiscardableSymbols will set the ModuleLinker in
|
||||
/// a mode where referenced discarable symbols in the source modules will be
|
||||
/// imported as well even if they are not present in the ImportList.
|
||||
Expected<bool>
|
||||
importFunctions(Module &M, const ImportMapTy &ImportList,
|
||||
bool ForceImportReferencedDiscardableSymbols = false);
|
||||
importFunctions(Module &M, const ImportMapTy &ImportList);
|
||||
|
||||
private:
|
||||
/// The summaries index used to trigger importing.
|
||||
|
|
|
@ -75,12 +75,6 @@ static cl::opt<bool> PrintImports("print-imports", cl::init(false), cl::Hidden,
|
|||
static cl::opt<bool> ComputeDead("compute-dead", cl::init(true), cl::Hidden,
|
||||
cl::desc("Compute dead symbols"));
|
||||
|
||||
// Temporary allows the function import pass to disable always linking
|
||||
// referenced discardable symbols.
|
||||
static cl::opt<bool>
|
||||
DontForceImportReferencedDiscardableSymbols("disable-force-link-odr",
|
||||
cl::init(false), cl::Hidden);
|
||||
|
||||
static cl::opt<bool> EnableImportMetadata(
|
||||
"enable-import-metadata", cl::init(
|
||||
#if !defined(NDEBUG)
|
||||
|
@ -666,8 +660,7 @@ void llvm::thinLTOInternalizeModule(Module &TheModule,
|
|||
// index.
|
||||
//
|
||||
Expected<bool> FunctionImporter::importFunctions(
|
||||
Module &DestModule, const FunctionImporter::ImportMapTy &ImportList,
|
||||
bool ForceImportReferencedDiscardableSymbols) {
|
||||
Module &DestModule, const FunctionImporter::ImportMapTy &ImportList) {
|
||||
DEBUG(dbgs() << "Starting import for Module "
|
||||
<< DestModule.getModuleIdentifier() << "\n");
|
||||
unsigned ImportedCount = 0;
|
||||
|
@ -781,9 +774,7 @@ Expected<bool> FunctionImporter::importFunctions(
|
|||
}
|
||||
|
||||
// Instruct the linker that the client will take care of linkonce resolution
|
||||
unsigned Flags = Linker::Flags::None;
|
||||
if (!ForceImportReferencedDiscardableSymbols)
|
||||
Flags |= Linker::Flags::DontForceLinkLinkonceODR;
|
||||
unsigned Flags = Linker::Flags::DontForceLinkLinkonceODR;
|
||||
|
||||
if (TheLinker.linkInModule(std::move(SrcModule), Flags, &GlobalsToImport))
|
||||
report_fatal_error("Function Import: link error");
|
||||
|
@ -845,8 +836,7 @@ static bool doImportingForModule(Module &M) {
|
|||
return loadFile(Identifier, M.getContext());
|
||||
};
|
||||
FunctionImporter Importer(*Index, ModuleLoader);
|
||||
Expected<bool> Result = Importer.importFunctions(
|
||||
M, ImportList, !DontForceImportReferencedDiscardableSymbols);
|
||||
Expected<bool> Result = Importer.importFunctions(M, ImportList);
|
||||
|
||||
// FIXME: Probably need to propagate Errors through the pass manager.
|
||||
if (!Result) {
|
||||
|
|
|
@ -4,20 +4,16 @@
|
|||
; RUN: llvm-lto -thinlto -print-summary-global-ids -o %t3 %t.bc %t2.bc 2>&1 | FileCheck %s --check-prefix=GUID
|
||||
|
||||
; Do the import now
|
||||
; RUN: opt -disable-force-link-odr -function-import -stats -print-imports -enable-import-metadata -summary-file %t3.thinlto.bc %t.bc -S 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=INSTLIMDEF
|
||||
; RUN: opt -function-import -stats -print-imports -enable-import-metadata -summary-file %t3.thinlto.bc %t.bc -S 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=INSTLIMDEF
|
||||
; Try again with new pass manager
|
||||
; RUN: opt -disable-force-link-odr -passes='function-import' -stats -print-imports -enable-import-metadata -summary-file %t3.thinlto.bc %t.bc -S 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=INSTLIMDEF
|
||||
; RUN: opt -passes='function-import' -stats -print-imports -enable-import-metadata -summary-file %t3.thinlto.bc %t.bc -S 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=INSTLIMDEF
|
||||
; "-stats" requires +Asserts.
|
||||
; REQUIRES: asserts
|
||||
|
||||
; Test import with smaller instruction limit
|
||||
; RUN: opt -disable-force-link-odr -function-import -enable-import-metadata -summary-file %t3.thinlto.bc %t.bc -import-instr-limit=5 -S | FileCheck %s --check-prefix=CHECK --check-prefix=INSTLIM5
|
||||
; RUN: opt -function-import -enable-import-metadata -summary-file %t3.thinlto.bc %t.bc -import-instr-limit=5 -S | FileCheck %s --check-prefix=CHECK --check-prefix=INSTLIM5
|
||||
; INSTLIM5-NOT: @staticfunc.llvm.
|
||||
|
||||
; Test import with smaller instruction limit and without the -disable-force-link-odr
|
||||
; RUN: opt -function-import -summary-file %t3.thinlto.bc %t.bc -import-instr-limit=5 -S | FileCheck %s --check-prefix=INSTLIM5ODR
|
||||
; INSTLIM5ODR: define linkonce_odr void @linkonceodr() {
|
||||
|
||||
|
||||
define i32 @main() #0 {
|
||||
entry:
|
||||
|
|
Loading…
Reference in New Issue