|
LLVM
3.7.0
|
#include <LoopInfo.h>
Public Member Functions | |
| LoopInfo () | |
| LoopInfo (LoopInfo &&Arg) | |
| LoopInfo & | operator= (LoopInfo &&RHS) |
| void | updateUnloop (Loop *Unloop) |
| updateUnloop - Update LoopInfo after removing the last backedge from a loop–now the "unloop". More... | |
| bool | replacementPreservesLCSSAForm (Instruction *From, Value *To) |
| replacementPreservesLCSSAForm - Returns true if replacing From with To everywhere is guaranteed to preserve LCSSA form. More... | |
Public Member Functions inherited from llvm::LoopInfoBase< BasicBlock, Loop > | |
| LoopInfoBase & | operator= (LoopInfoBase &&RHS) |
| LoopInfoBase () | |
| LoopInfoBase (LoopInfoBase &&Arg) | |
| ~LoopInfoBase () | |
| void | releaseMemory () |
| iterator | begin () const |
| iterator | end () const |
| reverse_iterator | rbegin () const |
| reverse_iterator | rend () const |
| bool | empty () const |
| LoopT * | getLoopFor (const BlockT *BB) const |
| getLoopFor - Return the inner most loop that BB lives in. More... | |
| const LoopT * | operator[] (const BlockT *BB) const |
| operator[] - same as getLoopFor... More... | |
| unsigned | getLoopDepth (const BlockT *BB) const |
| getLoopDepth - Return the loop nesting level of the specified block. More... | |
| bool | isLoopHeader (const BlockT *BB) const |
| LoopT * | removeLoop (iterator I) |
| removeLoop - This removes the specified top-level loop from this loop info object. More... | |
| void | changeLoopFor (BlockT *BB, LoopT *L) |
| changeLoopFor - Change the top-level loop that contains BB to the specified loop. More... | |
| void | changeTopLevelLoop (LoopT *OldLoop, LoopT *NewLoop) |
| changeTopLevelLoop - Replace the specified loop in the top-level loops list with the indicated loop. More... | |
| void | addTopLevelLoop (LoopT *New) |
| addTopLevelLoop - This adds the specified loop to the collection of top-level loops. More... | |
| void | removeBlock (BlockT *BB) |
| removeBlock - 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. More... | |
| void | Analyze (DominatorTreeBase< BlockT > &DomTree) |
| Create the loop forest using a stable algorithm. More... | |
| void | print (raw_ostream &OS) const |
| void | verify () const |
Friends | |
| class | LoopBase< BasicBlock, Loop > |
Additional Inherited Members | |
Public Types inherited from llvm::LoopInfoBase< BasicBlock, Loop > | |
| typedef std::vector< LoopT * > ::const_iterator | iterator |
| iterator/begin/end - The interface to the top-level loops in the current function. More... | |
| typedef std::vector< LoopT * > ::const_reverse_iterator | reverse_iterator |
Static Public Member Functions inherited from llvm::LoopInfoBase< BasicBlock, Loop > | |
| static bool | isNotAlreadyContainedIn (const LoopT *SubLoop, const LoopT *ParentLoop) |
Definition at line 636 of file LoopInfo.h.
|
inline |
Definition at line 644 of file LoopInfo.h.
|
inline |
Definition at line 646 of file LoopInfo.h.
Definition at line 647 of file LoopInfo.h.
|
inline |
replacementPreservesLCSSAForm - Returns true if replacing From with To everywhere is guaranteed to preserve LCSSA form.
Definition at line 662 of file LoopInfo.h.
References llvm::LoopBase< N, M >::contains(), llvm::dyn_cast(), llvm::Instruction::getParent(), and I.
Referenced by llvm::UnrollLoop().
| void LoopInfo::updateUnloop | ( | Loop * | Unloop | ) |
updateUnloop - Update LoopInfo after removing the last backedge from a loop–now the "unloop".
updateUnloop - The last backedge has been removed from a loop–now the "unloop".
This updates the loop forest and parent loops for each block so that Unloop is no longer referenced, but the caller must actually delete the Unloop object.
Find a new parent for the blocks contained within unloop and update the loop tree. We don't necessarily have valid dominators at this point, but LoopInfo is still valid except for the removal of this loop.
Note that Unloop may now be an empty loop. Calling Loop::getHeader without checking first is illegal.
Definition at line 612 of file LoopInfo.cpp.
References llvm::LoopInfoBase< BasicBlock, Loop >::addTopLevelLoop(), llvm::LoopBase< N, M >::begin(), llvm::LoopInfoBase< BasicBlock, Loop >::begin(), llvm::LoopBase< N, M >::block_begin(), llvm::LoopBase< N, M >::block_end(), llvm::LoopInfoBase< BasicBlock, Loop >::changeLoopFor(), llvm::LoopBase< N, M >::empty(), llvm::LoopBase< N, M >::end(), llvm::LoopInfoBase< BasicBlock, Loop >::end(), llvm::LoopInfoBase< BasicBlock, Loop >::getLoopFor(), llvm::LoopBase< N, M >::getParentLoop(), I, llvm::LoopBase< N, M >::removeChildLoop(), and llvm::LoopInfoBase< BasicBlock, Loop >::removeLoop().
Referenced by llvm::LPPassManager::deleteLoopFromQueue().
|
friend |
Definition at line 639 of file LoopInfo.h.
1.8.6