Lines Matching refs:BasicBlock

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