Lines Matching refs:BB
112 bool CanMergeBlocks(const BasicBlock *BB, const BasicBlock *DestBB) const;
113 void EliminateMostlyEmptyBlock(BasicBlock *BB);
114 bool OptimizeBlock(BasicBlock &BB);
158 BasicBlock *BB = I++; in runOnFunction() local
159 MadeChange |= OptimizeBlock(*BB); in runOnFunction()
169 for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB) { in runOnFunction() local
170 SmallVector<BasicBlock*, 2> Successors(succ_begin(BB), succ_end(BB)); in runOnFunction()
171 MadeChange |= ConstantFoldTerminator(BB, true); in runOnFunction()
205 BasicBlock *BB = I++; in EliminateMostlyEmptyBlocks() local
208 BranchInst *BI = dyn_cast<BranchInst>(BB->getTerminator()); in EliminateMostlyEmptyBlocks()
215 if (BBI != BB->begin()) { in EliminateMostlyEmptyBlocks()
218 if (BBI == BB->begin()) in EliminateMostlyEmptyBlocks()
228 if (DestBB == BB) in EliminateMostlyEmptyBlocks()
231 if (!CanMergeBlocks(BB, DestBB)) in EliminateMostlyEmptyBlocks()
234 EliminateMostlyEmptyBlock(BB); in EliminateMostlyEmptyBlocks()
243 bool CodeGenPrepare::CanMergeBlocks(const BasicBlock *BB, in CanMergeBlocks() argument
248 BasicBlock::const_iterator BBI = BB->begin(); in CanMergeBlocks()
262 if (Insn && Insn->getParent() == BB && in CanMergeBlocks()
278 if (const PHINode *BBPN = dyn_cast<PHINode>(BB->begin())) { in CanMergeBlocks()
283 BBPreds.insert(pred_begin(BB), pred_end(BB)); in CanMergeBlocks()
293 const Value *V2 = PN->getIncomingValueForBlock(BB); in CanMergeBlocks()
297 if (V2PN->getParent() == BB) in CanMergeBlocks()
312 void CodeGenPrepare::EliminateMostlyEmptyBlock(BasicBlock *BB) { in EliminateMostlyEmptyBlock() argument
313 BranchInst *BI = cast<BranchInst>(BB->getTerminator()); in EliminateMostlyEmptyBlock()
316 DEBUG(dbgs() << "MERGING MOSTLY EMPTY BLOCKS - BEFORE:\n" << *BB << *DestBB); in EliminateMostlyEmptyBlock()
327 if (isEntry && BB != &BB->getParent()->getEntryBlock()) in EliminateMostlyEmptyBlock()
328 BB->moveBefore(&BB->getParent()->getEntryBlock()); in EliminateMostlyEmptyBlock()
341 Value *InVal = PN->removeIncomingValue(BB, false); in EliminateMostlyEmptyBlock()
346 if (InValPhi && InValPhi->getParent() == BB) { in EliminateMostlyEmptyBlock()
354 if (PHINode *BBPN = dyn_cast<PHINode>(BB->begin())) { in EliminateMostlyEmptyBlock()
358 for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI) in EliminateMostlyEmptyBlock()
366 BB->replaceAllUsesWith(DestBB); in EliminateMostlyEmptyBlock()
368 BasicBlock *BBIDom = DT->getNode(BB)->getIDom()->getBlock(); in EliminateMostlyEmptyBlock()
372 DT->eraseNode(BB); in EliminateMostlyEmptyBlock()
375 PFI->replaceAllUses(BB, DestBB); in EliminateMostlyEmptyBlock()
376 PFI->removeEdge(ProfileInfo::getEdge(BB, DestBB)); in EliminateMostlyEmptyBlock()
378 BB->eraseFromParent(); in EliminateMostlyEmptyBlock()
539 BasicBlock *BB = CI->getParent(); in OptimizeCallInst() local
547 CurInstIterator = BB->begin(); in OptimizeCallInst()
576 CurInstIterator = BB->begin(); in OptimizeCallInst()
643 BasicBlock *BB = RI->getParent(); in DupRetToEnableTailCallOpts() local
644 if (PN && PN->getParent() != BB) in DupRetToEnableTailCallOpts()
649 const Function *F = BB->getParent(); in DupRetToEnableTailCallOpts()
657 BasicBlock::iterator BI = BB->begin(); in DupRetToEnableTailCallOpts()
662 BasicBlock::iterator BI = BB->begin(); in DupRetToEnableTailCallOpts()
681 for (pred_iterator PI = pred_begin(BB), PE = pred_end(BB); PI != PE; ++PI) { in DupRetToEnableTailCallOpts()
713 if (!BI || !BI->isUnconditional() || BI->getSuccessor(0) != BB) in DupRetToEnableTailCallOpts()
717 (void)FoldReturnIntoUncondBranch(RI, BB, CallBB); in DupRetToEnableTailCallOpts()
723 if (Changed && pred_begin(BB) == pred_end(BB)) in DupRetToEnableTailCallOpts()
724 BB->eraseFromParent(); in DupRetToEnableTailCallOpts()
735 static bool IsNonLocalValue(Value *V, BasicBlock *BB) { in IsNonLocalValue() argument
737 return I->getParent() != BB; in IsNonLocalValue()
935 BasicBlock *BB = CurInstIterator->getParent(); in OptimizeMemoryInst() local
942 CurInstIterator = BB->begin(); in OptimizeMemoryInst()
1170 bool CodeGenPrepare::OptimizeBlock(BasicBlock &BB) { in OptimizeBlock() argument
1174 CurInstIterator = BB.begin(); in OptimizeBlock()
1175 for (BasicBlock::iterator E = BB.end(); CurInstIterator != E; ) in OptimizeBlock()