Lines Matching refs:BasicBlock
17 #include "llvm/IR/BasicBlock.h"
40 bool FlattenParallelAndOr(BasicBlock *BB, IRBuilder<> &Builder);
45 bool MergeIfRegion(BasicBlock *BB, IRBuilder<> &Builder);
52 bool CompareIfRegionBlock(BasicBlock *Block1, BasicBlock *Block2,
53 BasicBlock *Head2);
58 bool run(BasicBlock *BB);
136 bool FlattenCFGOpt::FlattenParallelAndOr(BasicBlock *BB, IRBuilder<> &Builder) {
141 BasicBlock *LastCondBlock = nullptr;
142 BasicBlock *FirstCondBlock = nullptr;
143 BasicBlock *UnCondBlock = nullptr;
147 SmallPtrSet<BasicBlock *, 16> Preds(pred_begin(BB), pred_end(BB));
148 for (BasicBlock *Pred : Preds) {
155 BasicBlock *PP = Pred->getSinglePredecessor();
188 for (BasicBlock::iterator BI = Pred->begin(), BE = PBI->getIterator();
204 BasicBlock *PS1 = PBI->getSuccessor(0);
205 BasicBlock *PS2 = PBI->getSuccessor(1);
206 BasicBlock *PS = (PS1 == BB) ? PS2 : PS1;
233 BasicBlock *PS1 = TBB->getSuccessor(0);
234 BasicBlock *PS2 = TBB->getSuccessor(1);
248 BasicBlock *CurrBlock = LastCondBlock;
278 BasicBlock *CB;
320 bool FlattenCFGOpt::CompareIfRegionBlock(BasicBlock *Block1, BasicBlock *Block2,
321 BasicBlock *Head2) {
327 BasicBlock::iterator iter1 = Block1->begin();
328 BasicBlock::iterator end1 = Block1->getTerminator()->getIterator();
329 BasicBlock::iterator iter2 = Block2->begin();
330 BasicBlock::iterator end2 = Block2->getTerminator()->getIterator();
357 for (BasicBlock::iterator BI(PBI2), BE(PTI2); BI != BE; ++BI) {
409 bool FlattenCFGOpt::MergeIfRegion(BasicBlock *BB, IRBuilder<> &Builder) {
414 BasicBlock *IfTrue2, *IfFalse2;
422 BasicBlock *SecondEntryBlock = CInst2->getParent();
426 BasicBlock *IfTrue1, *IfFalse1;
434 BasicBlock *FirstEntryBlock = CInst1->getParent();
478 for (BasicBlock::iterator BI(PBI2), BE(PTI2); BI != BE; ++BI) {
490 BasicBlock *SaveInsertBB = Builder.GetInsertBlock();
491 BasicBlock::iterator SaveInsertPt = Builder.GetInsertPoint();
519 bool FlattenCFGOpt::run(BasicBlock *BB) {
533 bool llvm::FlattenCFG(BasicBlock *BB, AAResults *AA) {