Lines Matching full:ibr
112 if (auto *IBr = dyn_cast<IndirectBrInst>(BB.getTerminator())) {
115 if (IBr->getNumSuccessors() == 0) {
116 (void)new UnreachableInst(F.getContext(), IBr->getIterator());
117 IBr->eraseFromParent();
121 IndirectBrs.push_back(IBr);
122 for (BasicBlock *SuccBB : IBr->successors())
181 for (auto *IBr : IndirectBrs) {
183 for (BasicBlock *SuccBB : IBr->successors())
184 Updates.push_back({DominatorTree::Delete, IBr->getParent(), SuccBB});
186 (void)new UnreachableInst(F.getContext(), IBr->getIterator());
187 IBr->eraseFromParent();
202 for (auto *IBr : IndirectBrs) {
204 cast<IntegerType>(DL.getIntPtrType(IBr->getAddress()->getType()));
209 auto GetSwitchValue = [CommonITy](IndirectBrInst *IBr) {
210 return CastInst::CreatePointerCast(IBr->getAddress(), CommonITy,
211 Twine(IBr->getAddress()->getName()) +
213 IBr->getIterator());
221 IndirectBrInst *IBr = IndirectBrs[0];
222 SwitchBB = IBr->getParent();
223 SwitchValue = GetSwitchValue(IBr);
226 for (BasicBlock *SuccBB : IBr->successors())
227 Updates.push_back({DominatorTree::Delete, IBr->getParent(), SuccBB});
231 IBr->eraseFromParent();
245 for (auto *IBr : IndirectBrs) {
246 SwitchPN->addIncoming(GetSwitchValue(IBr), IBr->getParent());
247 BranchInst::Create(SwitchBB, IBr->getIterator());
249 Updates.push_back({DominatorTree::Insert, IBr->getParent(), SwitchBB});
250 for (BasicBlock *SuccBB : IBr->successors())
251 Updates.push_back({DominatorTree::Delete, IBr->getParent(), SuccBB});
253 IBr->eraseFromParent();