Lines Matching refs:BB
36 void llvm::DeleteDeadBlock(BasicBlock *BB) { in DeleteDeadBlock() argument
37 assert((pred_begin(BB) == pred_end(BB) || in DeleteDeadBlock()
39 BB->getSinglePredecessor() == BB) && "Block is not dead!"); in DeleteDeadBlock()
40 TerminatorInst *BBTerm = BB->getTerminator(); in DeleteDeadBlock()
45 BBTerm->getSuccessor(i)->removePredecessor(BB); in DeleteDeadBlock()
48 while (!BB->empty()) { in DeleteDeadBlock()
49 Instruction &I = BB->back(); in DeleteDeadBlock()
57 BB->getInstList().pop_back(); in DeleteDeadBlock()
61 BB->eraseFromParent(); in DeleteDeadBlock()
68 void llvm::FoldSingleEntryPHINodes(BasicBlock *BB, Pass *P) { in FoldSingleEntryPHINodes() argument
69 if (!isa<PHINode>(BB->begin())) return; in FoldSingleEntryPHINodes()
78 while (PHINode *PN = dyn_cast<PHINode>(BB->begin())) { in FoldSingleEntryPHINodes()
98 bool llvm::DeleteDeadPHIs(BasicBlock *BB, const TargetLibraryInfo *TLI) { in DeleteDeadPHIs() argument
102 for (BasicBlock::iterator I = BB->begin(); in DeleteDeadPHIs()
116 bool llvm::MergeBlockIntoPredecessor(BasicBlock *BB, Pass *P) { in MergeBlockIntoPredecessor() argument
118 if (BB->hasAddressTaken()) return false; in MergeBlockIntoPredecessor()
121 BasicBlock *PredBB = BB->getUniquePredecessor(); in MergeBlockIntoPredecessor()
125 if (PredBB == BB) return false; in MergeBlockIntoPredecessor()
130 BasicBlock *OnlySucc = BB; in MergeBlockIntoPredecessor()
141 for (BasicBlock::iterator BI = BB->begin(), BE = BB->end(); BI != BE; ++BI) { in MergeBlockIntoPredecessor()
151 if (isa<PHINode>(BB->front())) in MergeBlockIntoPredecessor()
152 FoldSingleEntryPHINodes(BB, P); in MergeBlockIntoPredecessor()
159 BB->replaceAllUsesWith(PredBB); in MergeBlockIntoPredecessor()
162 PredBB->getInstList().splice(PredBB->end(), BB->getInstList()); in MergeBlockIntoPredecessor()
166 PredBB->takeName(BB); in MergeBlockIntoPredecessor()
171 if (DomTreeNode *DTN = DT->getNode(BB)) { in MergeBlockIntoPredecessor()
178 DT->eraseNode(BB); in MergeBlockIntoPredecessor()
182 LI->removeBlock(BB); in MergeBlockIntoPredecessor()
190 BB->eraseFromParent(); in MergeBlockIntoPredecessor()
241 BasicBlock *llvm::SplitEdge(BasicBlock *BB, BasicBlock *Succ, Pass *P) { in SplitEdge() argument
242 unsigned SuccNum = GetSuccessorNumber(BB, Succ); in SplitEdge()
245 TerminatorInst *LatchTerm = BB->getTerminator(); in SplitEdge()
254 assert(SP == BB && "CFG broken"); in SplitEdge()
261 assert(BB->getTerminator()->getNumSuccessors() == 1 && in SplitEdge()
263 return SplitBlock(BB, BB->getTerminator(), P); in SplitEdge()
442 BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB, in SplitBlockPredecessors() argument
446 BasicBlock *NewBB = BasicBlock::Create(BB->getContext(), BB->getName()+Suffix, in SplitBlockPredecessors()
447 BB->getParent(), BB); in SplitBlockPredecessors()
450 BranchInst *BI = BranchInst::Create(BB, NewBB); in SplitBlockPredecessors()
459 Preds[i]->getTerminator()->replaceUsesOfWith(BB, NewBB); in SplitBlockPredecessors()
468 for (BasicBlock::iterator I = BB->begin(); isa<PHINode>(I); ++I) in SplitBlockPredecessors()
475 UpdateAnalysisInformation(BB, NewBB, Preds, P, HasLoopExit); in SplitBlockPredecessors()
478 UpdatePHINodes(BB, NewBB, Preds, BI, P, HasLoopExit); in SplitBlockPredecessors()
594 ReturnInst *llvm::FoldReturnIntoUncondBranch(ReturnInst *RI, BasicBlock *BB, in FoldReturnIntoUncondBranch() argument
616 if (PN->getParent() == BB) { in FoldReturnIntoUncondBranch()
627 BB->removePredecessor(Pred); in FoldReturnIntoUncondBranch()
681 Value *llvm::GetIfCondition(BasicBlock *BB, BasicBlock *&IfTrue, in GetIfCondition() argument
683 PHINode *SomePHI = dyn_cast<PHINode>(BB->begin()); in GetIfCondition()
693 pred_iterator PI = pred_begin(BB), PE = pred_end(BB); in GetIfCondition()
734 if (Pred1Br->getSuccessor(0) == BB && in GetIfCondition()
739 Pred1Br->getSuccessor(1) == BB) { in GetIfCondition()