[PATCH] D26250: [ThinLTO] Handle distributed backend case when doing renaming
Teresa Johnson via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 2 18:16:51 PDT 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL285871: [ThinLTO] Handle distributed backend case when doing renaming (authored by tejohnson).
Changed prior to commit:
https://reviews.llvm.org/D26250?vs=76746&id=76809#toc
Repository:
rL LLVM
https://reviews.llvm.org/D26250
Files:
llvm/trunk/lib/Transforms/Utils/FunctionImportUtils.cpp
llvm/trunk/test/ThinLTO/X86/Inputs/distributed_import.ll
llvm/trunk/test/ThinLTO/X86/distributed_import.ll
Index: llvm/trunk/test/ThinLTO/X86/distributed_import.ll
===================================================================
--- llvm/trunk/test/ThinLTO/X86/distributed_import.ll
+++ llvm/trunk/test/ThinLTO/X86/distributed_import.ll
@@ -0,0 +1,20 @@
+; RUN: opt -module-summary %s -o %t1.bc
+; RUN: opt -module-summary %p/Inputs/distributed_import.ll -o %t2.bc
+
+; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \
+; RUN: -thinlto-distributed-indexes \
+; RUN: -r=%t1.bc,g, \
+; RUN: -r=%t1.bc,f,px \
+; RUN: -r=%t2.bc,g,px
+; RUN: opt -function-import -summary-file %t1.bc.thinlto.bc %t1.bc -o %t1.out
+; RUN: opt -function-import -summary-file %t2.bc.thinlto.bc %t2.bc -o %t2.out
+; RUN: llvm-dis -o - %t2.out | FileCheck %s
+; CHECK: @G.llvm.0
+
+declare i32 @g(...)
+
+define void @f() {
+entry:
+ call i32 (...) @g()
+ ret void
+}
Index: llvm/trunk/test/ThinLTO/X86/Inputs/distributed_import.ll
===================================================================
--- llvm/trunk/test/ThinLTO/X86/Inputs/distributed_import.ll
+++ llvm/trunk/test/ThinLTO/X86/Inputs/distributed_import.ll
@@ -0,0 +1,6 @@
+ at G = internal global i32 7
+define i32 @g() {
+entry:
+ %0 = load i32, i32* @G
+ ret i32 %0
+}
Index: llvm/trunk/lib/Transforms/Utils/FunctionImportUtils.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Utils/FunctionImportUtils.cpp
+++ llvm/trunk/lib/Transforms/Utils/FunctionImportUtils.cpp
@@ -67,10 +67,25 @@
if (GVar && GVar->isConstant() && GVar->hasGlobalUnnamedAddr())
return false;
- auto *Summary = ImportIndex.getGlobalValueSummary(SGV->getGUID());
- assert(Summary && "Missing summary for global value");
- if (Summary->noRename())
- return false;
+ // If we are exporting, we need to see whether this value is marked
+ // as NoRename in the summary. If we are importing, we may not have
+ // a summary in the distributed backend case (only summaries for values
+ // importes as defs, not references, are included in the index passed
+ // to the distributed backends).
+ auto Summaries = ImportIndex.findGlobalValueSummaryList(SGV->getGUID());
+ if (Summaries == ImportIndex.end())
+ // Assert that this is an import - we should always have access to the
+ // summary when exporting.
+ assert(isPerformingImport() &&
+ "Missing summary for global value when exporting");
+ else {
+ assert(Summaries->second.size() == 1 && "Local has more than one summary");
+ if (Summaries->second.front()->noRename()) {
+ assert((isModuleExporting() || !GlobalsToImport->count(SGV)) &&
+ "Imported a non-renamable local value");
+ return false;
+ }
+ }
// Eventually we only need to promote functions in the exporting module that
// are referenced by a potentially exported function (i.e. one that is in the
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D26250.76809.patch
Type: text/x-patch
Size: 2872 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161103/bb9b1393/attachment.bin>
More information about the llvm-commits
mailing list