diff options
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r-- | llvm/lib/Analysis/BlockFrequencyInfo.cpp | 36 | ||||
-rw-r--r-- | llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp | 46 | ||||
-rw-r--r-- | llvm/lib/Analysis/BranchProbabilityInfo.cpp | 19 | ||||
-rw-r--r-- | llvm/lib/Analysis/DemandedBits.cpp | 19 | ||||
-rw-r--r-- | llvm/lib/Analysis/Trace.cpp | 5 |
5 files changed, 90 insertions, 35 deletions
diff --git a/llvm/lib/Analysis/BlockFrequencyInfo.cpp b/llvm/lib/Analysis/BlockFrequencyInfo.cpp index 07a2a9229fd..8175aa07d15 100644 --- a/llvm/lib/Analysis/BlockFrequencyInfo.cpp +++ b/llvm/lib/Analysis/BlockFrequencyInfo.cpp @@ -12,15 +12,22 @@ //===----------------------------------------------------------------------===// #include "llvm/Analysis/BlockFrequencyInfo.h" +#include "llvm/ADT/APInt.h" +#include "llvm/ADT/None.h" +#include "llvm/ADT/iterator.h" #include "llvm/Analysis/BlockFrequencyInfoImpl.h" #include "llvm/Analysis/BranchProbabilityInfo.h" #include "llvm/Analysis/LoopInfo.h" -#include "llvm/Analysis/Passes.h" #include "llvm/IR/CFG.h" -#include "llvm/InitializePasses.h" +#include "llvm/IR/Function.h" +#include "llvm/IR/PassManager.h" +#include "llvm/Pass.h" #include "llvm/Support/CommandLine.h" -#include "llvm/Support/Debug.h" #include "llvm/Support/GraphWriter.h" +#include "llvm/Support/raw_ostream.h" +#include <algorithm> +#include <cassert> +#include <string> using namespace llvm; @@ -71,7 +78,6 @@ cl::opt<bool> namespace llvm { static GVDAGType getGVDT() { - if (PGOViewCounts) return GVDT_Count; return ViewBlockFreqPropagationDAG; @@ -79,27 +85,31 @@ static GVDAGType getGVDT() { template <> struct GraphTraits<BlockFrequencyInfo *> { - typedef const BasicBlock *NodeRef; - typedef succ_const_iterator ChildIteratorType; - typedef pointer_iterator<Function::const_iterator> nodes_iterator; + using NodeRef = const BasicBlock *; + using ChildIteratorType = succ_const_iterator; + using nodes_iterator = pointer_iterator<Function::const_iterator>; static NodeRef getEntryNode(const BlockFrequencyInfo *G) { return &G->getFunction()->front(); } + static ChildIteratorType child_begin(const NodeRef N) { return succ_begin(N); } + static ChildIteratorType child_end(const NodeRef N) { return succ_end(N); } + static nodes_iterator nodes_begin(const BlockFrequencyInfo *G) { return nodes_iterator(G->getFunction()->begin()); } + static nodes_iterator nodes_end(const BlockFrequencyInfo *G) { return nodes_iterator(G->getFunction()->end()); } }; -typedef BFIDOTGraphTraitsBase<BlockFrequencyInfo, BranchProbabilityInfo> - BFIDOTGTraitsBase; +using BFIDOTGTraitsBase = + BFIDOTGraphTraitsBase<BlockFrequencyInfo, BranchProbabilityInfo>; template <> struct DOTGraphTraits<BlockFrequencyInfo *> : public BFIDOTGTraitsBase { @@ -127,7 +137,7 @@ struct DOTGraphTraits<BlockFrequencyInfo *> : public BFIDOTGTraitsBase { } // end namespace llvm -BlockFrequencyInfo::BlockFrequencyInfo() {} +BlockFrequencyInfo::BlockFrequencyInfo() = default; BlockFrequencyInfo::BlockFrequencyInfo(const Function &F, const BranchProbabilityInfo &BPI, @@ -148,7 +158,7 @@ BlockFrequencyInfo &BlockFrequencyInfo::operator=(BlockFrequencyInfo &&RHS) { // defined at the first ODR-use which is the BFI member in the // LazyBlockFrequencyInfo header. The dtor needs the BlockFrequencyInfoImpl // template instantiated which is not available in the header. -BlockFrequencyInfo::~BlockFrequencyInfo() {} +BlockFrequencyInfo::~BlockFrequencyInfo() = default; bool BlockFrequencyInfo::invalidate(Function &F, const PreservedAnalyses &PA, FunctionAnalysisManager::Invalidator &) { @@ -254,7 +264,6 @@ void BlockFrequencyInfo::print(raw_ostream &OS) const { BFI->print(OS); } - INITIALIZE_PASS_BEGIN(BlockFrequencyInfoWrapperPass, "block-freq", "Block Frequency Analysis", true, true) INITIALIZE_PASS_DEPENDENCY(BranchProbabilityInfoWrapperPass) @@ -264,13 +273,12 @@ INITIALIZE_PASS_END(BlockFrequencyInfoWrapperPass, "block-freq", char BlockFrequencyInfoWrapperPass::ID = 0; - BlockFrequencyInfoWrapperPass::BlockFrequencyInfoWrapperPass() : FunctionPass(ID) { initializeBlockFrequencyInfoWrapperPassPass(*PassRegistry::getPassRegistry()); } -BlockFrequencyInfoWrapperPass::~BlockFrequencyInfoWrapperPass() {} +BlockFrequencyInfoWrapperPass::~BlockFrequencyInfoWrapperPass() = default; void BlockFrequencyInfoWrapperPass::print(raw_ostream &OS, const Module *) const { diff --git a/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp b/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp index e5d8c3347c1..1030407b766 100644 --- a/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp +++ b/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp @@ -12,10 +12,28 @@ //===----------------------------------------------------------------------===// #include "llvm/Analysis/BlockFrequencyInfoImpl.h" +#include "llvm/ADT/APInt.h" +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/GraphTraits.h" +#include "llvm/ADT/None.h" #include "llvm/ADT/SCCIterator.h" #include "llvm/IR/Function.h" +#include "llvm/Support/BlockFrequency.h" +#include "llvm/Support/BranchProbability.h" +#include "llvm/Support/Compiler.h" +#include "llvm/Support/Debug.h" +#include "llvm/Support/ScaledNumber.h" +#include "llvm/Support/MathExtras.h" #include "llvm/Support/raw_ostream.h" +#include <algorithm> +#include <cassert> +#include <cstddef> +#include <cstdint> +#include <iterator> +#include <list> #include <numeric> +#include <utility> +#include <vector> using namespace llvm; using namespace llvm::bfi_detail; @@ -47,13 +65,13 @@ raw_ostream &BlockMass::print(raw_ostream &OS) const { namespace { -typedef BlockFrequencyInfoImplBase::BlockNode BlockNode; -typedef BlockFrequencyInfoImplBase::Distribution Distribution; -typedef BlockFrequencyInfoImplBase::Distribution::WeightList WeightList; -typedef BlockFrequencyInfoImplBase::Scaled64 Scaled64; -typedef BlockFrequencyInfoImplBase::LoopData LoopData; -typedef BlockFrequencyInfoImplBase::Weight Weight; -typedef BlockFrequencyInfoImplBase::FrequencyData FrequencyData; +using BlockNode = BlockFrequencyInfoImplBase::BlockNode; +using Distribution = BlockFrequencyInfoImplBase::Distribution; +using WeightList = BlockFrequencyInfoImplBase::Distribution::WeightList; +using Scaled64 = BlockFrequencyInfoImplBase::Scaled64; +using LoopData = BlockFrequencyInfoImplBase::LoopData; +using Weight = BlockFrequencyInfoImplBase::Weight; +using FrequencyData = BlockFrequencyInfoImplBase::FrequencyData; /// \brief Dithering mass distributer. /// @@ -158,7 +176,8 @@ static void combineWeightsBySorting(WeightList &Weights) { static void combineWeightsByHashing(WeightList &Weights) { // Collect weights into a DenseMap. - typedef DenseMap<BlockNode::IndexType, Weight> HashTable; + using HashTable = DenseMap<BlockNode::IndexType, Weight>; + HashTable Combined(NextPowerOf2(2 * Weights.size())); for (const Weight &W : Weights) combineWeight(Combined[W.TargetNode.Index], W); @@ -569,7 +588,7 @@ void BlockFrequencyInfoImplBase::setBlockFreq(const BlockNode &Node, std::string BlockFrequencyInfoImplBase::getBlockName(const BlockNode &Node) const { - return std::string(); + return {}; } std::string @@ -627,16 +646,17 @@ void IrreducibleGraph::addEdge(IrrNode &Irr, const BlockNode &Succ, } namespace llvm { -template <> struct GraphTraits<IrreducibleGraph> { - typedef bfi_detail::IrreducibleGraph GraphT; - typedef const GraphT::IrrNode *NodeRef; - typedef GraphT::IrrNode::iterator ChildIteratorType; +template <> struct GraphTraits<IrreducibleGraph> { + using GraphT = bfi_detail::IrreducibleGraph; + using NodeRef = const GraphT::IrrNode *; + using ChildIteratorType = GraphT::IrrNode::iterator; static NodeRef getEntryNode(const GraphT &G) { return G.StartIrr; } static ChildIteratorType child_begin(NodeRef N) { return N->succ_begin(); } static ChildIteratorType child_end(NodeRef N) { return N->succ_end(); } }; + } // end namespace llvm /// \brief Find extra irreducible headers. diff --git a/llvm/lib/Analysis/BranchProbabilityInfo.cpp b/llvm/lib/Analysis/BranchProbabilityInfo.cpp index a329e5ad48c..3748c651fd2 100644 --- a/llvm/lib/Analysis/BranchProbabilityInfo.cpp +++ b/llvm/lib/Analysis/BranchProbabilityInfo.cpp @@ -1,4 +1,4 @@ -//===-- BranchProbabilityInfo.cpp - Branch Probability Analysis -----------===// +//===- BranchProbabilityInfo.cpp - Branch Probability Analysis ------------===// // // The LLVM Compiler Infrastructure // @@ -13,16 +13,32 @@ #include "llvm/Analysis/BranchProbabilityInfo.h" #include "llvm/ADT/PostOrderIterator.h" +#include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/SmallVector.h" #include "llvm/Analysis/LoopInfo.h" #include "llvm/Analysis/TargetLibraryInfo.h" +#include "llvm/IR/Attributes.h" +#include "llvm/IR/BasicBlock.h" #include "llvm/IR/CFG.h" #include "llvm/IR/Constants.h" #include "llvm/IR/Function.h" +#include "llvm/IR/InstrTypes.h" +#include "llvm/IR/Instruction.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Metadata.h" +#include "llvm/IR/PassManager.h" +#include "llvm/IR/Type.h" +#include "llvm/IR/Value.h" +#include "llvm/Pass.h" +#include "llvm/Support/BranchProbability.h" +#include "llvm/Support/Casting.h" #include "llvm/Support/Debug.h" #include "llvm/Support/raw_ostream.h" +#include <cassert> +#include <cstdint> +#include <iterator> +#include <utility> using namespace llvm; @@ -722,7 +738,6 @@ raw_ostream & BranchProbabilityInfo::printEdgeProbability(raw_ostream &OS, const BasicBlock *Src, const BasicBlock *Dst) const { - const BranchProbability Prob = getEdgeProbability(Src, Dst); OS << "edge " << Src->getName() << " -> " << Dst->getName() << " probability is " << Prob diff --git a/llvm/lib/Analysis/DemandedBits.cpp b/llvm/lib/Analysis/DemandedBits.cpp index 9c53f9140ca..7e6d6b01a35 100644 --- a/llvm/lib/Analysis/DemandedBits.cpp +++ b/llvm/lib/Analysis/DemandedBits.cpp @@ -1,4 +1,4 @@ -//===---- DemandedBits.cpp - Determine demanded bits ----------------------===// +//===- DemandedBits.cpp - Determine demanded bits -------------------------===// // // The LLVM Compiler Infrastructure // @@ -20,30 +20,41 @@ //===----------------------------------------------------------------------===// #include "llvm/Analysis/DemandedBits.h" -#include "llvm/ADT/DepthFirstIterator.h" +#include "llvm/ADT/APInt.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringExtras.h" #include "llvm/Analysis/AssumptionCache.h" #include "llvm/Analysis/ValueTracking.h" #include "llvm/IR/BasicBlock.h" -#include "llvm/IR/CFG.h" +#include "llvm/IR/Constants.h" #include "llvm/IR/DataLayout.h" +#include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Dominators.h" #include "llvm/IR/InstIterator.h" -#include "llvm/IR/Instructions.h" +#include "llvm/IR/InstrTypes.h" +#include "llvm/IR/Instruction.h" #include "llvm/IR/IntrinsicInst.h" +#include "llvm/IR/Intrinsics.h" #include "llvm/IR/Module.h" #include "llvm/IR/Operator.h" +#include "llvm/IR/PassManager.h" +#include "llvm/IR/Type.h" +#include "llvm/IR/Use.h" #include "llvm/Pass.h" +#include "llvm/Support/Casting.h" #include "llvm/Support/Debug.h" #include "llvm/Support/KnownBits.h" #include "llvm/Support/raw_ostream.h" +#include <algorithm> +#include <cstdint> + using namespace llvm; #define DEBUG_TYPE "demanded-bits" char DemandedBitsWrapperPass::ID = 0; + INITIALIZE_PASS_BEGIN(DemandedBitsWrapperPass, "demanded-bits", "Demanded bits analysis", false, false) INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker) diff --git a/llvm/lib/Analysis/Trace.cpp b/llvm/lib/Analysis/Trace.cpp index c7e2c0f3412..34c998501a6 100644 --- a/llvm/lib/Analysis/Trace.cpp +++ b/llvm/lib/Analysis/Trace.cpp @@ -16,9 +16,12 @@ //===----------------------------------------------------------------------===// #include "llvm/Analysis/Trace.h" +#include "llvm/IR/BasicBlock.h" #include "llvm/IR/Function.h" +#include "llvm/Support/Compiler.h" #include "llvm/Support/Debug.h" #include "llvm/Support/raw_ostream.h" + using namespace llvm; Function *Trace::getFunction() const { @@ -30,7 +33,6 @@ Module *Trace::getModule() const { } /// print - Write trace to output stream. -/// void Trace::print(raw_ostream &O) const { Function *F = getFunction(); O << "; Trace from function " << F->getName() << ", blocks:\n"; @@ -45,7 +47,6 @@ void Trace::print(raw_ostream &O) const { #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) /// dump - Debugger convenience method; writes trace to standard error /// output stream. -/// LLVM_DUMP_METHOD void Trace::dump() const { print(dbgs()); } |