forked from OSchip/llvm-project
[ThinLTO] Make ValueInfo::operator bool() explicit
Differential revision: https://reviews.llvm.org/D70383
This commit is contained in:
parent
4fb8ecdef4
commit
4ef9315c4b
|
@ -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 {
|
||||
|
|
|
@ -604,24 +604,26 @@ static void ComputeImportForModule(
|
|||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
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;
|
||||
}
|
||||
return false;
|
||||
static bool isGlobalVarSummary(const ModuleSummaryIndex &Index, ValueInfo VI) {
|
||||
auto SL = VI.getSummaryList();
|
||||
return SL.empty()
|
||||
? false
|
||||
: SL[0]->getSummaryKind() == GlobalValueSummary::GlobalVarKind;
|
||||
}
|
||||
|
||||
static GlobalValue::GUID getGUID(GlobalValue::GUID G) { return G; }
|
||||
static bool isGlobalVarSummary(const ModuleSummaryIndex &Index,
|
||||
GlobalValue::GUID G) {
|
||||
if (const auto &VI = Index.getValueInfo(G))
|
||||
return isGlobalVarSummary(Index, VI);
|
||||
return false;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue