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 | addBlockToCycle (BlockT *Block, CycleT *Cycle) |
Assumes that Cycle is the innermost cycle containing 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 258 of file GenericCycleInfo.h.
using llvm::GenericCycleInfo< ContextT >::BlockT = typename ContextT::BlockT |
Definition at line 260 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 321 of file GenericCycleInfo.h.
using llvm::GenericCycleInfo< ContextT >::CycleT = GenericCycle<ContextT> |
Definition at line 261 of file GenericCycleInfo.h.
using llvm::GenericCycleInfo< ContextT >::FunctionT = typename ContextT::FunctionT |
Definition at line 262 of file GenericCycleInfo.h.
|
default |
|
default |
void llvm::GenericCycleInfo< ContextT >::addBlockToCycle | ( | BlockT * | Block, |
CycleT * | Cycle | ||
) |
Assumes that Cycle
is the innermost cycle containing Block
.
Block
will be appended to Cycle
and all of its parent cycles. Block
will be added to BlockMap with Cycle
and BlockMapTopLevel with Cycle's
top level parent cycle.
Definition at line 312 of file GenericCycleImpl.h.
Referenced by fixIrreducible().
void llvm::GenericCycleInfo< ContextT >::clear |
Reset the object to its initial state.
Definition at line 496 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 504 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 315 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 531 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 570 of file GenericCycleImpl.h.
References llvm::Block, and llvm::GenericCycle< ContextT >::getDepth().
|
inline |
Definition at line 296 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 541 of file GenericCycleImpl.h.
|
inline |
Definition at line 297 of file GenericCycleInfo.h.
auto llvm::GenericCycleInfo< ContextT >::getTopLevelParentCycle | ( | BlockT * | Block | ) |
Definition at line 269 of file GenericCycleImpl.h.
References llvm::Block, and llvm::CallingConv::C.
|
default |
|
inline |
Definition at line 316 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 612 of file GenericCycleImpl.h.
References llvm::depth_first(), I, and llvm::GenericCycle< ContextT >::print().
Referenced by llvm::GenericCycleInfo< ContextT >::dump(), fixIrreducible(), llvm::CycleInfoWrapperPass::print(), and llvm::MachineCycleInfoWrapperPass::print().
void llvm::GenericCycleInfo< ContextT >::splitCriticalEdge | ( | BlockT * | Pred, |
BlockT * | Succ, | ||
BlockT * | New | ||
) |
Definition at line 514 of file GenericCycleImpl.h.
|
inline |
Definition at line 337 of file GenericCycleInfo.h.
|
inline |
Definition at line 344 of file GenericCycleInfo.h.
References llvm::make_range().
Referenced by FixIrreducibleImpl().
|
inline |
Definition at line 340 of file GenericCycleInfo.h.
void llvm::GenericCycleInfo< ContextT >::verify |
Verify that the entire cycle tree well-formed.
Definition at line 606 of file GenericCycleImpl.h.
Referenced by FixIrreducibleImpl(), and 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 582 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 263 of file GenericCycleInfo.h.
Definition at line 264 of file GenericCycleInfo.h.