Lines Matching refs:BasicBlock

133             std::vector<BasicBlock *> *NewBBs);
156 std::vector<BasicBlock *> NewBBs; in unfoldSelectInstrs()
221 BasicBlock *EndBlock, StringRef NewBBName, BasicBlock **NewBlock, in createBasicBlockAndSinkSelectInst()
223 std::vector<BasicBlock *> *NewBBs) { in createBasicBlockAndSinkSelectInst()
227 *NewBlock = BasicBlock::Create(SI->getContext(), NewBBName, in createBasicBlockAndSinkSelectInst()
245 std::vector<BasicBlock *> *NewBBs) { in unfold()
248 BasicBlock *StartBlock = SI->getParent(); in unfold()
249 BasicBlock *EndBlock = SIUse->getParent(); in unfold()
258 BasicBlock *TrueBlock = nullptr; in unfold()
259 BasicBlock *FalseBlock = nullptr; in unfold()
278 FalseBlock = BasicBlock::Create(SI->getContext(), "si.unfold.false", in unfold()
290 BasicBlock *TT = EndBlock; in unfold()
291 BasicBlock *FT = EndBlock; in unfold()
310 BasicBlock *NewBlock = nullptr; in unfold()
350 BasicBlock *BB;
354 typedef std::deque<BasicBlock *> PathType;
356 typedef SmallPtrSet<const BasicBlock *, 8> VisitedBlocks;
362 typedef DenseMap<BasicBlock *, CloneList> DuplicateBlockMap;
370 for (const BasicBlock *BB : Path) { in operator <<()
396 const BasicBlock *getDeterminatorBB() const { return DBB; } in getDeterminatorBB()
397 void setDeterminator(const BasicBlock *BB) { DBB = BB; } in setDeterminator()
410 const BasicBlock *DBB = nullptr;
507 BasicBlock *SIBB = SI->getParent(); in isValidSelectInst()
543 BasicBlock *getSwitchBlock() { return SwitchBlock; } in getSwitchBlock()
562 const BasicBlock *PrevBB = Path.back(); in run()
563 for (const BasicBlock *BB : Path) { in run()
591 typedef DenseMap<const BasicBlock *, const PHINode *> StateDefMap;
593 PathsType paths(BasicBlock *BB, VisitedBlocks &Visited, in paths()
612 SmallSet<BasicBlock *, 4> Successors; in paths()
613 for (BasicBlock *Succ : successors(BB)) { in paths()
652 SmallPtrSet<BasicBlock *, 16> LoopBBs; in getStateDefMap()
654 for (BasicBlock *BB : Path) in getStateDefMap()
672 for (BasicBlock *IncomingBB : CurPhi->blocks()) { in getStateDefMap()
715 const BasicBlock *SwitchCondDefBB = SwitchCondI->getParent(); in isSupported()
716 const BasicBlock *SwitchCondUseBB = Switch->getParent(); in isSupported()
717 const BasicBlock *DeterminatorBB = TPath.getDeterminatorBB(); in isSupported()
733 for (BasicBlock *BB : Path) { in isSupported()
748 BasicBlock *SwitchBlock;
784 const BasicBlock *Determinator = TPath.getDeterminatorBB(); in isLegalAndProfitableToTransform()
787 BasicBlock *BB = SwitchPaths->getSwitchBlock(); in isLegalAndProfitableToTransform()
788 BasicBlock *VisitedBB = getClonedBB(BB, NextState, DuplicateMap); in isLegalAndProfitableToTransform()
894 BasicBlock *SwitchBlock = SwitchPaths->getSwitchBlock(); in createAllExitPaths()
906 SmallSet<BasicBlock *, 16> BlocksToClean; in createAllExitPaths()
907 for (BasicBlock *BB : successors(SwitchBlock)) in createAllExitPaths()
924 for (BasicBlock *BB : BlocksToClean) in createAllExitPaths()
936 SmallSet<BasicBlock *, 16> &BlocksToClean, in createExitPath()
939 const BasicBlock *Determinator = Path.getDeterminatorBB(); in createExitPath()
948 BasicBlock *PrevBB = *Prev; in createExitPath()
950 BasicBlock *BB = *BBIt; in createExitPath()
955 BasicBlock *NextBB = getClonedBB(BB, NextState, DuplicateMap); in createExitPath()
963 BasicBlock *NewBB = cloneBlockAndUpdatePredecessor( in createExitPath()
983 BasicBlock *BB = I->getParent(); in updateSSA()
1029 BasicBlock *cloneBlockAndUpdatePredecessor(BasicBlock *BB, BasicBlock *PrevBB, in cloneBlockAndUpdatePredecessor()
1035 BasicBlock *NewBB = CloneBasicBlock( in cloneBlockAndUpdatePredecessor()
1057 SmallPtrSet<BasicBlock *, 4> SuccSet; in cloneBlockAndUpdatePredecessor()
1070 void updateSuccessorPhis(BasicBlock *BB, BasicBlock *ClonedBB, in updateSuccessorPhis()
1073 std::vector<BasicBlock *> BlocksToUpdate; in updateSuccessorPhis()
1079 BasicBlock *NextCase = getNextCaseSuccessor(Switch, NextState); in updateSuccessorPhis()
1081 BasicBlock *ClonedSucc = getClonedBB(NextCase, NextState, DuplicateMap); in updateSuccessorPhis()
1087 for (BasicBlock *Succ : successors(BB)) { in updateSuccessorPhis()
1093 BasicBlock *ClonedSucc = getClonedBB(Succ, NextState, DuplicateMap); in updateSuccessorPhis()
1102 for (BasicBlock *Succ : BlocksToUpdate) { in updateSuccessorPhis()
1123 void updatePredecessor(BasicBlock *PrevBB, BasicBlock *OldBB, in updatePredecessor()
1124 BasicBlock *NewBB, DomTreeUpdater *DTU) { in updatePredecessor()
1182 BasicBlock *BB = TPath.getPath().back(); in updateLastSuccessor()
1183 BasicBlock *LastBlock = getClonedBB(BB, NextState, DuplicateMap); in updateLastSuccessor()
1190 BasicBlock *NextCase = getNextCaseSuccessor(Switch, NextState); in updateLastSuccessor()
1193 SmallPtrSet<BasicBlock *, 4> SuccSet; in updateLastSuccessor()
1194 for (BasicBlock *Succ : successors(LastBlock)) { in updateLastSuccessor()
1207 void cleanPhiNodes(BasicBlock *BB) { in cleanPhiNodes()
1223 std::vector<BasicBlock *> BlocksToRemove; in cleanPhiNodes()
1224 for (BasicBlock *IncomingBB : Phi->blocks()) { in cleanPhiNodes()
1228 for (BasicBlock *BB : BlocksToRemove) in cleanPhiNodes()
1235 BasicBlock *getClonedBB(BasicBlock *BB, uint64_t NextState, in getClonedBB()
1249 BasicBlock *getNextCaseSuccessor(SwitchInst *Switch, uint64_t NextState) { in getNextCaseSuccessor()
1250 BasicBlock *NextCase = nullptr; in getNextCaseSuccessor()
1263 bool isPredecessor(BasicBlock *BB, BasicBlock *IncomingBB) { in isPredecessor()
1290 for (BasicBlock &BB : F) { in run()