From f2c927d2a81183e1e94168092ffbe7ff8a8b0fee Mon Sep 17 00:00:00 2001 From: Xinliang David Li Date: Tue, 28 Jun 2016 04:07:03 +0000 Subject: [PATCH] [BFI]: enhance BFI graph dump MBFI supports profile count dumping and function name based filtering. Add these two feature to BFI as well. The filtering option is shared between BFI and MBFI: -view-bfi-func-name=.. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273992 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/BlockFrequencyInfo.cpp | 33 ++++++++++++++--------- lib/CodeGen/MachineBlockFrequencyInfo.cpp | 7 +++-- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/lib/Analysis/BlockFrequencyInfo.cpp b/lib/Analysis/BlockFrequencyInfo.cpp index 1370ace759b..f470d3c6a8b 100644 --- a/lib/Analysis/BlockFrequencyInfo.cpp +++ b/lib/Analysis/BlockFrequencyInfo.cpp @@ -27,18 +27,22 @@ using namespace llvm; #define DEBUG_TYPE "block-freq" #ifndef NDEBUG -static cl::opt -ViewBlockFreqPropagationDAG("view-block-freq-propagation-dags", cl::Hidden, - cl::desc("Pop up a window to show a dag displaying how block " - "frequencies propagation through the CFG."), - cl::values( - clEnumValN(GVDT_None, "none", - "do not display graphs."), - clEnumValN(GVDT_Fraction, "fraction", "display a graph using the " - "fractional block frequency representation."), - clEnumValN(GVDT_Integer, "integer", "display a graph using the raw " - "integer fractional block frequency representation."), - clEnumValEnd)); +static cl::opt ViewBlockFreqPropagationDAG( + "view-block-freq-propagation-dags", cl::Hidden, + cl::desc("Pop up a window to show a dag displaying how block " + "frequencies propagation through the CFG."), + cl::values(clEnumValN(GVDT_None, "none", "do not display graphs."), + clEnumValN(GVDT_Fraction, "fraction", + "display a graph using the " + "fractional block frequency representation."), + clEnumValN(GVDT_Integer, "integer", + "display a graph using the raw " + "integer fractional block frequency representation."), + clEnumValN(GVDT_Count, "count", "display a graph using the real " + "profile count if available."), + clEnumValEnd)); + +cl::opt ViewBlockFreqFuncName("view-bfi-func-name", cl::Hidden); namespace llvm { @@ -113,8 +117,11 @@ void BlockFrequencyInfo::calculate(const Function &F, BFI.reset(new ImplType); BFI->calculate(F, BPI, LI); #ifndef NDEBUG - if (ViewBlockFreqPropagationDAG != GVDT_None) + if (ViewBlockFreqPropagationDAG != GVDT_None && + (ViewBlockFreqFuncName.empty() || + F.getName().equals(ViewBlockFreqFuncName))) { view(); + } #endif } diff --git a/lib/CodeGen/MachineBlockFrequencyInfo.cpp b/lib/CodeGen/MachineBlockFrequencyInfo.cpp index f02356b92c5..7e05ebe2848 100644 --- a/lib/CodeGen/MachineBlockFrequencyInfo.cpp +++ b/lib/CodeGen/MachineBlockFrequencyInfo.cpp @@ -46,8 +46,7 @@ static cl::opt ViewMachineBlockFreqPropagationDAG( clEnumValEnd)); -static cl::opt ViewMachineBlockFreqFuncName("view-mbfi-func-name", - cl::Hidden); +extern cl::opt ViewBlockFreqFuncName; namespace llvm { @@ -134,8 +133,8 @@ bool MachineBlockFrequencyInfo::runOnMachineFunction(MachineFunction &F) { MBFI->calculate(F, MBPI, MLI); #ifndef NDEBUG if (ViewMachineBlockFreqPropagationDAG != GVDT_None && - (ViewMachineBlockFreqFuncName.empty() || - F.getName().equals(ViewMachineBlockFreqFuncName))) { + (ViewBlockFreqFuncName.empty() || + F.getName().equals(ViewBlockFreqFuncName))) { view(); } #endif -- 2.50.1