LLVM  9.0.0svn
Friends | List of all members
llvm::VPLoop Class Reference

Hold analysis information for every loop detected by VPLoopInfo. More...

#include "Transforms/Vectorize/VPlanLoopInfo.h"

Inheritance diagram for llvm::VPLoop:
Inheritance graph
[legend]
Collaboration diagram for llvm::VPLoop:
Collaboration graph
[legend]

Friends

class LoopInfoBase< VPBlockBase, VPLoop >
 

Additional Inherited Members

- Public Types inherited from llvm::LoopBase< VPBlockBase, VPLoop >
typedef std::vector< VPLoop *>::const_iterator iterator
 
typedef std::vector< VPLoop *>::const_reverse_iterator reverse_iterator
 
typedef ArrayRef< VPBlockBase *>::const_iterator block_iterator
 
typedef std::pair< VPBlockBase *, VPBlockBase *> Edge
 Edge type. More...
 
- Public Member Functions inherited from llvm::LoopBase< VPBlockBase, VPLoop >
unsigned getLoopDepth () const
 Return the nesting level of this loop. More...
 
VPBlockBasegetHeader () const
 
VPLoopgetParentLoop () const
 
void setParentLoop (VPLoop *L)
 This is a raw interface for bypassing addChildLoop. More...
 
bool contains (const VPLoop *L) const
 Return true if the specified loop is contained within in this loop. More...
 
bool contains (const VPBlockBase *BB) const
 Return true if the specified basic block is in this loop. More...
 
bool contains (const InstT *Inst) const
 Return true if the specified instruction is in this loop. More...
 
const std::vector< VPLoop *> & getSubLoops () const
 Return the loops contained entirely within this loop. More...
 
std::vector< VPLoop *> & getSubLoopsVector ()
 
iterator begin () const
 
iterator end () const
 
reverse_iterator rbegin () const
 
reverse_iterator rend () const
 
bool empty () const
 
ArrayRef< VPBlockBase *> getBlocks () const
 Get a list of the basic blocks which make up this loop. More...
 
block_iterator block_begin () const
 
block_iterator block_end () const
 
iterator_range< block_iteratorblocks () const
 
unsigned getNumBlocks () const
 Get the number of blocks in this loop in constant time. More...
 
std::vector< VPBlockBase *> & getBlocksVector ()
 Return a direct, mutable handle to the blocks vector so that we can mutate it efficiently with techniques like std::remove. More...
 
SmallPtrSetImpl< const VPBlockBase *> & getBlocksSet ()
 Return a direct, mutable handle to the blocks set so that we can mutate it efficiently. More...
 
const SmallPtrSetImpl< const VPBlockBase *> & getBlocksSet () const
 Return a direct, immutable handle to the blocks set. More...
 
bool isInvalid () const
 Return true if this loop is no longer valid. More...
 
bool isLoopExiting (const VPBlockBase *BB) const
 True if terminator in the block can branch to another block that is outside of the current loop. More...
 
bool isLoopLatch (const VPBlockBase *BB) const
 
unsigned getNumBackEdges () const
 Calculate the number of back edges to the loop header. More...
 
void getExitingBlocks (SmallVectorImpl< VPBlockBase * > &ExitingBlocks) const
 Return all blocks inside the loop that have successors outside of the loop. More...
 
VPBlockBasegetExitingBlock () const
 If getExitingBlocks would return exactly one block, return that block. More...
 
void getExitBlocks (SmallVectorImpl< VPBlockBase * > &ExitBlocks) const
 Return all of the successor blocks of this loop. More...
 
VPBlockBasegetExitBlock () const
 If getExitBlocks would return exactly one block, return that block. More...
 
bool hasDedicatedExits () const
 Return true if no exit block for the loop has a predecessor that is outside the loop. More...
 
void getUniqueExitBlocks (SmallVectorImpl< VPBlockBase * > &ExitBlocks) const
 Return all unique successor blocks of this loop. More...
 
void getUniqueNonLatchExitBlocks (SmallVectorImpl< VPBlockBase * > &ExitBlocks) const
 Return all unique successor blocks of this loop except successors from Latch block are not considered. More...
 
VPBlockBasegetUniqueExitBlock () const
 If getUniqueExitBlocks would return exactly one block, return that block. More...
 
void getExitEdges (SmallVectorImpl< Edge > &ExitEdges) const
 Return all pairs of (inside_block,outside_block). More...
 
VPBlockBasegetLoopPreheader () const
 If there is a preheader for this loop, return it. More...
 
VPBlockBasegetLoopPredecessor () const
 If the given loop's header has exactly one unique predecessor outside the loop, return it. More...
 
VPBlockBasegetLoopLatch () const
 If there is a single latch block for this loop, return it. More...
 
void getLoopLatches (SmallVectorImpl< VPBlockBase * > &LoopLatches) const
 Return all loop latch blocks of this loop. More...
 
SmallVector< const VPLoop *, 4 > getLoopsInPreorder () const
 Return all loops in the loop nest rooted by the loop in preorder, with siblings in forward program order. More...
 
SmallVector< VPLoop *, 4 > getLoopsInPreorder ()
 
void addBasicBlockToLoop (VPBlockBase *NewBB, LoopInfoBase< VPBlockBase, VPLoop > &LI)
 This method is used by other analyses to update loop information. More...
 
void replaceChildLoopWith (VPLoop *OldChild, VPLoop *NewChild)
 This is used when splitting loops up. More...
 
void addChildLoop (VPLoop *NewChild)
 Add the specified loop to be a child of this loop. More...
 
VPLoopremoveChildLoop (iterator I)
 This removes the specified child from being a subloop of this loop. More...
 
VPLoopremoveChildLoop (VPLoop *Child)
 This removes the specified child from being a subloop of this loop. More...
 
void addBlockEntry (VPBlockBase *BB)
 This adds a basic block directly to the basic block list. More...
 
void reverseBlock (unsigned from)
 interface to reverse Blocks[from, end of loop] in this loop More...
 
void reserveBlocks (unsigned size)
 interface to do reserve() for Blocks More...
 
void moveToHeader (VPBlockBase *BB)
 This method is used to move BB (which must be part of this loop) to be the loop header of the loop (the block that dominates all others). More...
 
void removeBlockFromLoop (VPBlockBase *BB)
 This removes the specified basic block from the current loop, updating the Blocks as appropriate. More...
 
void verifyLoop () const
 Verify loop structure. More...
 
void verifyLoopNest (DenseSet< const VPLoop * > *Loops) const
 Verify loop structure of this loop and all nested loops. More...
 
bool isAnnotatedParallel () const
 Returns true if the loop is annotated parallel. More...
 
void print (raw_ostream &OS, unsigned Depth=0, bool Verbose=false) const
 Print loop with all the BBs inside it. More...
 
- Static Public Member Functions inherited from llvm::LoopBase< VPBlockBase, VPLoop >
static void getInnerLoopsInPreorder (const VPLoop &L, SmallVectorImpl< Type > &PreOrderLoops)
 Return all inner loops in the loop nest rooted by the loop in preorder, with siblings in forward program order. More...
 
- Protected Member Functions inherited from llvm::LoopBase< VPBlockBase, VPLoop >
 LoopBase ()
 This creates an empty loop. More...
 
 LoopBase (VPBlockBase *BB)
 
 ~LoopBase ()
 

Detailed Description

Hold analysis information for every loop detected by VPLoopInfo.

It is an instantiation of LoopBase.

Definition at line 27 of file VPlanLoopInfo.h.

Friends And Related Function Documentation

◆ LoopInfoBase< VPBlockBase, VPLoop >

friend class LoopInfoBase< VPBlockBase, VPLoop >
friend

Definition at line 29 of file VPlanLoopInfo.h.


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