Lines Matching refs:BasicBlock

141             std::vector<BasicBlock *> *NewBBs);
163 std::vector<BasicBlock *> NewBBs;
192 std::vector<BasicBlock *> *NewBBs) {
195 BasicBlock *StartBlock = SI->getParent();
203 BasicBlock *EndBlock = StartBlock->getUniqueSuccessor();
205 BasicBlock *NewBlock = BasicBlock::Create(
240 for (BasicBlock *Pred : predecessors(EndBlock)) {
262 BasicBlock *EndBlock = SIUse->getParent();
263 BasicBlock *NewBlockT = BasicBlock::Create(
266 BasicBlock *NewBlockF = BasicBlock::Create(
338 for (BasicBlock *NewBB : *NewBBs)
348 BasicBlock *BB;
352 typedef std::deque<BasicBlock *> PathType;
354 typedef SmallPtrSet<const BasicBlock *, 8> VisitedBlocks;
360 typedef DenseMap<BasicBlock *, CloneList> DuplicateBlockMap;
368 for (const BasicBlock *BB : Path) {
394 const BasicBlock *getDeterminatorBB() const { return DBB; }
395 void setDeterminator(const BasicBlock *BB) { DBB = BB; }
400 void push_back(BasicBlock *BB) { Path.push_back(BB); }
401 void push_front(BasicBlock *BB) { Path.push_front(BB); }
413 const BasicBlock *DBB = nullptr;
450 std::deque<std::pair<Value *, BasicBlock *>> Q;
468 BasicBlock *CurrentIncomingBB = Q.front().second;
472 for (BasicBlock *IncomingBB : Phi->blocks()) {
513 void addToQueue(Value *Val, BasicBlock *BB,
514 std::deque<std::pair<Value *, BasicBlock *>> &Q,
529 BasicBlock *SIBB = SI->getParent();
568 BasicBlock *getSwitchBlock() { return SwitchBlock; }
612 typedef DenseMap<const BasicBlock *, const PHINode *> StateDefMap;
691 PathsType paths(BasicBlock *BB, BasicBlock *ToBB, VisitedBlocks &Visited,
717 SmallSet<BasicBlock *, 4> Successors;
718 for (BasicBlock *Succ : successors(BB)) {
774 for (BasicBlock *IncomingBB : CurPhi->blocks()) {
792 BasicBlock *SwitchBlock;
834 const BasicBlock *Determinator = TPath.getDeterminatorBB();
837 BasicBlock *BB = SwitchPaths->getSwitchBlock();
838 BasicBlock *VisitedBB = getClonedBB(BB, NextState, DuplicateMap);
947 BasicBlock *SwitchBlock = SwitchPaths->getSwitchBlock();
959 SmallSet<BasicBlock *, 16> BlocksToClean;
960 for (BasicBlock *BB : successors(SwitchBlock))
977 for (BasicBlock *BB : BlocksToClean)
989 SmallSet<BasicBlock *, 16> &BlocksToClean,
992 const BasicBlock *Determinator = Path.getDeterminatorBB();
1002 BasicBlock *PrevBB = PathBBs.size() == 1 ? *DetIt : *std::prev(DetIt);
1004 BasicBlock *BB = *BBIt;
1009 BasicBlock *NextBB = getClonedBB(BB, NextState, DuplicateMap);
1017 BasicBlock *NewBB = cloneBlockAndUpdatePredecessor(
1037 BasicBlock *BB = I->getParent();
1083 BasicBlock *cloneBlockAndUpdatePredecessor(BasicBlock *BB, BasicBlock *PrevBB,
1089 BasicBlock *NewBB = CloneBasicBlock(
1112 SmallPtrSet<BasicBlock *, 4> SuccSet;
1125 void updateSuccessorPhis(BasicBlock *BB, BasicBlock *ClonedBB,
1128 std::vector<BasicBlock *> BlocksToUpdate;
1134 BasicBlock *NextCase = getNextCaseSuccessor(Switch, NextState);
1136 BasicBlock *ClonedSucc = getClonedBB(NextCase, NextState, DuplicateMap);
1142 for (BasicBlock *Succ : successors(BB)) {
1148 BasicBlock *ClonedSucc = getClonedBB(Succ, NextState, DuplicateMap);
1157 for (BasicBlock *Succ : BlocksToUpdate) {
1178 void updatePredecessor(BasicBlock *PrevBB, BasicBlock *OldBB,
1179 BasicBlock *NewBB, DomTreeUpdater *DTU) {
1237 BasicBlock *BB = TPath.getPath().back();
1238 BasicBlock *LastBlock = getClonedBB(BB, NextState, DuplicateMap);
1245 BasicBlock *NextCase = getNextCaseSuccessor(Switch, NextState);
1248 SmallPtrSet<BasicBlock *, 4> SuccSet;
1249 for (BasicBlock *Succ : successors(LastBlock)) {
1262 void cleanPhiNodes(BasicBlock *BB) {
1278 std::vector<BasicBlock *> BlocksToRemove;
1279 for (BasicBlock *IncomingBB : Phi->blocks()) {
1283 for (BasicBlock *BB : BlocksToRemove)
1290 BasicBlock *getClonedBB(BasicBlock *BB, const APInt &NextState,
1304 BasicBlock *getNextCaseSuccessor(SwitchInst *Switch, const APInt &NextState) {
1305 BasicBlock *NextCase = nullptr;
1318 bool isPredecessor(BasicBlock *BB, BasicBlock *IncomingBB) {
1346 for (BasicBlock &BB : F) {