• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/llvmCore-3425.0.34/include/llvm/Analysis/

Lines Matching refs:BlockT

30 template<class BlockT, class LoopT>
31 void LoopBase<BlockT, LoopT>::
32 getExitingBlocks(SmallVectorImpl<BlockT *> &ExitingBlocks) const {
35 SmallVector<BlockT*, 128> LoopBBs(block_begin(), block_end());
38 typedef GraphTraits<BlockT*> BlockTraits;
52 template<class BlockT, class LoopT>
53 BlockT *LoopBase<BlockT, LoopT>::getExitingBlock() const {
54 SmallVector<BlockT*, 8> ExitingBlocks;
64 template<class BlockT, class LoopT>
65 void LoopBase<BlockT, LoopT>::
66 getExitBlocks(SmallVectorImpl<BlockT*> &ExitBlocks) const {
69 SmallVector<BlockT*, 128> LoopBBs(block_begin(), block_end());
72 typedef GraphTraits<BlockT*> BlockTraits;
84 template<class BlockT, class LoopT>
85 BlockT *LoopBase<BlockT, LoopT>::getExitBlock() const {
86 SmallVector<BlockT*, 8> ExitBlocks;
94 template<class BlockT, class LoopT>
95 void LoopBase<BlockT, LoopT>::
99 SmallVector<BlockT*, 128> LoopBBs(block_begin(), block_end());
102 typedef GraphTraits<BlockT*> BlockTraits;
119 template<class BlockT, class LoopT>
120 BlockT *LoopBase<BlockT, LoopT>::getLoopPreheader() const {
122 BlockT *Out = getLoopPredecessor();
126 typedef GraphTraits<BlockT*> BlockTraits;
141 template<class BlockT, class LoopT>
142 BlockT *LoopBase<BlockT, LoopT>::getLoopPredecessor() const {
144 BlockT *Out = 0;
147 BlockT *Header = getHeader();
148 typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits;
167 template<class BlockT, class LoopT>
168 BlockT *LoopBase<BlockT, LoopT>::getLoopLatch() const {
169 BlockT *Header = getHeader();
170 typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits;
175 BlockT *Latch = 0;
197 template<class BlockT, class LoopT>
198 void LoopBase<BlockT, LoopT>::
199 addBasicBlockToLoop(BlockT *NewBB, LoopInfoBase<BlockT, LoopT> &LIB) {
221 template<class BlockT, class LoopT>
222 void LoopBase<BlockT, LoopT>::
235 template<class BlockT, class LoopT>
236 void LoopBase<BlockT, LoopT>::verifyLoop() const {
241 SmallVector<BlockT*, 8> ExitBBs;
243 llvm::SmallPtrSet<BlockT*, 8> VisitSet;
245 df_ext_iterator<BlockT*, llvm::SmallPtrSet<BlockT*, 8> >
254 SmallVector<BlockT*, 128> LoopBBs(block_begin(), block_end());
259 BlockT *BB = *BI;
262 SmallVector<BlockT *, 2> OutsideLoopPreds;
264 typedef GraphTraits<BlockT*> BlockTraits;
272 typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits;
276 BlockT *N = *PI;
289 BlockT *EntryBB = BB->getParent()->begin();
290 for (df_iterator<BlockT *> NI = df_begin(EntryBB),
325 template<class BlockT, class LoopT>
326 void LoopBase<BlockT, LoopT>::verifyLoopNest(
336 template<class BlockT, class LoopT>
337 void LoopBase<BlockT, LoopT>::print(raw_ostream &OS, unsigned Depth) const {
343 BlockT *BB = getBlocks()[i];
363 template<class BlockT, class LoopT>
364 static void discoverAndMapSubloop(LoopT *L, ArrayRef<BlockT*> Backedges,
365 LoopInfoBase<BlockT, LoopT> *LI,
366 DominatorTreeBase<BlockT> &DomTree) {
367 typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits;
373 std::vector<BlockT *> ReverseCFGWorklist(Backedges.begin(), Backedges.end());
375 BlockT *PredBB = ReverseCFGWorklist.back();
425 template<class BlockT, class LoopT>
427 typedef GraphTraits<BlockT*> BlockTraits;
430 LoopInfoBase<BlockT, LoopT> *LI;
431 DenseSet<const BlockT *> VisitedBlocks;
432 std::vector<std::pair<BlockT*, SuccIterTy> > DFSStack;
435 PopulateLoopsDFS(LoopInfoBase<BlockT, LoopT> *li):
438 void traverse(BlockT *EntryBlock);
441 void insertIntoLoop(BlockT *Block);
443 BlockT *dfsSource() { return DFSStack.back().first; }
447 void pushBlock(BlockT *Block) {
454 template<class BlockT, class LoopT>
455 void PopulateLoopsDFS<BlockT, LoopT>::traverse(BlockT *EntryBlock) {
461 BlockT *BB = *dfsSucc();
478 template<class BlockT, class LoopT>
479 void PopulateLoopsDFS<BlockT, LoopT>::insertIntoLoop(BlockT *Block) {
516 template<class BlockT, class LoopT>
517 void LoopInfoBase<BlockT, LoopT>::
518 Analyze(DominatorTreeBase<BlockT> &DomTree) {
521 DomTreeNodeBase<BlockT>* DomRoot = DomTree.getRootNode();
522 for (po_iterator<DomTreeNodeBase<BlockT>*> DomIter = po_begin(DomRoot),
525 BlockT *Header = DomIter->getBlock();
526 SmallVector<BlockT *, 4> Backedges;
529 typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits;
534 BlockT *Backedge = *PI;
545 discoverAndMapSubloop(L, ArrayRef<BlockT*>(Backedges), this, DomTree);
550 PopulateLoopsDFS<BlockT, LoopT> DFS(this);
555 template<class BlockT, class LoopT>
556 void LoopInfoBase<BlockT, LoopT>::print(raw_ostream &OS) const {