reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/Utils/SimplifyCFG.cpp
 2676     if (!PBI || PBI->isUnconditional() ||
 2676     if (!PBI || PBI->isUnconditional() ||
 2677         (BI->isConditional() && !SafeToMergeTerminators(BI, PBI)) ||
 2679          !isProfitableToFoldUnconditional(BI, PBI, Cond, PHIs)))
 2687       if (PBI->getSuccessor(0) == TrueDest) {
 2689       } else if (PBI->getSuccessor(1) == FalseDest) {
 2691       } else if (PBI->getSuccessor(0) == FalseDest) {
 2694       } else if (PBI->getSuccessor(1) == TrueDest) {
 2701       if (PBI->getSuccessor(0) != TrueDest && PBI->getSuccessor(1) != TrueDest)
 2701       if (PBI->getSuccessor(0) != TrueDest && PBI->getSuccessor(1) != TrueDest)
 2705     LLVM_DEBUG(dbgs() << "FOLDING BRANCH TO COMMON DEST:\n" << *PBI << *BB);
 2706     IRBuilder<> Builder(PBI);
 2710       Value *NewCond = PBI->getCondition();
 2717             Builder.CreateNot(NewCond, PBI->getCondition()->getName() + ".not");
 2720       PBI->setCondition(NewCond);
 2721       PBI->swapSuccessors();
 2746       PredBlock->getInstList().insert(PBI->getIterator(), NewBonusInst);
 2756     PredBlock->getInstList().insert(PBI->getIterator(), CondInPred);
 2762           Builder.CreateBinOp(Opc, PBI->getCondition(), CondInPred, "or.cond"));
 2763       PBI->setCondition(NewCond);
 2767           extractPredSuccWeights(PBI, BI, PredTrueWeight, PredFalseWeight,
 2771       if (PBI->getSuccessor(0) == BB) {
 2786         PBI->setSuccessor(0, TrueDest);
 2788       if (PBI->getSuccessor(1) == BB) {
 2801         PBI->setSuccessor(1, FalseDest);
 2809         setBranchWeights(PBI, MDWeights[0], MDWeights[1]);
 2811         PBI->setMetadata(LLVMContext::MD_prof, nullptr);
 2816             PHIs[i]->getIncomingValueForBlock(PBI->getParent()));
 2819         if (PBI->getSuccessor(0) == TrueDest) {
 2824               Builder.CreateNot(PBI->getCondition(), "not.cond"));
 2830                 Instruction::Or, PBI->getCondition(), MergedCond, "or.cond"));
 2836               Instruction::And, PBI->getCondition(), CondInPred, "and.cond"));
 2839                 Builder.CreateNot(PBI->getCondition(), "not.cond"));
 2845 	PHIs[i]->setIncomingValueForBlock(PBI->getParent(), MergedCond);
 2851         MSSAU->changeCondBranchToUnconditionalTo(PBI, TrueDest);
 2854       BranchInst *New_PBI = BranchInst::Create(TrueDest, PBI);
 2855       EraseTerminatorAndDCECond(PBI, MSSAU);
 2856       PBI = New_PBI;
 2862       PBI->setMetadata(LLVMContext::MD_loop, LoopMD);
 2870         I.clone()->insertBefore(PBI);