[PATCH] D70383: [ThinLTO] Make ValueInfo::operator bool() explicit
Eugene Leviant via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 19 02:08:14 PST 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rG4ef9315c4be0: [ThinLTO] Make ValueInfo::operator bool() explicit (authored by evgeny777).
Changed prior to commit:
https://reviews.llvm.org/D70383?vs=229789&id=230008#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D70383/new/
https://reviews.llvm.org/D70383
Files:
llvm/include/llvm/IR/ModuleSummaryIndex.h
llvm/lib/Transforms/IPO/FunctionImport.cpp
llvm/test/ThinLTO/X86/funcimport-stats.ll
Index: llvm/test/ThinLTO/X86/funcimport-stats.ll
===================================================================
--- /dev/null
+++ llvm/test/ThinLTO/X86/funcimport-stats.ll
@@ -0,0 +1,21 @@
+; REQUIRES: asserts
+; RUN: opt -module-summary %p/funcimport.ll -o %t.bc
+; RUN: opt -module-summary %p/Inputs/funcimport.ll -o %t2.bc
+; RUN: llvm-lto -thinlto-action=thinlink -o %t3.bc %t.bc %t2.bc
+
+; RUN: llvm-lto -thinlto-action=import %t2.bc -thinlto-index=%t3.bc -o /dev/null -debug-only=function-import -stats > %t4 2>&1
+; RUN: cat %t4 | grep 'Is importing global' | count 4
+; RUN: cat %t4 | grep 'Is importing function' | count 8
+; RUN: cat %t4 | grep 'Is importing aliasee' | count 1
+; RUN: cat %t4 | FileCheck %s
+
+; CHECK: - [[NUM_FUNCS:[0-9]+]] functions imported from
+; CHECK-NEXT: - [[NUM_VARS:[0-9]+]] global vars imported from
+
+; CHECK: [[NUM_FUNCS]] function-import - Number of functions imported in backend
+; CHECK-NEXT: [[NUM_FUNCS]] function-import - Number of functions thin link decided to import
+; CHECK-NEXT: [[NUM_VARS]] function-import - Number of global variables imported in backend
+; CHECK-NEXT: [[NUM_VARS]] function-import - Number of global variables thin link decided to import
+; CHECK-NEXT: 1 function-import - Number of modules imported from
+; CHECK-NEXT: [[NUM_VARS]] module-summary-index - Number of live global variables marked read only
+; CHECK-NEXT: 1 module-summary-index - Number of live global variables marked write only
Index: llvm/lib/Transforms/IPO/FunctionImport.cpp
===================================================================
--- llvm/lib/Transforms/IPO/FunctionImport.cpp
+++ llvm/lib/Transforms/IPO/FunctionImport.cpp
@@ -604,24 +604,26 @@
}
#ifndef NDEBUG
+static bool isGlobalVarSummary(const ModuleSummaryIndex &Index, ValueInfo VI) {
+ auto SL = VI.getSummaryList();
+ return SL.empty()
+ ? false
+ : SL[0]->getSummaryKind() == GlobalValueSummary::GlobalVarKind;
+}
+
static bool isGlobalVarSummary(const ModuleSummaryIndex &Index,
GlobalValue::GUID G) {
- if (const auto &VI = Index.getValueInfo(G)) {
- auto SL = VI.getSummaryList();
- if (!SL.empty())
- return SL[0]->getSummaryKind() == GlobalValueSummary::GlobalVarKind;
- }
+ if (const auto &VI = Index.getValueInfo(G))
+ return isGlobalVarSummary(Index, VI);
return false;
}
-static GlobalValue::GUID getGUID(GlobalValue::GUID G) { return G; }
-
template <class T>
static unsigned numGlobalVarSummaries(const ModuleSummaryIndex &Index,
T &Cont) {
unsigned NumGVS = 0;
for (auto &V : Cont)
- if (isGlobalVarSummary(Index, getGUID(V)))
+ if (isGlobalVarSummary(Index, V))
++NumGVS;
return NumGVS;
}
Index: llvm/include/llvm/IR/ModuleSummaryIndex.h
===================================================================
--- llvm/include/llvm/IR/ModuleSummaryIndex.h
+++ llvm/include/llvm/IR/ModuleSummaryIndex.h
@@ -173,7 +173,7 @@
RefAndFlags.setInt(HaveGVs);
}
- operator bool() const { return getRef(); }
+ explicit operator bool() const { return getRef(); }
GlobalValue::GUID getGUID() const { return getRef()->first; }
const GlobalValue *getValue() const {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70383.230008.patch
Type: text/x-patch
Size: 3268 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191119/91f8479e/attachment.bin>
More information about the llvm-commits
mailing list