LLVM 22.0.0git
llvm::SyntheticCountsUtils< CallGraphType > Class Template Reference

Class with methods to propagate synthetic entry counts. More...

#include "llvm/Analysis/SyntheticCountsUtils.h"

Public Types

using Scaled64 = ScaledNumber<uint64_t>
using CGT = GraphTraits<CallGraphType>
using NodeRef = typename CGT::NodeRef
using EdgeRef = typename CGT::EdgeRef
using SccTy = std::vector<NodeRef>
using GetProfCountTy
using AddCountTy = function_ref<void(NodeRef, Scaled64)>

Static Public Member Functions

static void propagate (const CallGraphType &CG, GetProfCountTy GetProfCount, AddCountTy AddCount)
 Propgate synthetic entry counts on a callgraph CG.

Detailed Description

template<typename CallGraphType>
class llvm::SyntheticCountsUtils< CallGraphType >

Class with methods to propagate synthetic entry counts.

This class is templated on the type of the call graph and designed to work with the traditional per-module callgraph and the summary callgraphs used in ThinLTO. This contains only static methods and alias templates.

Definition at line 28 of file SyntheticCountsUtils.h.

Member Typedef Documentation

◆ AddCountTy

template<typename CallGraphType>
using llvm::SyntheticCountsUtils< CallGraphType >::AddCountTy = function_ref<void(NodeRef, Scaled64)>

Definition at line 40 of file SyntheticCountsUtils.h.

◆ CGT

template<typename CallGraphType>
using llvm::SyntheticCountsUtils< CallGraphType >::CGT = GraphTraits<CallGraphType>

Definition at line 31 of file SyntheticCountsUtils.h.

◆ EdgeRef

template<typename CallGraphType>
using llvm::SyntheticCountsUtils< CallGraphType >::EdgeRef = typename CGT::EdgeRef

Definition at line 33 of file SyntheticCountsUtils.h.

◆ GetProfCountTy

template<typename CallGraphType>
using llvm::SyntheticCountsUtils< CallGraphType >::GetProfCountTy
Initial value:
typename CGT::NodeRef NodeRef
typename CGT::EdgeRef EdgeRef
An efficient, type-erasing, non-owning reference to a callable.

Definition at line 38 of file SyntheticCountsUtils.h.

◆ NodeRef

template<typename CallGraphType>
using llvm::SyntheticCountsUtils< CallGraphType >::NodeRef = typename CGT::NodeRef

Definition at line 32 of file SyntheticCountsUtils.h.

◆ Scaled64

template<typename CallGraphType>
using llvm::SyntheticCountsUtils< CallGraphType >::Scaled64 = ScaledNumber<uint64_t>

Definition at line 30 of file SyntheticCountsUtils.h.

◆ SccTy

template<typename CallGraphType>
using llvm::SyntheticCountsUtils< CallGraphType >::SccTy = std::vector<NodeRef>

Definition at line 34 of file SyntheticCountsUtils.h.

Member Function Documentation

◆ propagate()

template<typename CallGraphType>
void SyntheticCountsUtils::propagate ( const CallGraphType & CG,
GetProfCountTy GetProfCount,
AddCountTy AddCount )
static

Propgate synthetic entry counts on a callgraph CG.

This performs a reverse post-order traversal of the callgraph SCC. For each SCC, it first propagates the entry counts to the nodes within the SCC through call edges and updates them in one shot. Then the entry counts are propagated to nodes outside the SCC. This requires GraphTraits to have a specialization for CallGraphType.

Definition at line 80 of file SyntheticCountsUtils.cpp.

References I, llvm::reverse(), and llvm::scc_begin().


The documentation for this class was generated from the following files: