LLVM 19.0.0git
Public Member Functions | Friends | List of all members
llvm::MachineLoopInfo Class Reference

#include "llvm/CodeGen/MachineLoopInfo.h"

Inheritance diagram for llvm::MachineLoopInfo:
Inheritance graph
[legend]

Public Member Functions

 MachineLoopInfo ()=default
 
 MachineLoopInfo (MachineDominatorTree &MDT)
 
 MachineLoopInfo (MachineLoopInfo &&)=default
 
 MachineLoopInfo (const MachineLoopInfo &)=delete
 
MachineLoopInfooperator= (const MachineLoopInfo &)=delete
 
bool invalidate (MachineFunction &, const PreservedAnalyses &PA, MachineFunctionAnalysisManager::Invalidator &)
 Handle invalidation explicitly.
 
MachineBasicBlockfindLoopPreheader (MachineLoop *L, bool SpeculativePreheader=false, bool FindMultiLoopPreheader=false) const
 Find the block that either is the loop preheader, or could speculatively be used as the preheader.
 
void calculate (MachineDominatorTree &MDT)
 Calculate the natural loop information.
 
- Public Member Functions inherited from llvm::LoopInfoBase< MachineBasicBlock, MachineLoop >
LoopInfoBaseoperator= (LoopInfoBase &&RHS)
 
 LoopInfoBase ()=default
 
 LoopInfoBase (LoopInfoBase &&Arg)
 
 ~LoopInfoBase ()
 
void releaseMemory ()
 
MachineLoopAllocateLoop (ArgsTy &&...Args)
 
iterator begin () const
 
iterator end () const
 
reverse_iterator rbegin () const
 
reverse_iterator rend () const
 
bool empty () const
 
SmallVector< MachineLoop *, 4 > getLoopsInPreorder () const
 Return all of the loops in the function in preorder across the loop nests, with siblings in forward program order.
 
SmallVector< MachineLoop *, 4 > getLoopsInReverseSiblingPreorder () const
 Return all of the loops in the function in preorder across the loop nests, with siblings in reverse program order.
 
MachineLoopgetLoopFor (const MachineBasicBlock *BB) const
 Return the inner most loop that BB lives in.
 
const MachineLoopoperator[] (const MachineBasicBlock *BB) const
 Same as getLoopFor.
 
unsigned getLoopDepth (const MachineBasicBlock *BB) const
 Return the loop nesting level of the specified block.
 
bool isLoopHeader (const MachineBasicBlock *BB) const
 
const std::vector< MachineLoop * > & getTopLevelLoops () const
 Return the top-level loops.
 
std::vector< MachineLoop * > & getTopLevelLoopsVector ()
 Return the top-level loops.
 
MachineLoopremoveLoop (iterator I)
 This removes the specified top-level loop from this loop info object.
 
void changeLoopFor (MachineBasicBlock *BB, MachineLoop *L)
 Change the top-level loop that contains BB to the specified loop.
 
void changeTopLevelLoop (MachineLoop *OldLoop, MachineLoop *NewLoop)
 Replace the specified loop in the top-level loops list with the indicated loop.
 
void addTopLevelLoop (MachineLoop *New)
 This adds the specified loop to the collection of top-level loops.
 
void removeBlock (MachineBasicBlock *BB)
 This method completely removes BB from all data structures, including all of the Loop objects it is nested in and our mapping from BasicBlocks to loops.
 
void analyze (const DominatorTreeBase< MachineBasicBlock, false > &DomTree)
 Create the loop forest using a stable algorithm.
 
void print (raw_ostream &OS) const
 
void verify (const DominatorTreeBase< MachineBasicBlock, false > &DomTree) const
 
void destroy (MachineLoop *L)
 Destroy a loop that has been removed from the LoopInfo nest.
 

Friends

class LoopBase< MachineBasicBlock, MachineLoop >
 
class MachineLoopInfoWrapperPass
 

Additional Inherited Members

- Public Types inherited from llvm::LoopInfoBase< MachineBasicBlock, MachineLoop >
typedef std::vector< MachineLoop * >::const_iterator iterator
 iterator/begin/end - The interface to the top-level loops in the current function.
 
typedef std::vector< MachineLoop * >::const_reverse_iterator reverse_iterator
 
- Static Public Member Functions inherited from llvm::LoopInfoBase< MachineBasicBlock, MachineLoop >
static bool isNotAlreadyContainedIn (const MachineLoop *SubLoop, const MachineLoop *ParentLoop)
 

Detailed Description

Definition at line 105 of file MachineLoopInfo.h.

Constructor & Destructor Documentation

◆ MachineLoopInfo() [1/4]

llvm::MachineLoopInfo::MachineLoopInfo ( )
default

◆ MachineLoopInfo() [2/4]

llvm::MachineLoopInfo::MachineLoopInfo ( MachineDominatorTree MDT)
inlineexplicit

Definition at line 111 of file MachineLoopInfo.h.

◆ MachineLoopInfo() [3/4]

llvm::MachineLoopInfo::MachineLoopInfo ( MachineLoopInfo &&  )
default

◆ MachineLoopInfo() [4/4]

llvm::MachineLoopInfo::MachineLoopInfo ( const MachineLoopInfo )
delete

Member Function Documentation

◆ calculate()

void MachineLoopInfo::calculate ( MachineDominatorTree MDT)

◆ findLoopPreheader()

MachineBasicBlock * MachineLoopInfo::findLoopPreheader ( MachineLoop L,
bool  SpeculativePreheader = false,
bool  FindMultiLoopPreheader = false 
) const

Find the block that either is the loop preheader, or could speculatively be used as the preheader.

This is e.g. useful to place loop setup code. Code that cannot be speculated should not be placed here. SpeculativePreheader is controlling whether it also tries to find the speculative preheader if the regular preheader is not present. With FindMultiLoopPreheader = false, nullptr will be returned if the found preheader is the preheader of multiple loops.

Definition at line 146 of file MachineLoopInfo.cpp.

References llvm::LoopInfoBase< MachineBasicBlock, MachineLoop >::getLoopFor(), llvm::MachineBasicBlock::hasAddressTaken(), P, PB(), llvm::MachineBasicBlock::pred_size(), llvm::MachineBasicBlock::predecessors(), and llvm::MachineBasicBlock::successors().

◆ invalidate()

bool MachineLoopInfo::invalidate ( MachineFunction ,
const PreservedAnalyses PA,
MachineFunctionAnalysisManager::Invalidator  
)

Handle invalidation explicitly.

Definition at line 67 of file MachineLoopInfo.cpp.

References llvm::PreservedAnalyses::getChecker().

◆ operator=()

MachineLoopInfo & llvm::MachineLoopInfo::operator= ( const MachineLoopInfo )
delete

Friends And Related Function Documentation

◆ LoopBase< MachineBasicBlock, MachineLoop >

friend class LoopBase< MachineBasicBlock, MachineLoop >
friend

Definition at line 99 of file MachineLoopInfo.h.

◆ MachineLoopInfoWrapperPass

friend class MachineLoopInfoWrapperPass
friend

Definition at line 107 of file MachineLoopInfo.h.


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