Lines Matching refs:BB
55 bool llvm::ConstantFoldTerminator(BasicBlock *BB, bool DeleteDeadConditions) { in ConstantFoldTerminator() argument
56 TerminatorInst *T = BB->getTerminator(); in ConstantFoldTerminator()
77 OldDest->removePredecessor(BB); in ConstantFoldTerminator()
148 BasicBlock *BB = SI->getParent(); in ConstantFoldTerminator() local
157 Succ->removePredecessor(BB); in ConstantFoldTerminator()
209 BB->getTerminator()->eraseFromParent(); in ConstantFoldTerminator()
210 new UnreachableInst(BB->getContext(), BB); in ConstantFoldTerminator()
356 bool llvm::SimplifyInstructionsInBlock(BasicBlock *BB, const TargetData *TD) { in SimplifyInstructionsInBlock() argument
364 AssertingVH<Instruction> TerminatorVH(--BB->end()); in SimplifyInstructionsInBlock()
367 for (BasicBlock::iterator BI = BB->begin(), E = --BB->end(); BI != E; ) { in SimplifyInstructionsInBlock()
375 BI = BB->begin(); in SimplifyInstructionsInBlock()
381 BI = BB->begin(); in SimplifyInstructionsInBlock()
402 void llvm::RemovePredecessorAndSimplify(BasicBlock *BB, BasicBlock *Pred, in RemovePredecessorAndSimplify() argument
405 if (!isa<PHINode>(BB->begin())) in RemovePredecessorAndSimplify()
411 BB->removePredecessor(Pred, true); in RemovePredecessorAndSimplify()
413 WeakVH PhiIt = &BB->front(); in RemovePredecessorAndSimplify()
424 if (PhiIt != OldPhiIt) PhiIt = &BB->front(); in RemovePredecessorAndSimplify()
487 static bool CanPropagatePredecessorsForPHIs(BasicBlock *BB, BasicBlock *Succ) { in CanPropagatePredecessorsForPHIs() argument
488 assert(*succ_begin(BB) == Succ && "Succ is not successor of BB!"); in CanPropagatePredecessorsForPHIs()
490 DEBUG(dbgs() << "Looking to fold " << BB->getName() << " into " in CanPropagatePredecessorsForPHIs()
497 SmallPtrSet<BasicBlock*, 16> BBPreds(pred_begin(BB), pred_end(BB)); in CanPropagatePredecessorsForPHIs()
507 PHINode *BBPN = dyn_cast<PHINode>(PN->getIncomingValueForBlock(BB)); in CanPropagatePredecessorsForPHIs()
508 if (BBPN && BBPN->getParent() == BB) { in CanPropagatePredecessorsForPHIs()
521 Value* Val = PN->getIncomingValueForBlock(BB); in CanPropagatePredecessorsForPHIs()
545 bool llvm::TryToSimplifyUncondBranchFromEmptyBlock(BasicBlock *BB) { in TryToSimplifyUncondBranchFromEmptyBlock() argument
546 assert(BB != &BB->getParent()->getEntryBlock() && in TryToSimplifyUncondBranchFromEmptyBlock()
550 BasicBlock *Succ = cast<BranchInst>(BB->getTerminator())->getSuccessor(0); in TryToSimplifyUncondBranchFromEmptyBlock()
551 if (BB == Succ) return false; in TryToSimplifyUncondBranchFromEmptyBlock()
555 if (!CanPropagatePredecessorsForPHIs(BB, Succ)) return false; in TryToSimplifyUncondBranchFromEmptyBlock()
570 BasicBlock::iterator BBI = BB->begin(); in TryToSimplifyUncondBranchFromEmptyBlock()
575 if (PN->getIncomingBlock(UI) != BB) in TryToSimplifyUncondBranchFromEmptyBlock()
585 DEBUG(dbgs() << "Killing Trivial BB: \n" << *BB); in TryToSimplifyUncondBranchFromEmptyBlock()
591 const SmallVector<BasicBlock*, 16> BBPreds(pred_begin(BB), pred_end(BB)); in TryToSimplifyUncondBranchFromEmptyBlock()
596 Value *OldVal = PN->removeIncomingValue(BB, false); in TryToSimplifyUncondBranchFromEmptyBlock()
601 if (isa<PHINode>(OldVal) && cast<PHINode>(OldVal)->getParent() == BB) { in TryToSimplifyUncondBranchFromEmptyBlock()
624 BB->getTerminator()->eraseFromParent(); in TryToSimplifyUncondBranchFromEmptyBlock()
625 Succ->getInstList().splice(Succ->getFirstNonPHI(), BB->getInstList()); in TryToSimplifyUncondBranchFromEmptyBlock()
627 while (PHINode *PN = dyn_cast<PHINode>(&BB->front())) { in TryToSimplifyUncondBranchFromEmptyBlock()
635 BB->replaceAllUsesWith(Succ); in TryToSimplifyUncondBranchFromEmptyBlock()
636 if (!Succ->hasName()) Succ->takeName(BB); in TryToSimplifyUncondBranchFromEmptyBlock()
637 BB->eraseFromParent(); // Delete the old basic block. in TryToSimplifyUncondBranchFromEmptyBlock()
646 bool llvm::EliminateDuplicatePHINodes(BasicBlock *BB) { in EliminateDuplicatePHINodes() argument
662 for (BasicBlock::iterator I = BB->begin(); in EliminateDuplicatePHINodes()