Home | History | Annotate | Download | only in Utils
      1 //===-- Local.cpp - Functions to perform local transformations ------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This family of functions perform various local transformations to the
     11 // program.
     12 //
     13 //===----------------------------------------------------------------------===//
     14 
     15 #include "llvm/Transforms/Utils/Local.h"
     16 #include "llvm/Constants.h"
     17 #include "llvm/GlobalAlias.h"
     18 #include "llvm/GlobalVariable.h"
     19 #include "llvm/DerivedTypes.h"
     20 #include "llvm/Instructions.h"
     21 #include "llvm/Intrinsics.h"
     22 #include "llvm/IntrinsicInst.h"
     23 #include "llvm/Metadata.h"
     24 #include "llvm/Operator.h"
     25 #include "llvm/ADT/DenseMap.h"
     26 #include "llvm/ADT/SmallPtrSet.h"
     27 #include "llvm/Analysis/DebugInfo.h"
     28 #include "llvm/Analysis/DIBuilder.h"
     29 #include "llvm/Analysis/Dominators.h"
     30 #include "llvm/Analysis/InstructionSimplify.h"
     31 #include "llvm/Analysis/MemoryBuiltins.h"
     32 #include "llvm/Analysis/ProfileInfo.h"
     33 #include "llvm/Analysis/ValueTracking.h"
     34 #include "llvm/Target/TargetData.h"
     35 #include "llvm/Support/CFG.h"
     36 #include "llvm/Support/Debug.h"
     37 #include "llvm/Support/GetElementPtrTypeIterator.h"
     38 #include "llvm/Support/IRBuilder.h"
     39 #include "llvm/Support/MathExtras.h"
     40 #include "llvm/Support/ValueHandle.h"
     41 #include "llvm/Support/raw_ostream.h"
     42 using namespace llvm;
     43 
     44 //===----------------------------------------------------------------------===//
     45 //  Local constant propagation.
     46 //
     47 
     48 /// ConstantFoldTerminator - If a terminator instruction is predicated on a
     49 /// constant value, convert it into an unconditional branch to the constant
     50 /// destination.  This is a nontrivial operation because the successors of this
     51 /// basic block must have their PHI nodes updated.
     52 /// Also calls RecursivelyDeleteTriviallyDeadInstructions() on any branch/switch
     53 /// conditions and indirectbr addresses this might make dead if
     54 /// DeleteDeadConditions is true.
     55 bool llvm::ConstantFoldTerminator(BasicBlock *BB, bool DeleteDeadConditions) {
     56   TerminatorInst *T = BB->getTerminator();
     57   IRBuilder<> Builder(T);
     58 
     59   // Branch - See if we are conditional jumping on constant
     60   if (BranchInst *BI = dyn_cast<BranchInst>(T)) {
     61     if (BI->isUnconditional()) return false;  // Can't optimize uncond branch
     62     BasicBlock *Dest1 = BI->getSuccessor(0);
     63     BasicBlock *Dest2 = BI->getSuccessor(1);
     64 
     65     if (ConstantInt *Cond = dyn_cast<ConstantInt>(BI->getCondition())) {
     66       // Are we branching on constant?
     67       // YES.  Change to unconditional branch...
     68       BasicBlock *Destination = Cond->getZExtValue() ? Dest1 : Dest2;
     69       BasicBlock *OldDest     = Cond->getZExtValue() ? Dest2 : Dest1;
     70 
     71       //cerr << "Function: " << T->getParent()->getParent()
     72       //     << "\nRemoving branch from " << T->getParent()
     73       //     << "\n\nTo: " << OldDest << endl;
     74 
     75       // Let the basic block know that we are letting go of it.  Based on this,
     76       // it will adjust it's PHI nodes.
     77       OldDest->removePredecessor(BB);
     78 
     79       // Replace the conditional branch with an unconditional one.
     80       Builder.CreateBr(Destination);
     81       BI->eraseFromParent();
     82       return true;
     83     }
     84 
     85     if (Dest2 == Dest1) {       // Conditional branch to same location?
     86       // This branch matches something like this:
     87       //     br bool %cond, label %Dest, label %Dest
     88       // and changes it into:  br label %Dest
     89 
     90       // Let the basic block know that we are letting go of one copy of it.
     91       assert(BI->getParent() && "Terminator not inserted in block!");
     92       Dest1->removePredecessor(BI->getParent());
     93 
     94       // Replace the conditional branch with an unconditional one.
     95       Builder.CreateBr(Dest1);
     96       Value *Cond = BI->getCondition();
     97       BI->eraseFromParent();
     98       if (DeleteDeadConditions)
     99         RecursivelyDeleteTriviallyDeadInstructions(Cond);
    100       return true;
    101     }
    102     return false;
    103   }
    104 
    105   if (SwitchInst *SI = dyn_cast<SwitchInst>(T)) {
    106     // If we are switching on a constant, we can convert the switch into a
    107     // single branch instruction!
    108     ConstantInt *CI = dyn_cast<ConstantInt>(SI->getCondition());
    109     BasicBlock *TheOnlyDest = SI->getDefaultDest();
    110     BasicBlock *DefaultDest = TheOnlyDest;
    111 
    112     // Figure out which case it goes to.
    113     for (SwitchInst::CaseIt i = SI->case_begin(), e = SI->case_end();
    114          i != e; ++i) {
    115       // Found case matching a constant operand?
    116       if (i.getCaseValue() == CI) {
    117         TheOnlyDest = i.getCaseSuccessor();
    118         break;
    119       }
    120 
    121       // Check to see if this branch is going to the same place as the default
    122       // dest.  If so, eliminate it as an explicit compare.
    123       if (i.getCaseSuccessor() == DefaultDest) {
    124         // Remove this entry.
    125         DefaultDest->removePredecessor(SI->getParent());
    126         SI->removeCase(i);
    127         --i; --e;
    128         continue;
    129       }
    130 
    131       // Otherwise, check to see if the switch only branches to one destination.
    132       // We do this by reseting "TheOnlyDest" to null when we find two non-equal
    133       // destinations.
    134       if (i.getCaseSuccessor() != TheOnlyDest) TheOnlyDest = 0;
    135     }
    136 
    137     if (CI && !TheOnlyDest) {
    138       // Branching on a constant, but not any of the cases, go to the default
    139       // successor.
    140       TheOnlyDest = SI->getDefaultDest();
    141     }
    142 
    143     // If we found a single destination that we can fold the switch into, do so
    144     // now.
    145     if (TheOnlyDest) {
    146       // Insert the new branch.
    147       Builder.CreateBr(TheOnlyDest);
    148       BasicBlock *BB = SI->getParent();
    149 
    150       // Remove entries from PHI nodes which we no longer branch to...
    151       for (unsigned i = 0, e = SI->getNumSuccessors(); i != e; ++i) {
    152         // Found case matching a constant operand?
    153         BasicBlock *Succ = SI->getSuccessor(i);
    154         if (Succ == TheOnlyDest)
    155           TheOnlyDest = 0;  // Don't modify the first branch to TheOnlyDest
    156         else
    157           Succ->removePredecessor(BB);
    158       }
    159 
    160       // Delete the old switch.
    161       Value *Cond = SI->getCondition();
    162       SI->eraseFromParent();
    163       if (DeleteDeadConditions)
    164         RecursivelyDeleteTriviallyDeadInstructions(Cond);
    165       return true;
    166     }
    167 
    168     if (SI->getNumCases() == 1) {
    169       // Otherwise, we can fold this switch into a conditional branch
    170       // instruction if it has only one non-default destination.
    171       SwitchInst::CaseIt FirstCase = SI->case_begin();
    172       Value *Cond = Builder.CreateICmpEQ(SI->getCondition(),
    173           FirstCase.getCaseValue(), "cond");
    174 
    175       // Insert the new branch.
    176       Builder.CreateCondBr(Cond, FirstCase.getCaseSuccessor(),
    177                            SI->getDefaultDest());
    178 
    179       // Delete the old switch.
    180       SI->eraseFromParent();
    181       return true;
    182     }
    183     return false;
    184   }
    185 
    186   if (IndirectBrInst *IBI = dyn_cast<IndirectBrInst>(T)) {
    187     // indirectbr blockaddress(@F, @BB) -> br label @BB
    188     if (BlockAddress *BA =
    189           dyn_cast<BlockAddress>(IBI->getAddress()->stripPointerCasts())) {
    190       BasicBlock *TheOnlyDest = BA->getBasicBlock();
    191       // Insert the new branch.
    192       Builder.CreateBr(TheOnlyDest);
    193 
    194       for (unsigned i = 0, e = IBI->getNumDestinations(); i != e; ++i) {
    195         if (IBI->getDestination(i) == TheOnlyDest)
    196           TheOnlyDest = 0;
    197         else
    198           IBI->getDestination(i)->removePredecessor(IBI->getParent());
    199       }
    200       Value *Address = IBI->getAddress();
    201       IBI->eraseFromParent();
    202       if (DeleteDeadConditions)
    203         RecursivelyDeleteTriviallyDeadInstructions(Address);
    204 
    205       // If we didn't find our destination in the IBI successor list, then we
    206       // have undefined behavior.  Replace the unconditional branch with an
    207       // 'unreachable' instruction.
    208       if (TheOnlyDest) {
    209         BB->getTerminator()->eraseFromParent();
    210         new UnreachableInst(BB->getContext(), BB);
    211       }
    212 
    213       return true;
    214     }
    215   }
    216 
    217   return false;
    218 }
    219 
    220 
    221 //===----------------------------------------------------------------------===//
    222 //  Local dead code elimination.
    223 //
    224 
    225 /// isInstructionTriviallyDead - Return true if the result produced by the
    226 /// instruction is not used, and the instruction has no side effects.
    227 ///
    228 bool llvm::isInstructionTriviallyDead(Instruction *I) {
    229   if (!I->use_empty() || isa<TerminatorInst>(I)) return false;
    230 
    231   // We don't want the landingpad instruction removed by anything this general.
    232   if (isa<LandingPadInst>(I))
    233     return false;
    234 
    235   // We don't want debug info removed by anything this general, unless
    236   // debug info is empty.
    237   if (DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(I)) {
    238     if (DDI->getAddress())
    239       return false;
    240     return true;
    241   }
    242   if (DbgValueInst *DVI = dyn_cast<DbgValueInst>(I)) {
    243     if (DVI->getValue())
    244       return false;
    245     return true;
    246   }
    247 
    248   if (!I->mayHaveSideEffects()) return true;
    249 
    250   // Special case intrinsics that "may have side effects" but can be deleted
    251   // when dead.
    252   if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) {
    253     // Safe to delete llvm.stacksave if dead.
    254     if (II->getIntrinsicID() == Intrinsic::stacksave)
    255       return true;
    256 
    257     // Lifetime intrinsics are dead when their right-hand is undef.
    258     if (II->getIntrinsicID() == Intrinsic::lifetime_start ||
    259         II->getIntrinsicID() == Intrinsic::lifetime_end)
    260       return isa<UndefValue>(II->getArgOperand(1));
    261   }
    262 
    263   if (extractMallocCall(I)) return true;
    264 
    265   if (CallInst *CI = isFreeCall(I))
    266     if (Constant *C = dyn_cast<Constant>(CI->getArgOperand(0)))
    267       return C->isNullValue() || isa<UndefValue>(C);
    268 
    269   return false;
    270 }
    271 
    272 /// RecursivelyDeleteTriviallyDeadInstructions - If the specified value is a
    273 /// trivially dead instruction, delete it.  If that makes any of its operands
    274 /// trivially dead, delete them too, recursively.  Return true if any
    275 /// instructions were deleted.
    276 bool llvm::RecursivelyDeleteTriviallyDeadInstructions(Value *V) {
    277   Instruction *I = dyn_cast<Instruction>(V);
    278   if (!I || !I->use_empty() || !isInstructionTriviallyDead(I))
    279     return false;
    280 
    281   SmallVector<Instruction*, 16> DeadInsts;
    282   DeadInsts.push_back(I);
    283 
    284   do {
    285     I = DeadInsts.pop_back_val();
    286 
    287     // Null out all of the instruction's operands to see if any operand becomes
    288     // dead as we go.
    289     for (unsigned i = 0, e = I->getNumOperands(); i != e; ++i) {
    290       Value *OpV = I->getOperand(i);
    291       I->setOperand(i, 0);
    292 
    293       if (!OpV->use_empty()) continue;
    294 
    295       // If the operand is an instruction that became dead as we nulled out the
    296       // operand, and if it is 'trivially' dead, delete it in a future loop
    297       // iteration.
    298       if (Instruction *OpI = dyn_cast<Instruction>(OpV))
    299         if (isInstructionTriviallyDead(OpI))
    300           DeadInsts.push_back(OpI);
    301     }
    302 
    303     I->eraseFromParent();
    304   } while (!DeadInsts.empty());
    305 
    306   return true;
    307 }
    308 
    309 /// areAllUsesEqual - Check whether the uses of a value are all the same.
    310 /// This is similar to Instruction::hasOneUse() except this will also return
    311 /// true when there are no uses or multiple uses that all refer to the same
    312 /// value.
    313 static bool areAllUsesEqual(Instruction *I) {
    314   Value::use_iterator UI = I->use_begin();
    315   Value::use_iterator UE = I->use_end();
    316   if (UI == UE)
    317     return true;
    318 
    319   User *TheUse = *UI;
    320   for (++UI; UI != UE; ++UI) {
    321     if (*UI != TheUse)
    322       return false;
    323   }
    324   return true;
    325 }
    326 
    327 /// RecursivelyDeleteDeadPHINode - If the specified value is an effectively
    328 /// dead PHI node, due to being a def-use chain of single-use nodes that
    329 /// either forms a cycle or is terminated by a trivially dead instruction,
    330 /// delete it.  If that makes any of its operands trivially dead, delete them
    331 /// too, recursively.  Return true if a change was made.
    332 bool llvm::RecursivelyDeleteDeadPHINode(PHINode *PN) {
    333   SmallPtrSet<Instruction*, 4> Visited;
    334   for (Instruction *I = PN; areAllUsesEqual(I) && !I->mayHaveSideEffects();
    335        I = cast<Instruction>(*I->use_begin())) {
    336     if (I->use_empty())
    337       return RecursivelyDeleteTriviallyDeadInstructions(I);
    338 
    339     // If we find an instruction more than once, we're on a cycle that
    340     // won't prove fruitful.
    341     if (!Visited.insert(I)) {
    342       // Break the cycle and delete the instruction and its operands.
    343       I->replaceAllUsesWith(UndefValue::get(I->getType()));
    344       (void)RecursivelyDeleteTriviallyDeadInstructions(I);
    345       return true;
    346     }
    347   }
    348   return false;
    349 }
    350 
    351 /// SimplifyInstructionsInBlock - Scan the specified basic block and try to
    352 /// simplify any instructions in it and recursively delete dead instructions.
    353 ///
    354 /// This returns true if it changed the code, note that it can delete
    355 /// instructions in other blocks as well in this block.
    356 bool llvm::SimplifyInstructionsInBlock(BasicBlock *BB, const TargetData *TD) {
    357   bool MadeChange = false;
    358 
    359 #ifndef NDEBUG
    360   // In debug builds, ensure that the terminator of the block is never replaced
    361   // or deleted by these simplifications. The idea of simplification is that it
    362   // cannot introduce new instructions, and there is no way to replace the
    363   // terminator of a block without introducing a new instruction.
    364   AssertingVH<Instruction> TerminatorVH(--BB->end());
    365 #endif
    366 
    367   for (BasicBlock::iterator BI = BB->begin(), E = --BB->end(); BI != E; ) {
    368     assert(!BI->isTerminator());
    369     Instruction *Inst = BI++;
    370 
    371     WeakVH BIHandle(BI);
    372     if (recursivelySimplifyInstruction(Inst, TD)) {
    373       MadeChange = true;
    374       if (BIHandle != BI)
    375         BI = BB->begin();
    376       continue;
    377     }
    378 
    379     MadeChange |= RecursivelyDeleteTriviallyDeadInstructions(Inst);
    380     if (BIHandle != BI)
    381       BI = BB->begin();
    382   }
    383   return MadeChange;
    384 }
    385 
    386 //===----------------------------------------------------------------------===//
    387 //  Control Flow Graph Restructuring.
    388 //
    389 
    390 
    391 /// RemovePredecessorAndSimplify - Like BasicBlock::removePredecessor, this
    392 /// method is called when we're about to delete Pred as a predecessor of BB.  If
    393 /// BB contains any PHI nodes, this drops the entries in the PHI nodes for Pred.
    394 ///
    395 /// Unlike the removePredecessor method, this attempts to simplify uses of PHI
    396 /// nodes that collapse into identity values.  For example, if we have:
    397 ///   x = phi(1, 0, 0, 0)
    398 ///   y = and x, z
    399 ///
    400 /// .. and delete the predecessor corresponding to the '1', this will attempt to
    401 /// recursively fold the and to 0.
    402 void llvm::RemovePredecessorAndSimplify(BasicBlock *BB, BasicBlock *Pred,
    403                                         TargetData *TD) {
    404   // This only adjusts blocks with PHI nodes.
    405   if (!isa<PHINode>(BB->begin()))
    406     return;
    407 
    408   // Remove the entries for Pred from the PHI nodes in BB, but do not simplify
    409   // them down.  This will leave us with single entry phi nodes and other phis
    410   // that can be removed.
    411   BB->removePredecessor(Pred, true);
    412 
    413   WeakVH PhiIt = &BB->front();
    414   while (PHINode *PN = dyn_cast<PHINode>(PhiIt)) {
    415     PhiIt = &*++BasicBlock::iterator(cast<Instruction>(PhiIt));
    416     Value *OldPhiIt = PhiIt;
    417 
    418     if (!recursivelySimplifyInstruction(PN, TD))
    419       continue;
    420 
    421     // If recursive simplification ended up deleting the next PHI node we would
    422     // iterate to, then our iterator is invalid, restart scanning from the top
    423     // of the block.
    424     if (PhiIt != OldPhiIt) PhiIt = &BB->front();
    425   }
    426 }
    427 
    428 
    429 /// MergeBasicBlockIntoOnlyPred - DestBB is a block with one predecessor and its
    430 /// predecessor is known to have one successor (DestBB!).  Eliminate the edge
    431 /// between them, moving the instructions in the predecessor into DestBB and
    432 /// deleting the predecessor block.
    433 ///
    434 void llvm::MergeBasicBlockIntoOnlyPred(BasicBlock *DestBB, Pass *P) {
    435   // If BB has single-entry PHI nodes, fold them.
    436   while (PHINode *PN = dyn_cast<PHINode>(DestBB->begin())) {
    437     Value *NewVal = PN->getIncomingValue(0);
    438     // Replace self referencing PHI with undef, it must be dead.
    439     if (NewVal == PN) NewVal = UndefValue::get(PN->getType());
    440     PN->replaceAllUsesWith(NewVal);
    441     PN->eraseFromParent();
    442   }
    443 
    444   BasicBlock *PredBB = DestBB->getSinglePredecessor();
    445   assert(PredBB && "Block doesn't have a single predecessor!");
    446 
    447   // Zap anything that took the address of DestBB.  Not doing this will give the
    448   // address an invalid value.
    449   if (DestBB->hasAddressTaken()) {
    450     BlockAddress *BA = BlockAddress::get(DestBB);
    451     Constant *Replacement =
    452       ConstantInt::get(llvm::Type::getInt32Ty(BA->getContext()), 1);
    453     BA->replaceAllUsesWith(ConstantExpr::getIntToPtr(Replacement,
    454                                                      BA->getType()));
    455     BA->destroyConstant();
    456   }
    457 
    458   // Anything that branched to PredBB now branches to DestBB.
    459   PredBB->replaceAllUsesWith(DestBB);
    460 
    461   // Splice all the instructions from PredBB to DestBB.
    462   PredBB->getTerminator()->eraseFromParent();
    463   DestBB->getInstList().splice(DestBB->begin(), PredBB->getInstList());
    464 
    465   if (P) {
    466     DominatorTree *DT = P->getAnalysisIfAvailable<DominatorTree>();
    467     if (DT) {
    468       BasicBlock *PredBBIDom = DT->getNode(PredBB)->getIDom()->getBlock();
    469       DT->changeImmediateDominator(DestBB, PredBBIDom);
    470       DT->eraseNode(PredBB);
    471     }
    472     ProfileInfo *PI = P->getAnalysisIfAvailable<ProfileInfo>();
    473     if (PI) {
    474       PI->replaceAllUses(PredBB, DestBB);
    475       PI->removeEdge(ProfileInfo::getEdge(PredBB, DestBB));
    476     }
    477   }
    478   // Nuke BB.
    479   PredBB->eraseFromParent();
    480 }
    481 
    482 /// CanPropagatePredecessorsForPHIs - Return true if we can fold BB, an
    483 /// almost-empty BB ending in an unconditional branch to Succ, into succ.
    484 ///
    485 /// Assumption: Succ is the single successor for BB.
    486 ///
    487 static bool CanPropagatePredecessorsForPHIs(BasicBlock *BB, BasicBlock *Succ) {
    488   assert(*succ_begin(BB) == Succ && "Succ is not successor of BB!");
    489 
    490   DEBUG(dbgs() << "Looking to fold " << BB->getName() << " into "
    491         << Succ->getName() << "\n");
    492   // Shortcut, if there is only a single predecessor it must be BB and merging
    493   // is always safe
    494   if (Succ->getSinglePredecessor()) return true;
    495 
    496   // Make a list of the predecessors of BB
    497   SmallPtrSet<BasicBlock*, 16> BBPreds(pred_begin(BB), pred_end(BB));
    498 
    499   // Look at all the phi nodes in Succ, to see if they present a conflict when
    500   // merging these blocks
    501   for (BasicBlock::iterator I = Succ->begin(); isa<PHINode>(I); ++I) {
    502     PHINode *PN = cast<PHINode>(I);
    503 
    504     // If the incoming value from BB is again a PHINode in
    505     // BB which has the same incoming value for *PI as PN does, we can
    506     // merge the phi nodes and then the blocks can still be merged
    507     PHINode *BBPN = dyn_cast<PHINode>(PN->getIncomingValueForBlock(BB));
    508     if (BBPN && BBPN->getParent() == BB) {
    509       for (unsigned PI = 0, PE = PN->getNumIncomingValues(); PI != PE; ++PI) {
    510         BasicBlock *IBB = PN->getIncomingBlock(PI);
    511         if (BBPreds.count(IBB) &&
    512             BBPN->getIncomingValueForBlock(IBB) != PN->getIncomingValue(PI)) {
    513           DEBUG(dbgs() << "Can't fold, phi node " << PN->getName() << " in "
    514                 << Succ->getName() << " is conflicting with "
    515                 << BBPN->getName() << " with regard to common predecessor "
    516                 << IBB->getName() << "\n");
    517           return false;
    518         }
    519       }
    520     } else {
    521       Value* Val = PN->getIncomingValueForBlock(BB);
    522       for (unsigned PI = 0, PE = PN->getNumIncomingValues(); PI != PE; ++PI) {
    523         // See if the incoming value for the common predecessor is equal to the
    524         // one for BB, in which case this phi node will not prevent the merging
    525         // of the block.
    526         BasicBlock *IBB = PN->getIncomingBlock(PI);
    527         if (BBPreds.count(IBB) && Val != PN->getIncomingValue(PI)) {
    528           DEBUG(dbgs() << "Can't fold, phi node " << PN->getName() << " in "
    529                 << Succ->getName() << " is conflicting with regard to common "
    530                 << "predecessor " << IBB->getName() << "\n");
    531           return false;
    532         }
    533       }
    534     }
    535   }
    536 
    537   return true;
    538 }
    539 
    540 /// TryToSimplifyUncondBranchFromEmptyBlock - BB is known to contain an
    541 /// unconditional branch, and contains no instructions other than PHI nodes,
    542 /// potential side-effect free intrinsics and the branch.  If possible,
    543 /// eliminate BB by rewriting all the predecessors to branch to the successor
    544 /// block and return true.  If we can't transform, return false.
    545 bool llvm::TryToSimplifyUncondBranchFromEmptyBlock(BasicBlock *BB) {
    546   assert(BB != &BB->getParent()->getEntryBlock() &&
    547          "TryToSimplifyUncondBranchFromEmptyBlock called on entry block!");
    548 
    549   // We can't eliminate infinite loops.
    550   BasicBlock *Succ = cast<BranchInst>(BB->getTerminator())->getSuccessor(0);
    551   if (BB == Succ) return false;
    552 
    553   // Check to see if merging these blocks would cause conflicts for any of the
    554   // phi nodes in BB or Succ. If not, we can safely merge.
    555   if (!CanPropagatePredecessorsForPHIs(BB, Succ)) return false;
    556 
    557   // Check for cases where Succ has multiple predecessors and a PHI node in BB
    558   // has uses which will not disappear when the PHI nodes are merged.  It is
    559   // possible to handle such cases, but difficult: it requires checking whether
    560   // BB dominates Succ, which is non-trivial to calculate in the case where
    561   // Succ has multiple predecessors.  Also, it requires checking whether
    562   // constructing the necessary self-referential PHI node doesn't intoduce any
    563   // conflicts; this isn't too difficult, but the previous code for doing this
    564   // was incorrect.
    565   //
    566   // Note that if this check finds a live use, BB dominates Succ, so BB is
    567   // something like a loop pre-header (or rarely, a part of an irreducible CFG);
    568   // folding the branch isn't profitable in that case anyway.
    569   if (!Succ->getSinglePredecessor()) {
    570     BasicBlock::iterator BBI = BB->begin();
    571     while (isa<PHINode>(*BBI)) {
    572       for (Value::use_iterator UI = BBI->use_begin(), E = BBI->use_end();
    573            UI != E; ++UI) {
    574         if (PHINode* PN = dyn_cast<PHINode>(*UI)) {
    575           if (PN->getIncomingBlock(UI) != BB)
    576             return false;
    577         } else {
    578           return false;
    579         }
    580       }
    581       ++BBI;
    582     }
    583   }
    584 
    585   DEBUG(dbgs() << "Killing Trivial BB: \n" << *BB);
    586 
    587   if (isa<PHINode>(Succ->begin())) {
    588     // If there is more than one pred of succ, and there are PHI nodes in
    589     // the successor, then we need to add incoming edges for the PHI nodes
    590     //
    591     const SmallVector<BasicBlock*, 16> BBPreds(pred_begin(BB), pred_end(BB));
    592 
    593     // Loop over all of the PHI nodes in the successor of BB.
    594     for (BasicBlock::iterator I = Succ->begin(); isa<PHINode>(I); ++I) {
    595       PHINode *PN = cast<PHINode>(I);
    596       Value *OldVal = PN->removeIncomingValue(BB, false);
    597       assert(OldVal && "No entry in PHI for Pred BB!");
    598 
    599       // If this incoming value is one of the PHI nodes in BB, the new entries
    600       // in the PHI node are the entries from the old PHI.
    601       if (isa<PHINode>(OldVal) && cast<PHINode>(OldVal)->getParent() == BB) {
    602         PHINode *OldValPN = cast<PHINode>(OldVal);
    603         for (unsigned i = 0, e = OldValPN->getNumIncomingValues(); i != e; ++i)
    604           // Note that, since we are merging phi nodes and BB and Succ might
    605           // have common predecessors, we could end up with a phi node with
    606           // identical incoming branches. This will be cleaned up later (and
    607           // will trigger asserts if we try to clean it up now, without also
    608           // simplifying the corresponding conditional branch).
    609           PN->addIncoming(OldValPN->getIncomingValue(i),
    610                           OldValPN->getIncomingBlock(i));
    611       } else {
    612         // Add an incoming value for each of the new incoming values.
    613         for (unsigned i = 0, e = BBPreds.size(); i != e; ++i)
    614           PN->addIncoming(OldVal, BBPreds[i]);
    615       }
    616     }
    617   }
    618 
    619   if (Succ->getSinglePredecessor()) {
    620     // BB is the only predecessor of Succ, so Succ will end up with exactly
    621     // the same predecessors BB had.
    622 
    623     // Copy over any phi, debug or lifetime instruction.
    624     BB->getTerminator()->eraseFromParent();
    625     Succ->getInstList().splice(Succ->getFirstNonPHI(), BB->getInstList());
    626   } else {
    627     while (PHINode *PN = dyn_cast<PHINode>(&BB->front())) {
    628       // We explicitly check for such uses in CanPropagatePredecessorsForPHIs.
    629       assert(PN->use_empty() && "There shouldn't be any uses here!");
    630       PN->eraseFromParent();
    631     }
    632   }
    633 
    634   // Everything that jumped to BB now goes to Succ.
    635   BB->replaceAllUsesWith(Succ);
    636   if (!Succ->hasName()) Succ->takeName(BB);
    637   BB->eraseFromParent();              // Delete the old basic block.
    638   return true;
    639 }
    640 
    641 /// EliminateDuplicatePHINodes - Check for and eliminate duplicate PHI
    642 /// nodes in this block. This doesn't try to be clever about PHI nodes
    643 /// which differ only in the order of the incoming values, but instcombine
    644 /// orders them so it usually won't matter.
    645 ///
    646 bool llvm::EliminateDuplicatePHINodes(BasicBlock *BB) {
    647   bool Changed = false;
    648 
    649   // This implementation doesn't currently consider undef operands
    650   // specially. Theoretically, two phis which are identical except for
    651   // one having an undef where the other doesn't could be collapsed.
    652 
    653   // Map from PHI hash values to PHI nodes. If multiple PHIs have
    654   // the same hash value, the element is the first PHI in the
    655   // linked list in CollisionMap.
    656   DenseMap<uintptr_t, PHINode *> HashMap;
    657 
    658   // Maintain linked lists of PHI nodes with common hash values.
    659   DenseMap<PHINode *, PHINode *> CollisionMap;
    660 
    661   // Examine each PHI.
    662   for (BasicBlock::iterator I = BB->begin();
    663        PHINode *PN = dyn_cast<PHINode>(I++); ) {
    664     // Compute a hash value on the operands. Instcombine will likely have sorted
    665     // them, which helps expose duplicates, but we have to check all the
    666     // operands to be safe in case instcombine hasn't run.
    667     uintptr_t Hash = 0;
    668     // This hash algorithm is quite weak as hash functions go, but it seems
    669     // to do a good enough job for this particular purpose, and is very quick.
    670     for (User::op_iterator I = PN->op_begin(), E = PN->op_end(); I != E; ++I) {
    671       Hash ^= reinterpret_cast<uintptr_t>(static_cast<Value *>(*I));
    672       Hash = (Hash << 7) | (Hash >> (sizeof(uintptr_t) * CHAR_BIT - 7));
    673     }
    674     for (PHINode::block_iterator I = PN->block_begin(), E = PN->block_end();
    675          I != E; ++I) {
    676       Hash ^= reinterpret_cast<uintptr_t>(static_cast<BasicBlock *>(*I));
    677       Hash = (Hash << 7) | (Hash >> (sizeof(uintptr_t) * CHAR_BIT - 7));
    678     }
    679     // Avoid colliding with the DenseMap sentinels ~0 and ~0-1.
    680     Hash >>= 1;
    681     // If we've never seen this hash value before, it's a unique PHI.
    682     std::pair<DenseMap<uintptr_t, PHINode *>::iterator, bool> Pair =
    683       HashMap.insert(std::make_pair(Hash, PN));
    684     if (Pair.second) continue;
    685     // Otherwise it's either a duplicate or a hash collision.
    686     for (PHINode *OtherPN = Pair.first->second; ; ) {
    687       if (OtherPN->isIdenticalTo(PN)) {
    688         // A duplicate. Replace this PHI with its duplicate.
    689         PN->replaceAllUsesWith(OtherPN);
    690         PN->eraseFromParent();
    691         Changed = true;
    692         break;
    693       }
    694       // A non-duplicate hash collision.
    695       DenseMap<PHINode *, PHINode *>::iterator I = CollisionMap.find(OtherPN);
    696       if (I == CollisionMap.end()) {
    697         // Set this PHI to be the head of the linked list of colliding PHIs.
    698         PHINode *Old = Pair.first->second;
    699         Pair.first->second = PN;
    700         CollisionMap[PN] = Old;
    701         break;
    702       }
    703       // Procede to the next PHI in the list.
    704       OtherPN = I->second;
    705     }
    706   }
    707 
    708   return Changed;
    709 }
    710 
    711 /// enforceKnownAlignment - If the specified pointer points to an object that
    712 /// we control, modify the object's alignment to PrefAlign. This isn't
    713 /// often possible though. If alignment is important, a more reliable approach
    714 /// is to simply align all global variables and allocation instructions to
    715 /// their preferred alignment from the beginning.
    716 ///
    717 static unsigned enforceKnownAlignment(Value *V, unsigned Align,
    718                                       unsigned PrefAlign, const TargetData *TD) {
    719   V = V->stripPointerCasts();
    720 
    721   if (AllocaInst *AI = dyn_cast<AllocaInst>(V)) {
    722     // If the preferred alignment is greater than the natural stack alignment
    723     // then don't round up. This avoids dynamic stack realignment.
    724     if (TD && TD->exceedsNaturalStackAlignment(PrefAlign))
    725       return Align;
    726     // If there is a requested alignment and if this is an alloca, round up.
    727     if (AI->getAlignment() >= PrefAlign)
    728       return AI->getAlignment();
    729     AI->setAlignment(PrefAlign);
    730     return PrefAlign;
    731   }
    732 
    733   if (GlobalValue *GV = dyn_cast<GlobalValue>(V)) {
    734     // If there is a large requested alignment and we can, bump up the alignment
    735     // of the global.
    736     if (GV->isDeclaration()) return Align;
    737     // If the memory we set aside for the global may not be the memory used by
    738     // the final program then it is impossible for us to reliably enforce the
    739     // preferred alignment.
    740     if (GV->isWeakForLinker()) return Align;
    741 
    742     if (GV->getAlignment() >= PrefAlign)
    743       return GV->getAlignment();
    744     // We can only increase the alignment of the global if it has no alignment
    745     // specified or if it is not assigned a section.  If it is assigned a
    746     // section, the global could be densely packed with other objects in the
    747     // section, increasing the alignment could cause padding issues.
    748     if (!GV->hasSection() || GV->getAlignment() == 0)
    749       GV->setAlignment(PrefAlign);
    750     return GV->getAlignment();
    751   }
    752 
    753   return Align;
    754 }
    755 
    756 /// getOrEnforceKnownAlignment - If the specified pointer has an alignment that
    757 /// we can determine, return it, otherwise return 0.  If PrefAlign is specified,
    758 /// and it is more than the alignment of the ultimate object, see if we can
    759 /// increase the alignment of the ultimate object, making this check succeed.
    760 unsigned llvm::getOrEnforceKnownAlignment(Value *V, unsigned PrefAlign,
    761                                           const TargetData *TD) {
    762   assert(V->getType()->isPointerTy() &&
    763          "getOrEnforceKnownAlignment expects a pointer!");
    764   unsigned BitWidth = TD ? TD->getPointerSizeInBits() : 64;
    765   APInt KnownZero(BitWidth, 0), KnownOne(BitWidth, 0);
    766   ComputeMaskedBits(V, KnownZero, KnownOne, TD);
    767   unsigned TrailZ = KnownZero.countTrailingOnes();
    768 
    769   // Avoid trouble with rediculously large TrailZ values, such as
    770   // those computed from a null pointer.
    771   TrailZ = std::min(TrailZ, unsigned(sizeof(unsigned) * CHAR_BIT - 1));
    772 
    773   unsigned Align = 1u << std::min(BitWidth - 1, TrailZ);
    774 
    775   // LLVM doesn't support alignments larger than this currently.
    776   Align = std::min(Align, +Value::MaximumAlignment);
    777 
    778   if (PrefAlign > Align)
    779     Align = enforceKnownAlignment(V, Align, PrefAlign, TD);
    780 
    781   // We don't need to make any adjustment.
    782   return Align;
    783 }
    784 
    785 ///===---------------------------------------------------------------------===//
    786 ///  Dbg Intrinsic utilities
    787 ///
    788 
    789 /// Inserts a llvm.dbg.value instrinsic before the stores to an alloca'd value
    790 /// that has an associated llvm.dbg.decl intrinsic.
    791 bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
    792                                            StoreInst *SI, DIBuilder &Builder) {
    793   DIVariable DIVar(DDI->getVariable());
    794   if (!DIVar.Verify())
    795     return false;
    796 
    797   Instruction *DbgVal = NULL;
    798   // If an argument is zero extended then use argument directly. The ZExt
    799   // may be zapped by an optimization pass in future.
    800   Argument *ExtendedArg = NULL;
    801   if (ZExtInst *ZExt = dyn_cast<ZExtInst>(SI->getOperand(0)))
    802     ExtendedArg = dyn_cast<Argument>(ZExt->getOperand(0));
    803   if (SExtInst *SExt = dyn_cast<SExtInst>(SI->getOperand(0)))
    804     ExtendedArg = dyn_cast<Argument>(SExt->getOperand(0));
    805   if (ExtendedArg)
    806     DbgVal = Builder.insertDbgValueIntrinsic(ExtendedArg, 0, DIVar, SI);
    807   else
    808     DbgVal = Builder.insertDbgValueIntrinsic(SI->getOperand(0), 0, DIVar, SI);
    809 
    810   // Propagate any debug metadata from the store onto the dbg.value.
    811   DebugLoc SIDL = SI->getDebugLoc();
    812   if (!SIDL.isUnknown())
    813     DbgVal->setDebugLoc(SIDL);
    814   // Otherwise propagate debug metadata from dbg.declare.
    815   else
    816     DbgVal->setDebugLoc(DDI->getDebugLoc());
    817   return true;
    818 }
    819 
    820 /// Inserts a llvm.dbg.value instrinsic before the stores to an alloca'd value
    821 /// that has an associated llvm.dbg.decl intrinsic.
    822 bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
    823                                            LoadInst *LI, DIBuilder &Builder) {
    824   DIVariable DIVar(DDI->getVariable());
    825   if (!DIVar.Verify())
    826     return false;
    827 
    828   Instruction *DbgVal =
    829     Builder.insertDbgValueIntrinsic(LI->getOperand(0), 0,
    830                                     DIVar, LI);
    831 
    832   // Propagate any debug metadata from the store onto the dbg.value.
    833   DebugLoc LIDL = LI->getDebugLoc();
    834   if (!LIDL.isUnknown())
    835     DbgVal->setDebugLoc(LIDL);
    836   // Otherwise propagate debug metadata from dbg.declare.
    837   else
    838     DbgVal->setDebugLoc(DDI->getDebugLoc());
    839   return true;
    840 }
    841 
    842 /// LowerDbgDeclare - Lowers llvm.dbg.declare intrinsics into appropriate set
    843 /// of llvm.dbg.value intrinsics.
    844 bool llvm::LowerDbgDeclare(Function &F) {
    845   DIBuilder DIB(*F.getParent());
    846   SmallVector<DbgDeclareInst *, 4> Dbgs;
    847   for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI)
    848     for (BasicBlock::iterator BI = FI->begin(), BE = FI->end(); BI != BE; ++BI) {
    849       if (DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(BI))
    850         Dbgs.push_back(DDI);
    851     }
    852   if (Dbgs.empty())
    853     return false;
    854 
    855   for (SmallVector<DbgDeclareInst *, 4>::iterator I = Dbgs.begin(),
    856          E = Dbgs.end(); I != E; ++I) {
    857     DbgDeclareInst *DDI = *I;
    858     if (AllocaInst *AI = dyn_cast_or_null<AllocaInst>(DDI->getAddress())) {
    859       bool RemoveDDI = true;
    860       for (Value::use_iterator UI = AI->use_begin(), E = AI->use_end();
    861            UI != E; ++UI)
    862         if (StoreInst *SI = dyn_cast<StoreInst>(*UI))
    863           ConvertDebugDeclareToDebugValue(DDI, SI, DIB);
    864         else if (LoadInst *LI = dyn_cast<LoadInst>(*UI))
    865           ConvertDebugDeclareToDebugValue(DDI, LI, DIB);
    866         else
    867           RemoveDDI = false;
    868       if (RemoveDDI)
    869         DDI->eraseFromParent();
    870     }
    871   }
    872   return true;
    873 }
    874 
    875 /// FindAllocaDbgDeclare - Finds the llvm.dbg.declare intrinsic describing the
    876 /// alloca 'V', if any.
    877 DbgDeclareInst *llvm::FindAllocaDbgDeclare(Value *V) {
    878   if (MDNode *DebugNode = MDNode::getIfExists(V->getContext(), V))
    879     for (Value::use_iterator UI = DebugNode->use_begin(),
    880          E = DebugNode->use_end(); UI != E; ++UI)
    881       if (DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(*UI))
    882         return DDI;
    883 
    884   return 0;
    885 }
    886