Lines Matching refs:BasicBlock
136 std::vector<BasicBlock *> *NewBBs);
160 std::vector<BasicBlock *> NewBBs; in unfoldSelectInstrs()
183 BasicBlock *EndBlock, StringRef NewBBName, BasicBlock **NewBlock, in createBasicBlockAndSinkSelectInst()
185 std::vector<BasicBlock *> *NewBBs) { in createBasicBlockAndSinkSelectInst()
189 *NewBlock = BasicBlock::Create(SI->getContext(), NewBBName, in createBasicBlockAndSinkSelectInst()
207 std::vector<BasicBlock *> *NewBBs) { in unfold()
210 BasicBlock *StartBlock = SI->getParent(); in unfold()
211 BasicBlock *EndBlock = SIUse->getParent(); in unfold()
220 BasicBlock *TrueBlock = nullptr; in unfold()
221 BasicBlock *FalseBlock = nullptr; in unfold()
240 FalseBlock = BasicBlock::Create(SI->getContext(), "si.unfold.false", in unfold()
252 BasicBlock *TT = EndBlock; in unfold()
253 BasicBlock *FT = EndBlock; in unfold()
276 BasicBlock *NewBlock = nullptr; in unfold()
313 for (BasicBlock *NewBB : *NewBBs) in unfold()
323 BasicBlock *BB;
327 typedef std::deque<BasicBlock *> PathType;
329 typedef SmallPtrSet<const BasicBlock *, 8> VisitedBlocks;
335 typedef DenseMap<BasicBlock *, CloneList> DuplicateBlockMap;
343 for (const BasicBlock *BB : Path) { in operator <<()
369 const BasicBlock *getDeterminatorBB() const { return DBB; } in getDeterminatorBB()
370 void setDeterminator(const BasicBlock *BB) { DBB = BB; } in setDeterminator()
383 const BasicBlock *DBB = nullptr;
420 std::deque<std::pair<Value *, BasicBlock *>> Q; in isCandidate()
438 BasicBlock *CurrentIncomingBB = Q.front().second; in isCandidate()
442 for (BasicBlock *IncomingBB : Phi->blocks()) { in isCandidate()
483 void addToQueue(Value *Val, BasicBlock *BB, in addToQueue()
484 std::deque<std::pair<Value *, BasicBlock *>> &Q, in addToQueue()
501 BasicBlock *SIBB = SI->getParent(); in isValidSelectInst()
540 BasicBlock *getSwitchBlock() { return SwitchBlock; } in getSwitchBlock()
559 const BasicBlock *PrevBB = Path.back(); in run()
560 for (const BasicBlock *BB : Path) { in run()
588 typedef DenseMap<const BasicBlock *, const PHINode *> StateDefMap;
590 PathsType paths(BasicBlock *BB, VisitedBlocks &Visited, in paths()
615 SmallSet<BasicBlock *, 4> Successors; in paths()
616 for (BasicBlock *Succ : successors(BB)) { in paths()
655 SmallPtrSet<BasicBlock *, 16> LoopBBs; in getStateDefMap()
657 for (BasicBlock *BB : Path) in getStateDefMap()
675 for (BasicBlock *IncomingBB : CurPhi->blocks()) { in getStateDefMap()
718 const BasicBlock *SwitchCondDefBB = SwitchCondI->getParent(); in isSupported()
719 const BasicBlock *SwitchCondUseBB = Switch->getParent(); in isSupported()
720 const BasicBlock *DeterminatorBB = TPath.getDeterminatorBB(); in isSupported()
736 for (BasicBlock *BB : Path) { in isSupported()
751 BasicBlock *SwitchBlock;
792 const BasicBlock *Determinator = TPath.getDeterminatorBB(); in isLegalAndProfitableToTransform()
795 BasicBlock *BB = SwitchPaths->getSwitchBlock(); in isLegalAndProfitableToTransform()
796 BasicBlock *VisitedBB = getClonedBB(BB, NextState, DuplicateMap); in isLegalAndProfitableToTransform()
905 BasicBlock *SwitchBlock = SwitchPaths->getSwitchBlock(); in createAllExitPaths()
917 SmallSet<BasicBlock *, 16> BlocksToClean; in createAllExitPaths()
918 for (BasicBlock *BB : successors(SwitchBlock)) in createAllExitPaths()
935 for (BasicBlock *BB : BlocksToClean) in createAllExitPaths()
947 SmallSet<BasicBlock *, 16> &BlocksToClean, in createExitPath()
950 const BasicBlock *Determinator = Path.getDeterminatorBB(); in createExitPath()
960 BasicBlock *PrevBB = PathBBs.size() == 1 ? *DetIt : *std::prev(DetIt); in createExitPath()
962 BasicBlock *BB = *BBIt; in createExitPath()
967 BasicBlock *NextBB = getClonedBB(BB, NextState, DuplicateMap); in createExitPath()
975 BasicBlock *NewBB = cloneBlockAndUpdatePredecessor( in createExitPath()
995 BasicBlock *BB = I->getParent(); in updateSSA()
1041 BasicBlock *cloneBlockAndUpdatePredecessor(BasicBlock *BB, BasicBlock *PrevBB, in cloneBlockAndUpdatePredecessor()
1047 BasicBlock *NewBB = CloneBasicBlock( in cloneBlockAndUpdatePredecessor()
1070 SmallPtrSet<BasicBlock *, 4> SuccSet; in cloneBlockAndUpdatePredecessor()
1083 void updateSuccessorPhis(BasicBlock *BB, BasicBlock *ClonedBB, in updateSuccessorPhis()
1086 std::vector<BasicBlock *> BlocksToUpdate; in updateSuccessorPhis()
1092 BasicBlock *NextCase = getNextCaseSuccessor(Switch, NextState); in updateSuccessorPhis()
1094 BasicBlock *ClonedSucc = getClonedBB(NextCase, NextState, DuplicateMap); in updateSuccessorPhis()
1100 for (BasicBlock *Succ : successors(BB)) { in updateSuccessorPhis()
1106 BasicBlock *ClonedSucc = getClonedBB(Succ, NextState, DuplicateMap); in updateSuccessorPhis()
1115 for (BasicBlock *Succ : BlocksToUpdate) { in updateSuccessorPhis()
1136 void updatePredecessor(BasicBlock *PrevBB, BasicBlock *OldBB, in updatePredecessor()
1137 BasicBlock *NewBB, DomTreeUpdater *DTU) { in updatePredecessor()
1195 BasicBlock *BB = TPath.getPath().back(); in updateLastSuccessor()
1196 BasicBlock *LastBlock = getClonedBB(BB, NextState, DuplicateMap); in updateLastSuccessor()
1203 BasicBlock *NextCase = getNextCaseSuccessor(Switch, NextState); in updateLastSuccessor()
1206 SmallPtrSet<BasicBlock *, 4> SuccSet; in updateLastSuccessor()
1207 for (BasicBlock *Succ : successors(LastBlock)) { in updateLastSuccessor()
1220 void cleanPhiNodes(BasicBlock *BB) { in cleanPhiNodes()
1236 std::vector<BasicBlock *> BlocksToRemove; in cleanPhiNodes()
1237 for (BasicBlock *IncomingBB : Phi->blocks()) { in cleanPhiNodes()
1241 for (BasicBlock *BB : BlocksToRemove) in cleanPhiNodes()
1248 BasicBlock *getClonedBB(BasicBlock *BB, const APInt &NextState, in getClonedBB()
1262 BasicBlock *getNextCaseSuccessor(SwitchInst *Switch, const APInt &NextState) { in getNextCaseSuccessor()
1263 BasicBlock *NextCase = nullptr; in getNextCaseSuccessor()
1276 bool isPredecessor(BasicBlock *BB, BasicBlock *IncomingBB) { in isPredecessor()
1304 for (BasicBlock &BB : F) { in run()