summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2017-12-16 02:10:00 +0000
committerVitaly Buka <vitalybuka@google.com>2017-12-16 02:10:00 +0000
commitef76fcda6ef0bb520fc1f96a25ee9c317ed32474 (patch)
tree3af0eea8fa0b7ad99ab1549ebb82917430784927
parentc82441edf7067c777414b2a7a6901fe322f4bc87 (diff)
[LTO] Make processing of combined module more consistent
Summary: 1. Use stream 0 only for combined module. Previously if combined module was not processes ThinLTO used the stream for own output. However small changes in input, could trigger combined module and shuffle outputs making life of llvm::LTO harder. 2. Always process combined module and write output to stream 0. Processing empty combined module is cheap and allows llvm::LTO users to avoid implementing processing which is already done in llvm::LTO. Subscribers: mehdi_amini, inglorion, eraman, hiraditya Differential Revision: https://reviews.llvm.org/D41267 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320905 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/LTO/LTO.h3
-rw-r--r--lib/LTO/LTO.cpp36
-rw-r--r--test/LTO/Resolution/X86/dead-strip-alias.ll2
-rw-r--r--test/LTO/Resolution/X86/ifunc.ll2
-rw-r--r--test/LTO/Resolution/X86/linker-redef-thin.ll2
-rw-r--r--test/LTO/Resolution/X86/linkonce.ll2
-rw-r--r--test/LTO/Resolution/X86/load-sample-prof-icp.ll4
-rw-r--r--test/LTO/Resolution/X86/load-sample-prof.ll2
-rw-r--r--test/LTO/Resolution/X86/mod-asm-used.ll2
-rw-r--r--test/ThinLTO/X86/deadstrip.ll2
-rw-r--r--test/ThinLTO/X86/debuginfo-compositetype-import.ll4
-rw-r--r--test/ThinLTO/X86/distributed_import.ll1
-rw-r--r--test/ThinLTO/X86/empty-module.ll18
-rw-r--r--test/ThinLTO/X86/funcimport2.ll4
-rw-r--r--test/ThinLTO/X86/internalize.ll2
-rw-r--r--test/ThinLTO/X86/module_asm2.ll4
-rw-r--r--test/ThinLTO/X86/module_asm_glob.ll4
-rw-r--r--test/ThinLTO/X86/personality-local.ll2
-rw-r--r--test/ThinLTO/X86/personality.ll2
-rw-r--r--test/ThinLTO/X86/reference_non_importable.ll4
-rw-r--r--test/Transforms/FunctionImport/funcimport_var.ll2
-rw-r--r--test/Transforms/PGOProfile/thinlto_samplepgo_icp2.ll2
-rw-r--r--test/tools/gold/X86/thinlto.ll15
23 files changed, 70 insertions, 51 deletions
diff --git a/include/llvm/LTO/LTO.h b/include/llvm/LTO/LTO.h
index 866783511bb..2a2b5984728 100644
--- a/include/llvm/LTO/LTO.h
+++ b/include/llvm/LTO/LTO.h
@@ -371,8 +371,7 @@ private:
const SymbolResolution *&ResI, const SymbolResolution *ResE);
Error runRegularLTO(AddStreamFn AddStream);
- Error runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache,
- bool HasRegularLTO);
+ Error runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache);
mutable bool CalledGetMaxTasks = false;
};
diff --git a/lib/LTO/LTO.cpp b/lib/LTO/LTO.cpp
index 69a696793a6..64e5186255b 100644
--- a/lib/LTO/LTO.cpp
+++ b/lib/LTO/LTO.cpp
@@ -385,7 +385,8 @@ StringRef InputFile::getName() const {
LTO::RegularLTOState::RegularLTOState(unsigned ParallelCodeGenParallelismLevel,
Config &Conf)
: ParallelCodeGenParallelismLevel(ParallelCodeGenParallelismLevel),
- Ctx(Conf) {}
+ Ctx(Conf), CombinedModule(llvm::make_unique<Module>("ld-temp.o", Ctx)),
+ Mover(llvm::make_unique<IRMover>(*CombinedModule)) {}
LTO::ThinLTOState::ThinLTOState(ThinBackend Backend) : Backend(Backend) {
if (!Backend)
@@ -472,6 +473,9 @@ Error LTO::add(std::unique_ptr<InputFile> Input,
if (Conf.ResolutionFile)
writeToResolutionFile(*Conf.ResolutionFile, Input.get(), Res);
+ if (RegularLTO.CombinedModule->getTargetTriple().empty())
+ RegularLTO.CombinedModule->setTargetTriple(Input->getTargetTriple());
+
const SymbolResolution *ResI = Res.begin();
for (unsigned I = 0; I != Input->Mods.size(); ++I)
if (Error Err = addModule(*Input, I, ResI, Res.end()))
@@ -659,12 +663,6 @@ LTO::addRegularLTO(BitcodeModule BM, ArrayRef<InputFile::Symbol> Syms,
Error LTO::linkRegularLTO(RegularLTOState::AddedModule Mod,
bool LivenessFromIndex) {
- if (!RegularLTO.CombinedModule) {
- RegularLTO.CombinedModule =
- llvm::make_unique<Module>("ld-temp.o", RegularLTO.Ctx);
- RegularLTO.Mover = llvm::make_unique<IRMover>(*RegularLTO.CombinedModule);
- }
-
std::vector<GlobalValue *> Keep;
for (GlobalValue *GV : Mod.Keep) {
if (LivenessFromIndex && !ThinLTO.CombinedIndex.isGUIDLive(GV->getGUID()))
@@ -757,16 +755,9 @@ Error LTO::run(AddStreamFn AddStream, NativeObjectCache Cache) {
computeDeadSymbols(ThinLTO.CombinedIndex, GUIDPreservedSymbols);
- // Save the status of having a regularLTO combined module, as
- // this is needed for generating the ThinLTO Task ID, and
- // the CombinedModule will be moved at the end of runRegularLTO.
- bool HasRegularLTO = RegularLTO.CombinedModule != nullptr ||
- !RegularLTO.ModsWithSummaries.empty();
- // Invoke regular LTO if there was a regular LTO module to start with.
- if (HasRegularLTO)
- if (auto E = runRegularLTO(AddStream))
- return E;
- return runThinLTO(AddStream, Cache, HasRegularLTO);
+ if (auto E = runRegularLTO(AddStream))
+ return E;
+ return runThinLTO(AddStream, Cache);
}
Error LTO::runRegularLTO(AddStreamFn AddStream) {
@@ -1081,8 +1072,7 @@ ThinBackend lto::createWriteIndexesThinBackend(std::string OldPrefix,
};
}
-Error LTO::runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache,
- bool HasRegularLTO) {
+Error LTO::runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache) {
if (ThinLTO.ModuleMap.empty())
return Error::success();
@@ -1167,11 +1157,9 @@ Error LTO::runThinLTO(AddStreamFn AddStream, NativeObjectCache Cache,
ThinLTO.Backend(Conf, ThinLTO.CombinedIndex, ModuleToDefinedGVSummaries,
AddStream, Cache);
- // Task numbers start at ParallelCodeGenParallelismLevel if an LTO
- // module is present, as tasks 0 through ParallelCodeGenParallelismLevel-1
- // are reserved for parallel code generation partitions.
- unsigned Task =
- HasRegularLTO ? RegularLTO.ParallelCodeGenParallelismLevel : 0;
+ // Tasks 0 through ParallelCodeGenParallelismLevel-1 are reserved for combined
+ // module and parallel code generation partitions.
+ unsigned Task = RegularLTO.ParallelCodeGenParallelismLevel;
for (auto &Mod : ThinLTO.ModuleMap) {
if (Error E = BackendProc->start(Task, Mod.second, ImportLists[Mod.first],
ExportLists[Mod.first],
diff --git a/test/LTO/Resolution/X86/dead-strip-alias.ll b/test/LTO/Resolution/X86/dead-strip-alias.ll
index d009a484e4f..fc5554c34a8 100644
--- a/test/LTO/Resolution/X86/dead-strip-alias.ll
+++ b/test/LTO/Resolution/X86/dead-strip-alias.ll
@@ -3,7 +3,7 @@
; RUN: llvm-lto2 run %t -r %t,main,px -r %t,alias,p -r %t,external, \
; RUN: %t2 -r %t2,external,p \
; RUN: -save-temps -o %t3
-; RUN: llvm-nm %t3.1 | FileCheck %s
+; RUN: llvm-nm %t3.2 | FileCheck %s
; CHECK: D external
diff --git a/test/LTO/Resolution/X86/ifunc.ll b/test/LTO/Resolution/X86/ifunc.ll
index 63723763430..c77f1068241 100644
--- a/test/LTO/Resolution/X86/ifunc.ll
+++ b/test/LTO/Resolution/X86/ifunc.ll
@@ -1,6 +1,6 @@
; RUN: opt -module-summary -o %t.bc %s
; RUN: llvm-lto2 run %t.bc -r %t.bc,foo,pl -o %t2
-; RUN: llvm-nm %t2.0 | FileCheck %s
+; RUN: llvm-nm %t2.1 | FileCheck %s
; CHECK: T foo
; CHECK: t foo_ifunc
diff --git a/test/LTO/Resolution/X86/linker-redef-thin.ll b/test/LTO/Resolution/X86/linker-redef-thin.ll
index ebaac8094e7..0b8d8926d59 100644
--- a/test/LTO/Resolution/X86/linker-redef-thin.ll
+++ b/test/LTO/Resolution/X86/linker-redef-thin.ll
@@ -1,6 +1,6 @@
; RUN: opt -module-summary %s -o %t.o
; RUN: llvm-lto2 run -o %t1.o %t.o -r %t.o,patatino,pr
-; RUN: llvm-readobj -t %t1.o.0 | FileCheck %s
+; RUN: llvm-readobj -t %t1.o.1 | FileCheck %s
; CHECK: Name: patatino
; CHECK-NEXT: Value:
diff --git a/test/LTO/Resolution/X86/linkonce.ll b/test/LTO/Resolution/X86/linkonce.ll
index 33d2df740a4..fbbb458b92d 100644
--- a/test/LTO/Resolution/X86/linkonce.ll
+++ b/test/LTO/Resolution/X86/linkonce.ll
@@ -1,6 +1,6 @@
; RUN: opt -module-summary -o %t %s
; RUN: llvm-lto2 run %t -O0 -r %t,foo,px -o %t2
-; RUN: llvm-nm %t2.0 | FileCheck %s
+; RUN: llvm-nm %t2.1 | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
diff --git a/test/LTO/Resolution/X86/load-sample-prof-icp.ll b/test/LTO/Resolution/X86/load-sample-prof-icp.ll
index 57c870c0209..bb7ca4238be 100644
--- a/test/LTO/Resolution/X86/load-sample-prof-icp.ll
+++ b/test/LTO/Resolution/X86/load-sample-prof-icp.ll
@@ -5,11 +5,11 @@
; RUN: llvm-lto2 run -o %t.out %t.bc -save-temps \
; RUN: -r %t.bc,test,px -r %t.bc,bar,x \
; RUN: -lto-sample-profile-file=%S/Inputs/load-sample-prof-icp.prof
-; RUN: llvm-dis %t.out.0.4.opt.bc -o - | FileCheck %s
+; RUN: llvm-dis %t.out.1.4.opt.bc -o - | FileCheck %s
; RUN: llvm-lto2 run -o %t.out %t.bc -save-temps \
; RUN: -r %t.bc,test,px -r %t.bc,bar,x -use-new-pm \
; RUN: -lto-sample-profile-file=%S/Inputs/load-sample-prof-icp.prof
-; RUN: llvm-dis %t.out.0.4.opt.bc -o - | FileCheck %s
+; RUN: llvm-dis %t.out.1.4.opt.bc -o - | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
diff --git a/test/LTO/Resolution/X86/load-sample-prof.ll b/test/LTO/Resolution/X86/load-sample-prof.ll
index f4d33a0396b..d91d4c8d0d3 100644
--- a/test/LTO/Resolution/X86/load-sample-prof.ll
+++ b/test/LTO/Resolution/X86/load-sample-prof.ll
@@ -4,7 +4,7 @@
; RUN: llvm-lto2 run -o %t.out %t.bc -save-temps \
; RUN: -r %t.bc,foo,px -r %t.bc,bar,x \
; RUN: -lto-sample-profile-file=%S/Inputs/load-sample-prof.prof
-; RUN: llvm-dis %t.out.0.4.opt.bc -o - | FileCheck %s
+; RUN: llvm-dis %t.out.1.4.opt.bc -o - | FileCheck %s
;
; CHECK: !prof
diff --git a/test/LTO/Resolution/X86/mod-asm-used.ll b/test/LTO/Resolution/X86/mod-asm-used.ll
index 01befca84d0..5d49e80be39 100644
--- a/test/LTO/Resolution/X86/mod-asm-used.ll
+++ b/test/LTO/Resolution/X86/mod-asm-used.ll
@@ -1,7 +1,7 @@
; RUN: opt -module-summary -o %t.bc %s
; RUN: opt -module-summary -o %t2.bc %S/Inputs/mod-asm-used.ll
; RUN: llvm-lto2 run %t.bc -r %t.bc,foo,l %t2.bc -r %t2.bc,foo,pl -o %t3
-; RUN: llvm-nm %t3.1 | FileCheck %s
+; RUN: llvm-nm %t3.* | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
diff --git a/test/ThinLTO/X86/deadstrip.ll b/test/ThinLTO/X86/deadstrip.ll
index 36115e9811d..651f48bca1d 100644
--- a/test/ThinLTO/X86/deadstrip.ll
+++ b/test/ThinLTO/X86/deadstrip.ll
@@ -19,7 +19,7 @@
; RUN: -r %t2.bc,_dead_func,l \
; RUN: -r %t2.bc,_another_dead_func,pl
; RUN: llvm-dis < %t.out.0.3.import.bc | FileCheck %s --check-prefix=LTO2
-; RUN: llvm-dis < %t.out.1.3.import.bc | FileCheck %s --check-prefix=LTO2-CHECK2
+; RUN: llvm-dis < %t.out.2.3.import.bc | FileCheck %s --check-prefix=LTO2-CHECK2
; RUN: llvm-nm %t.out.1 | FileCheck %s --check-prefix=CHECK2-NM
; RUN: llvm-bcanalyzer -dump %t.out.index.bc | FileCheck %s --check-prefix=COMBINED
diff --git a/test/ThinLTO/X86/debuginfo-compositetype-import.ll b/test/ThinLTO/X86/debuginfo-compositetype-import.ll
index ae2f5f26d22..04fab9dd3d4 100644
--- a/test/ThinLTO/X86/debuginfo-compositetype-import.ll
+++ b/test/ThinLTO/X86/debuginfo-compositetype-import.ll
@@ -11,7 +11,7 @@
; RUN: -r %t2.bc,main,plx \
; RUN: -r %t2.bc,foo,l \
; RUN: -r %t1.bc,foo,pl
-; RUN: llvm-dis < %t.out.1.3.import.bc | FileCheck %s
+; RUN: llvm-dis < %t.out.2.3.import.bc | FileCheck %s
; CHECK: distinct !DICompositeType(tag: DW_TAG_enumeration_type, name: "enum", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: 50, size: 32, flags: DIFlagFwdDecl, identifier: "enum")
; CHECK: distinct !DICompositeType(tag: DW_TAG_class_type, name: "class", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: 728, size: 448, flags: DIFlagFwdDecl, identifier: "class")
@@ -25,7 +25,7 @@
; RUN: -r %t2.bc,main,plx \
; RUN: -r %t2.bc,foo,l \
; RUN: -r %t1.bc,foo,pl
-; RUN: llvm-dis < %t.out.1.3.import.bc | FileCheck %s --check-prefix=FULL
+; RUN: llvm-dis < %t.out.2.3.import.bc | FileCheck %s --check-prefix=FULL
; FULL: distinct !DICompositeType(tag: DW_TAG_enumeration_type, name: "enum", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: 50, size: 32, elements: !{{[0-9]+}}, identifier: "enum")
; FULL: distinct !DICompositeType(tag: DW_TAG_class_type, name: "class", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: 728, size: 448, elements: !{{[0-9]+}}, identifier: "class")
diff --git a/test/ThinLTO/X86/distributed_import.ll b/test/ThinLTO/X86/distributed_import.ll
index 25363023295..a67fe20bd9c 100644
--- a/test/ThinLTO/X86/distributed_import.ll
+++ b/test/ThinLTO/X86/distributed_import.ll
@@ -58,6 +58,7 @@
; IMPORT: define available_externally void @analias() !thinlto_src_module
; EXPORT: @G.llvm.
+target triple = "x86_64-unknown-linux-gnu"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
declare i32 @g(...)
diff --git a/test/ThinLTO/X86/empty-module.ll b/test/ThinLTO/X86/empty-module.ll
new file mode 100644
index 00000000000..f97e0f0f801
--- /dev/null
+++ b/test/ThinLTO/X86/empty-module.ll
@@ -0,0 +1,18 @@
+; RUN: opt -module-summary -o %t.bc %s
+
+; RUN: rm -f %t2.0
+; RUN: llvm-lto2 run %t.bc -r %t.bc,foo,pl -o %t2 -thinlto-distributed-indexes
+; RUN: llvm-readobj -h %t2.0 | FileCheck %s
+; RUN: llvm-nm %t2.0 | count 0
+
+; CHECK: Format: ELF64-x86-64
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+@foo = ifunc i32 (i32), i64 ()* @foo_ifunc
+
+define internal i64 @foo_ifunc() {
+entry:
+ ret i64 0
+}
diff --git a/test/ThinLTO/X86/funcimport2.ll b/test/ThinLTO/X86/funcimport2.ll
index 86ce715f4e0..4ee95be03f3 100644
--- a/test/ThinLTO/X86/funcimport2.ll
+++ b/test/ThinLTO/X86/funcimport2.ll
@@ -6,7 +6,7 @@
; RUN: -r=%t1.bc,_foo,plx \
; RUN: -r=%t2.bc,_main,plx \
; RUN: -r=%t2.bc,_foo,l
-; RUN: llvm-dis %t.o.1.3.import.bc -o - | FileCheck %s
+; RUN: llvm-dis %t.o.2.3.import.bc -o - | FileCheck %s
; CHECK: define available_externally dso_local void @foo()
; We shouldn't do any importing at -O0
@@ -16,7 +16,7 @@
; RUN: -r=%t1.bc,_foo,plx \
; RUN: -r=%t2.bc,_main,plx \
; RUN: -r=%t2.bc,_foo,l
-; RUN: llvm-dis %t.o.1.3.import.bc -o - | FileCheck %s --check-prefix=CHECKO0
+; RUN: llvm-dis %t.o.2.3.import.bc -o - | FileCheck %s --check-prefix=CHECKO0
; CHECKO0: declare dso_local void @foo(...)
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
diff --git a/test/ThinLTO/X86/internalize.ll b/test/ThinLTO/X86/internalize.ll
index f40fbcd4b41..2392a4e21c7 100644
--- a/test/ThinLTO/X86/internalize.ll
+++ b/test/ThinLTO/X86/internalize.ll
@@ -7,7 +7,7 @@
; RUN: -r=%t1.bc,_foo,pxl \
; RUN: -r=%t1.bc,_bar,pl \
; RUN: -r=%t1.bc,_linkonce_func,pl
-; RUN: llvm-dis < %t.o.0.2.internalize.bc | FileCheck %s --check-prefix=INTERNALIZE2
+; RUN: llvm-dis < %t.o.1.2.internalize.bc | FileCheck %s --check-prefix=INTERNALIZE2
; REGULAR: define void @foo
diff --git a/test/ThinLTO/X86/module_asm2.ll b/test/ThinLTO/X86/module_asm2.ll
index b79d7ad4c97..b6e2f23509e 100644
--- a/test/ThinLTO/X86/module_asm2.ll
+++ b/test/ThinLTO/X86/module_asm2.ll
@@ -27,8 +27,8 @@
; RUN: -r=%t2.bc,func3,l \
; RUN: -r=%t2.bc,callglobalfunc,l \
; RUN: -r=%t2.bc,callweakfunc,l
-; RUN: llvm-nm %t.o.0 | FileCheck %s --check-prefix=NM0
-; RUN: llvm-nm %t.o.1 | FileCheck %s --check-prefix=NM1
+; RUN: llvm-nm %t.o.1 | FileCheck %s --check-prefix=NM0
+; RUN: llvm-nm %t.o.2 | FileCheck %s --check-prefix=NM1
; Check that local values b and x, which are referenced on
; llvm.used and llvm.compiler.used, respectively, are not promoted.
diff --git a/test/ThinLTO/X86/module_asm_glob.ll b/test/ThinLTO/X86/module_asm_glob.ll
index e27007524ce..3ce4816c9d6 100644
--- a/test/ThinLTO/X86/module_asm_glob.ll
+++ b/test/ThinLTO/X86/module_asm_glob.ll
@@ -11,8 +11,8 @@
; RUN: -r=%t1.bc,_simplefunction,pl \
; RUN: -r=%t2.bc,main,plx \
; RUN: -r=%t2.bc,_simplefunction,l
-; RUN: llvm-nm %t.o.0 | FileCheck %s --check-prefix=NM0
-; RUN: llvm-nm %t.o.1 | FileCheck %s --check-prefix=NM1
+; RUN: llvm-nm %t.o.1 | FileCheck %s --check-prefix=NM0
+; RUN: llvm-nm %t.o.2 | FileCheck %s --check-prefix=NM1
; NM0: T foo
; NM1-NOT: foo
diff --git a/test/ThinLTO/X86/personality-local.ll b/test/ThinLTO/X86/personality-local.ll
index 650e882a0cc..5111128cba2 100644
--- a/test/ThinLTO/X86/personality-local.ll
+++ b/test/ThinLTO/X86/personality-local.ll
@@ -6,7 +6,7 @@
; RUN: -r %t1.bc,foo,l \
; RUN: -r %t1.bc,bar,p \
; RUN: -r %t1.bc,main,xp
-; RUN: llvm-readobj -t %t.o.1 | FileCheck %s
+; RUN: llvm-readobj -t %t.o.2 | FileCheck %s
; CHECK: Symbol {
; CHECK: Name: foo
diff --git a/test/ThinLTO/X86/personality.ll b/test/ThinLTO/X86/personality.ll
index a6caf3711ef..319bd94a00c 100644
--- a/test/ThinLTO/X86/personality.ll
+++ b/test/ThinLTO/X86/personality.ll
@@ -14,7 +14,7 @@
; RUN: -r %t1.bc,personality_routine3,l \
; RUN: -r %t1.bc,main,xp \
; RUN: -r %t1.bc,bar,l
-; RUN: llvm-readobj -t %t.o.1 | FileCheck %s --check-prefix=BINDING
+; RUN: llvm-readobj -t %t.o.2 | FileCheck %s --check-prefix=BINDING
; BINDING: Symbol {
; BINDING: Name: personality_routine
diff --git a/test/ThinLTO/X86/reference_non_importable.ll b/test/ThinLTO/X86/reference_non_importable.ll
index 99b79ce198e..51e6f38c38b 100644
--- a/test/ThinLTO/X86/reference_non_importable.ll
+++ b/test/ThinLTO/X86/reference_non_importable.ll
@@ -14,14 +14,14 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.11.0"
; We shouldn't promote the private because it has a section
-; RUN: llvm-dis < %t.o.0.2.internalize.bc | FileCheck %s --check-prefix=PROMOTE
+; RUN: llvm-dis < %t.o.1.2.internalize.bc | FileCheck %s --check-prefix=PROMOTE
; PROMOTE: @a = private global i8 0, section "__TEXT,__cstring,cstring_literals"
@a = private global i8 0, section "__TEXT,__cstring,cstring_literals"
@b = global i8 *@a
; We want foo to be imported in the main module!
-; RUN: llvm-dis < %t.o.1.3.import.bc | FileCheck %s --check-prefix=IMPORT
+; RUN: llvm-dis < %t.o.2.3.import.bc | FileCheck %s --check-prefix=IMPORT
; IMPORT: define available_externally dso_local i8** @foo()
define i8 **@foo() {
ret i8 **@b
diff --git a/test/Transforms/FunctionImport/funcimport_var.ll b/test/Transforms/FunctionImport/funcimport_var.ll
index 9707744b887..a93cabba69a 100644
--- a/test/Transforms/FunctionImport/funcimport_var.ll
+++ b/test/Transforms/FunctionImport/funcimport_var.ll
@@ -10,7 +10,7 @@
; RUN: -r %t.bc,_Z4LinkPKcS0_,plx \
; RUN: -r %t.bc,link,l \
; RUN: -r %t2.bc,get_link,plx
-; RUN: llvm-nm %t.out.0 | FileCheck %s
+; RUN: llvm-nm %t.out.1 | FileCheck %s
; CHECK: U link
; REQUIRES: x86-registered-target
diff --git a/test/Transforms/PGOProfile/thinlto_samplepgo_icp2.ll b/test/Transforms/PGOProfile/thinlto_samplepgo_icp2.ll
index 1751854d448..7e3afb0775a 100644
--- a/test/Transforms/PGOProfile/thinlto_samplepgo_icp2.ll
+++ b/test/Transforms/PGOProfile/thinlto_samplepgo_icp2.ll
@@ -21,7 +21,7 @@
; IMPORTS2-NOT: Import _ZL3barv
; RUN: llvm-nm %t3.2 | FileCheck %s --check-prefix=NM
; NM: _ZL3barv
-; RUN: llvm-dis < %t3.2.2.internalize.bc | FileCheck %s --check-prefix=INTERNALIZE
+; RUN: llvm-dis < %t3.3.2.internalize.bc | FileCheck %s --check-prefix=INTERNALIZE
; INTERNALIZE: define dso_local void @_ZL3barv
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
diff --git a/test/tools/gold/X86/thinlto.ll b/test/tools/gold/X86/thinlto.ll
index 5e0eb6c32d9..13d1bf3c46f 100644
--- a/test/tools/gold/X86/thinlto.ll
+++ b/test/tools/gold/X86/thinlto.ll
@@ -68,11 +68,24 @@
; RUN: --plugin-opt=jobs=2 \
; RUN: --plugin-opt=obj-path=%t5.o \
; RUN: -shared %t.o %t2.o -o %t4
-; RUN: llvm-nm %t5.o | FileCheck %s --check-prefix=NM2
; RUN: llvm-nm %t5.o1 | FileCheck %s --check-prefix=NM2
+; RUN: llvm-nm %t5.o2 | FileCheck %s --check-prefix=NM2
+
+; Test to ensure that thinlto-index-only with obj-path creates the file.
+; RUN: rm -f %t5.o %t5.o1
+; RUN: %gold -plugin %llvmshlibdir/LLVMgold%shlibext \
+; RUN: -m elf_x86_64 \
+; RUN: --plugin-opt=thinlto \
+; RUN: --plugin-opt=jobs=2 \
+; RUN: --plugin-opt=thinlto-index-only \
+; RUN: --plugin-opt=obj-path=%t5.o \
+; RUN: -shared %t.o %t2.o -o %t4
+; RUN: llvm-readobj -h %t5.o | FileCheck %s --check-prefix=FORMAT
+; RUN: llvm-nm %t5.o | count 0
; NM: T f
; NM2: T {{f|g}}
+; FORMAT: Format: ELF64-x86-64
; The backend index for this module contains summaries from itself and
; Inputs/thinlto.ll, as it imports from the latter.