[llvm] 4ef9315 - [ThinLTO] Make ValueInfo::operator bool() explicit

via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 19 02:01:03 PST 2019


Author: evgeny
Date: 2019-11-19T12:46:09+03:00
New Revision: 4ef9315c4be0217ed9eb511a0e89228d32dc98cd

URL: https://github.com/llvm/llvm-project/commit/4ef9315c4be0217ed9eb511a0e89228d32dc98cd
DIFF: https://github.com/llvm/llvm-project/commit/4ef9315c4be0217ed9eb511a0e89228d32dc98cd.diff

LOG: [ThinLTO] Make ValueInfo::operator bool() explicit

Differential revision: https://reviews.llvm.org/D70383

Added: 
    llvm/test/ThinLTO/X86/funcimport-stats.ll

Modified: 
    llvm/include/llvm/IR/ModuleSummaryIndex.h
    llvm/lib/Transforms/IPO/FunctionImport.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/IR/ModuleSummaryIndex.h b/llvm/include/llvm/IR/ModuleSummaryIndex.h
index e98384f895c6..af330c1fa57b 100644
--- a/llvm/include/llvm/IR/ModuleSummaryIndex.h
+++ b/llvm/include/llvm/IR/ModuleSummaryIndex.h
@@ -173,7 +173,7 @@ struct ValueInfo {
     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 {

diff  --git a/llvm/lib/Transforms/IPO/FunctionImport.cpp b/llvm/lib/Transforms/IPO/FunctionImport.cpp
index 7b80eb902320..b21182af3233 100644
--- a/llvm/lib/Transforms/IPO/FunctionImport.cpp
+++ b/llvm/lib/Transforms/IPO/FunctionImport.cpp
@@ -604,24 +604,26 @@ static void ComputeImportForModule(
 }
 
 #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;
 }

diff  --git a/llvm/test/ThinLTO/X86/funcimport-stats.ll b/llvm/test/ThinLTO/X86/funcimport-stats.ll
new file mode 100644
index 000000000000..913b13004c1c
--- /dev/null
+++ b/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


        


More information about the llvm-commits mailing list