LLVM 20.0.0git
|
Cycle information for a function. More...
#include "llvm/ADT/GenericCycleInfo.h"
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 | |
GenericCycleInfo & | operator= (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 FunctionT * | getFunction () const |
const ContextT & | getSSAContext () const |
CycleT * | getCycle (const BlockT *Block) const |
Find the innermost cycle containing a given block. | |
CycleT * | getSmallestCommonCycle (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. | |
CycleT * | getTopLevelParentCycle (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_iterator > | toplevel_cycles () const |
Friends | |
template<typename > | |
class | GenericCycle |
template<typename > | |
class | GenericCycleInfoCompute |
Cycle information for a function.
Definition at line 229 of file GenericCycleInfo.h.
using llvm::GenericCycleInfo< ContextT >::BlockT = typename ContextT::BlockT |
Definition at line 231 of file GenericCycleInfo.h.
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.
using llvm::GenericCycleInfo< ContextT >::CycleT = GenericCycle<ContextT> |
Definition at line 232 of file GenericCycleInfo.h.
using llvm::GenericCycleInfo< ContextT >::FunctionT = typename ContextT::FunctionT |
Definition at line 233 of file GenericCycleInfo.h.
|
default |
|
default |
void llvm::GenericCycleInfo< ContextT >::clear |
Reset the object to its initial state.
Definition at line 487 of file GenericCycleImpl.h.
Referenced by llvm::CycleInfoWrapperPass::releaseMemory(), llvm::MachineCycleInfoWrapperPass::releaseMemory(), llvm::CycleInfoWrapperPass::runOnFunction(), and llvm::MachineCycleInfoWrapperPass::runOnMachineFunction().
void llvm::GenericCycleInfo< ContextT >::compute | ( | FunctionT & | F | ) |
Compute the cycle info for a function.
Definition at line 495 of file GenericCycleImpl.h.
References llvm::errs(), F, LLVM_DEBUG, and llvm::GenericCycleInfoCompute< ContextT >::run().
Referenced by llvm::CycleAnalysis::run(), llvm::CycleInfoWrapperPass::runOnFunction(), and llvm::MachineCycleInfoWrapperPass::runOnMachineFunction().
|
inline |
Definition at line 286 of file GenericCycleInfo.h.
References llvm::dbgs(), and llvm::GenericCycleInfo< ContextT >::print().
auto llvm::GenericCycleInfo< ContextT >::getCycle | ( | const BlockT * | Block | ) | const |
Find the innermost cycle containing a given block.
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().
unsigned llvm::GenericCycleInfo< ContextT >::getCycleDepth | ( | const BlockT * | Block | ) | const |
get the depth for the cycle which containing a given block.
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().
|
inline |
Definition at line 273 of file GenericCycleInfo.h.
auto llvm::GenericCycleInfo< ContextT >::getSmallestCommonCycle | ( | CycleT * | A, |
CycleT * | B | ||
) | const |
Find the innermost cycle containing both given cycles.
A
and B
or nullptr if there is no such cycle. Definition at line 532 of file GenericCycleImpl.h.
|
inline |
Definition at line 274 of file GenericCycleInfo.h.
auto llvm::GenericCycleInfo< ContextT >::getTopLevelParentCycle | ( | BlockT * | Block | ) |
Definition at line 263 of file GenericCycleImpl.h.
References llvm::Block.
|
default |
|
inline |
Definition at line 287 of file GenericCycleInfo.h.
References llvm::GenericCycle< ContextT >::print().
void llvm::GenericCycleInfo< ContextT >::print | ( | raw_ostream & | Out | ) | const |
Print the cycle info.
Definition at line 603 of file GenericCycleImpl.h.
References llvm::depth_first(), I, and llvm::GenericCycle< ContextT >::print().
Referenced by llvm::GenericCycleInfo< ContextT >::dump(), llvm::CycleInfoWrapperPass::print(), and llvm::MachineCycleInfoWrapperPass::print().
void llvm::GenericCycleInfo< ContextT >::splitCriticalEdge | ( | BlockT * | Pred, |
BlockT * | Succ, | ||
BlockT * | New | ||
) |
Definition at line 505 of file GenericCycleImpl.h.
|
inline |
Definition at line 308 of file GenericCycleInfo.h.
|
inline |
Definition at line 315 of file GenericCycleInfo.h.
References llvm::make_range().
|
inline |
Definition at line 311 of file GenericCycleInfo.h.
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().
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().
Definition at line 234 of file GenericCycleInfo.h.
Definition at line 235 of file GenericCycleInfo.h.