diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Transforms/Utils/SimplifyCFG.cpp | 17 | 
1 files changed, 9 insertions, 8 deletions
| diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp index f0ed075cce6..62a635fa38e 100644 --- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp @@ -2713,16 +2713,16 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, unsigned BonusInstThreshold) {      // Clone Cond into the predecessor basic block, and or/and the      // two conditions together. -    Instruction *New = Cond->clone(); -    RemapInstruction(New, VMap, +    Instruction *CondInPred = Cond->clone(); +    RemapInstruction(CondInPred, VMap,                       RF_NoModuleLevelChanges | RF_IgnoreMissingLocals); -    PredBlock->getInstList().insert(PBI->getIterator(), New); -    New->takeName(Cond); -    Cond->setName(New->getName() + ".old"); +    PredBlock->getInstList().insert(PBI->getIterator(), CondInPred); +    CondInPred->takeName(Cond); +    Cond->setName(CondInPred->getName() + ".old");      if (BI->isConditional()) {        Instruction *NewCond = cast<Instruction>( -          Builder.CreateBinOp(Opc, PBI->getCondition(), New, "or.cond")); +          Builder.CreateBinOp(Opc, PBI->getCondition(), CondInPred, "or.cond"));        PBI->setCondition(NewCond);        uint64_t PredTrueWeight, PredFalseWeight, SuccTrueWeight, SuccFalseWeight; @@ -2786,7 +2786,8 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, unsigned BonusInstThreshold) {            Instruction *NotCond = cast<Instruction>(                Builder.CreateNot(PBI->getCondition(), "not.cond"));            MergedCond = cast<Instruction>( -              Builder.CreateBinOp(Instruction::And, NotCond, New, "and.cond")); +               Builder.CreateBinOp(Instruction::And, NotCond, CondInPred, +                                   "and.cond"));            if (PBI_C->isOne())              MergedCond = cast<Instruction>(Builder.CreateBinOp(                  Instruction::Or, PBI->getCondition(), MergedCond, "or.cond")); @@ -2795,7 +2796,7 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, unsigned BonusInstThreshold) {            // PBI_C is true: (PBI_Cond and BI_Value) or (!PBI_Cond)            //       is false: PBI_Cond and BI_Value            MergedCond = cast<Instruction>(Builder.CreateBinOp( -              Instruction::And, PBI->getCondition(), New, "and.cond")); +              Instruction::And, PBI->getCondition(), CondInPred, "and.cond"));            if (PBI_C->isOne()) {              Instruction *NotCond = cast<Instruction>(                  Builder.CreateNot(PBI->getCondition(), "not.cond")); | 

