LLVM 20.0.0git
Classes | Public Types | Public Member Functions | Friends | List of all members
llvm::GenericCycleInfo< ContextT > Class Template Reference

Cycle information for a function. More...

#include "llvm/ADT/GenericCycleInfo.h"

Inheritance diagram for llvm::GenericCycleInfo< ContextT >:
Inheritance graph
[legend]

Classes

struct  const_toplevel_iterator
 

Public Types

using BlockT = typename ContextT::BlockT
 
using CycleT = GenericCycle< ContextT >
 
using FunctionT = typename ContextT::FunctionT
 
using const_toplevel_iterator_base = typename std::vector< std::unique_ptr< CycleT > >::const_iterator
 Iteration over top-level cycles.
 

Public Member Functions

 GenericCycleInfo ()=default
 
 GenericCycleInfo (GenericCycleInfo &&)=default
 
GenericCycleInfooperator= (GenericCycleInfo &&)=default
 
void clear ()
 Reset the object to its initial state.
 
void compute (FunctionT &F)
 Compute the cycle info for a function.
 
void splitCriticalEdge (BlockT *Pred, BlockT *Succ, BlockT *New)
 
const FunctionTgetFunction () const
 
const ContextT & getSSAContext () const
 
CycleTgetCycle (const BlockT *Block) const
 Find the innermost cycle containing a given block.
 
CycleTgetSmallestCommonCycle (CycleT *A, CycleT *B) const
 Find the innermost cycle containing both given cycles.
 
unsigned getCycleDepth (const BlockT *Block) const
 get the depth for the cycle which containing a given block.
 
CycleTgetTopLevelParentCycle (BlockT *Block)
 
void verifyCycleNest (bool VerifyFull=false) const
 Methods for debug and self-test.
 
void verify () const
 Verify that the entire cycle tree well-formed.
 
void print (raw_ostream &Out) const
 Print the cycle info.
 
void dump () const
 
Printable print (const CycleT *Cycle)
 
const_toplevel_iterator toplevel_begin () const
 
const_toplevel_iterator toplevel_end () const
 
iterator_range< const_toplevel_iteratortoplevel_cycles () const
 

Friends

template<typename >
class GenericCycle
 
template<typename >
class GenericCycleInfoCompute
 

Detailed Description

template<typename ContextT>
class llvm::GenericCycleInfo< ContextT >

Cycle information for a function.

Definition at line 229 of file GenericCycleInfo.h.

Member Typedef Documentation

◆ BlockT

template<typename ContextT >
using llvm::GenericCycleInfo< ContextT >::BlockT = typename ContextT::BlockT

Definition at line 231 of file GenericCycleInfo.h.

◆ const_toplevel_iterator_base

template<typename ContextT >
using llvm::GenericCycleInfo< ContextT >::const_toplevel_iterator_base = typename std::vector<std::unique_ptr<CycleT> >::const_iterator

Iteration over top-level cycles.

Definition at line 292 of file GenericCycleInfo.h.

◆ CycleT

template<typename ContextT >
using llvm::GenericCycleInfo< ContextT >::CycleT = GenericCycle<ContextT>

Definition at line 232 of file GenericCycleInfo.h.

◆ FunctionT

template<typename ContextT >
using llvm::GenericCycleInfo< ContextT >::FunctionT = typename ContextT::FunctionT

Definition at line 233 of file GenericCycleInfo.h.

Constructor & Destructor Documentation

◆ GenericCycleInfo() [1/2]

template<typename ContextT >
llvm::GenericCycleInfo< ContextT >::GenericCycleInfo ( )
default

◆ GenericCycleInfo() [2/2]

template<typename ContextT >
llvm::GenericCycleInfo< ContextT >::GenericCycleInfo ( GenericCycleInfo< ContextT > &&  )
default

Member Function Documentation

◆ clear()

template<typename ContextT >
void llvm::GenericCycleInfo< ContextT >::clear

◆ compute()

template<typename ContextT >
void llvm::GenericCycleInfo< ContextT >::compute ( FunctionT F)

◆ dump()

template<typename ContextT >
void llvm::GenericCycleInfo< ContextT >::dump ( ) const
inline

◆ getCycle()

template<typename ContextT >
auto llvm::GenericCycleInfo< ContextT >::getCycle ( const BlockT Block) const

Find the innermost cycle containing a given block.

Returns
the innermost cycle containing Block or nullptr if it is not contained in any cycle.

Definition at line 522 of file GenericCycleImpl.h.

References llvm::Block.

Referenced by llvm::SIInstrInfo::isSafeToSink(), and mayBeInCycle().

◆ getCycleDepth()

template<typename ContextT >
unsigned llvm::GenericCycleInfo< ContextT >::getCycleDepth ( const BlockT Block) const

get the depth for the cycle which containing a given block.

Returns
the depth for the innermost cycle containing Block or 0 if it is not contained in any cycle.

Definition at line 561 of file GenericCycleImpl.h.

References llvm::Block, and llvm::GenericCycle< ContextT >::getDepth().

◆ getFunction()

template<typename ContextT >
const FunctionT * llvm::GenericCycleInfo< ContextT >::getFunction ( ) const
inline

Definition at line 273 of file GenericCycleInfo.h.

◆ getSmallestCommonCycle()

template<typename ContextT >
auto llvm::GenericCycleInfo< ContextT >::getSmallestCommonCycle ( CycleT A,
CycleT B 
) const

Find the innermost cycle containing both given cycles.

Returns
the innermost cycle containing both A and B or nullptr if there is no such cycle.

Definition at line 532 of file GenericCycleImpl.h.

References A, and B.

◆ getSSAContext()

template<typename ContextT >
const ContextT & llvm::GenericCycleInfo< ContextT >::getSSAContext ( ) const
inline

Definition at line 274 of file GenericCycleInfo.h.

◆ getTopLevelParentCycle()

template<typename ContextT >
auto llvm::GenericCycleInfo< ContextT >::getTopLevelParentCycle ( BlockT Block)

Definition at line 263 of file GenericCycleImpl.h.

References llvm::Block.

◆ operator=()

template<typename ContextT >
GenericCycleInfo & llvm::GenericCycleInfo< ContextT >::operator= ( GenericCycleInfo< ContextT > &&  )
default

◆ print() [1/2]

template<typename ContextT >
Printable llvm::GenericCycleInfo< ContextT >::print ( const CycleT Cycle)
inline

Definition at line 287 of file GenericCycleInfo.h.

References llvm::GenericCycle< ContextT >::print().

◆ print() [2/2]

template<typename ContextT >
void llvm::GenericCycleInfo< ContextT >::print ( raw_ostream Out) const

◆ splitCriticalEdge()

template<typename ContextT >
void llvm::GenericCycleInfo< ContextT >::splitCriticalEdge ( BlockT Pred,
BlockT Succ,
BlockT New 
)

Definition at line 505 of file GenericCycleImpl.h.

◆ toplevel_begin()

template<typename ContextT >
const_toplevel_iterator llvm::GenericCycleInfo< ContextT >::toplevel_begin ( ) const
inline

Definition at line 308 of file GenericCycleInfo.h.

◆ toplevel_cycles()

template<typename ContextT >
iterator_range< const_toplevel_iterator > llvm::GenericCycleInfo< ContextT >::toplevel_cycles ( ) const
inline

Definition at line 315 of file GenericCycleInfo.h.

References llvm::make_range().

◆ toplevel_end()

template<typename ContextT >
const_toplevel_iterator llvm::GenericCycleInfo< ContextT >::toplevel_end ( ) const
inline

Definition at line 311 of file GenericCycleInfo.h.

◆ verify()

template<typename ContextT >
void llvm::GenericCycleInfo< ContextT >::verify

Verify that the entire cycle tree well-formed.

Definition at line 597 of file GenericCycleImpl.h.

Referenced by llvm::CycleInfoVerifierPass::run().

◆ verifyCycleNest()

template<typename ContextT >
void llvm::GenericCycleInfo< ContextT >::verifyCycleNest ( bool  VerifyFull = false) const

Methods for debug and self-test.

Verify the internal consistency of the cycle tree.

Note that this does not check that cycles are really cycles in the CFG, or that the right set of cycles in the CFG were found.

Definition at line 573 of file GenericCycleImpl.h.

References assert(), llvm::GenericCycle< ContextT >::blocks(), llvm::GenericCycle< ContextT >::contains(), llvm::depth_first(), llvm::GenericCycle< ContextT >::getHeader(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::GenericCycle< ContextT >::verifyCycle(), and llvm::GenericCycle< ContextT >::verifyCycleNest().

Friends And Related Function Documentation

◆ GenericCycle

template<typename ContextT >
template<typename >
friend class GenericCycle
friend

Definition at line 234 of file GenericCycleInfo.h.

◆ GenericCycleInfoCompute

template<typename ContextT >
template<typename >
friend class GenericCycleInfoCompute
friend

Definition at line 235 of file GenericCycleInfo.h.


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