Home | History | Annotate | Download | only in Utils
      1 //===- InlineFunction.cpp - Code to perform function inlining -------------===//
      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 file implements inlining of a function into a call site, resolving
     11 // parameters and the return value as appropriate.
     12 //
     13 // The code in this file for handling inlines through invoke
     14 // instructions preserves semantics only under some assumptions about
     15 // the behavior of unwinders which correspond to gcc-style libUnwind
     16 // exception personality functions.  Eventually the IR will be
     17 // improved to make this unnecessary, but until then, this code is
     18 // marked [LIBUNWIND].
     19 //
     20 //===----------------------------------------------------------------------===//
     21 
     22 #include "llvm/Transforms/Utils/Cloning.h"
     23 #include "llvm/Constants.h"
     24 #include "llvm/DerivedTypes.h"
     25 #include "llvm/Module.h"
     26 #include "llvm/Instructions.h"
     27 #include "llvm/IntrinsicInst.h"
     28 #include "llvm/Intrinsics.h"
     29 #include "llvm/Attributes.h"
     30 #include "llvm/Analysis/CallGraph.h"
     31 #include "llvm/Analysis/DebugInfo.h"
     32 #include "llvm/Analysis/InstructionSimplify.h"
     33 #include "llvm/Target/TargetData.h"
     34 #include "llvm/Transforms/Utils/Local.h"
     35 #include "llvm/ADT/SmallVector.h"
     36 #include "llvm/ADT/StringExtras.h"
     37 #include "llvm/Support/CallSite.h"
     38 #include "llvm/Support/IRBuilder.h"
     39 using namespace llvm;
     40 
     41 bool llvm::InlineFunction(CallInst *CI, InlineFunctionInfo &IFI) {
     42   return InlineFunction(CallSite(CI), IFI);
     43 }
     44 bool llvm::InlineFunction(InvokeInst *II, InlineFunctionInfo &IFI) {
     45   return InlineFunction(CallSite(II), IFI);
     46 }
     47 
     48 /// [LIBUNWIND] Look for an llvm.eh.exception call in the given block.
     49 static EHExceptionInst *findExceptionInBlock(BasicBlock *bb) {
     50   for (BasicBlock::iterator i = bb->begin(), e = bb->end(); i != e; i++) {
     51     EHExceptionInst *exn = dyn_cast<EHExceptionInst>(i);
     52     if (exn) return exn;
     53   }
     54 
     55   return 0;
     56 }
     57 
     58 /// [LIBUNWIND] Look for the 'best' llvm.eh.selector instruction for
     59 /// the given llvm.eh.exception call.
     60 static EHSelectorInst *findSelectorForException(EHExceptionInst *exn) {
     61   BasicBlock *exnBlock = exn->getParent();
     62 
     63   EHSelectorInst *outOfBlockSelector = 0;
     64   for (Instruction::use_iterator
     65          ui = exn->use_begin(), ue = exn->use_end(); ui != ue; ++ui) {
     66     EHSelectorInst *sel = dyn_cast<EHSelectorInst>(*ui);
     67     if (!sel) continue;
     68 
     69     // Immediately accept an eh.selector in the same block as the
     70     // excepton call.
     71     if (sel->getParent() == exnBlock) return sel;
     72 
     73     // Otherwise, use the first selector we see.
     74     if (!outOfBlockSelector) outOfBlockSelector = sel;
     75   }
     76 
     77   return outOfBlockSelector;
     78 }
     79 
     80 /// [LIBUNWIND] Find the (possibly absent) call to @llvm.eh.selector
     81 /// in the given landing pad.  In principle, llvm.eh.exception is
     82 /// required to be in the landing pad; in practice, SplitCriticalEdge
     83 /// can break that invariant, and then inlining can break it further.
     84 /// There's a real need for a reliable solution here, but until that
     85 /// happens, we have some fragile workarounds here.
     86 static EHSelectorInst *findSelectorForLandingPad(BasicBlock *lpad) {
     87   // Look for an exception call in the actual landing pad.
     88   EHExceptionInst *exn = findExceptionInBlock(lpad);
     89   if (exn) return findSelectorForException(exn);
     90 
     91   // Okay, if that failed, look for one in an obvious successor.  If
     92   // we find one, we'll fix the IR by moving things back to the
     93   // landing pad.
     94 
     95   bool dominates = true; // does the lpad dominate the exn call
     96   BasicBlock *nonDominated = 0; // if not, the first non-dominated block
     97   BasicBlock *lastDominated = 0; // and the block which branched to it
     98 
     99   BasicBlock *exnBlock = lpad;
    100 
    101   // We need to protect against lpads that lead into infinite loops.
    102   SmallPtrSet<BasicBlock*,4> visited;
    103   visited.insert(exnBlock);
    104 
    105   do {
    106     // We're not going to apply this hack to anything more complicated
    107     // than a series of unconditional branches, so if the block
    108     // doesn't terminate in an unconditional branch, just fail.  More
    109     // complicated cases can arise when, say, sinking a call into a
    110     // split unwind edge and then inlining it; but that can do almost
    111     // *anything* to the CFG, including leaving the selector
    112     // completely unreachable.  The only way to fix that properly is
    113     // to (1) prohibit transforms which move the exception or selector
    114     // values away from the landing pad, e.g. by producing them with
    115     // instructions that are pinned to an edge like a phi, or
    116     // producing them with not-really-instructions, and (2) making
    117     // transforms which split edges deal with that.
    118     BranchInst *branch = dyn_cast<BranchInst>(&exnBlock->back());
    119     if (!branch || branch->isConditional()) return 0;
    120 
    121     BasicBlock *successor = branch->getSuccessor(0);
    122 
    123     // Fail if we found an infinite loop.
    124     if (!visited.insert(successor)) return 0;
    125 
    126     // If the successor isn't dominated by exnBlock:
    127     if (!successor->getSinglePredecessor()) {
    128       // We don't want to have to deal with threading the exception
    129       // through multiple levels of phi, so give up if we've already
    130       // followed a non-dominating edge.
    131       if (!dominates) return 0;
    132 
    133       // Otherwise, remember this as a non-dominating edge.
    134       dominates = false;
    135       nonDominated = successor;
    136       lastDominated = exnBlock;
    137     }
    138 
    139     exnBlock = successor;
    140 
    141     // Can we stop here?
    142     exn = findExceptionInBlock(exnBlock);
    143   } while (!exn);
    144 
    145   // Look for a selector call for the exception we found.
    146   EHSelectorInst *selector = findSelectorForException(exn);
    147   if (!selector) return 0;
    148 
    149   // The easy case is when the landing pad still dominates the
    150   // exception call, in which case we can just move both calls back to
    151   // the landing pad.
    152   if (dominates) {
    153     selector->moveBefore(lpad->getFirstNonPHI());
    154     exn->moveBefore(selector);
    155     return selector;
    156   }
    157 
    158   // Otherwise, we have to split at the first non-dominating block.
    159   // The CFG looks basically like this:
    160   //    lpad:
    161   //      phis_0
    162   //      insnsAndBranches_1
    163   //      br label %nonDominated
    164   //    nonDominated:
    165   //      phis_2
    166   //      insns_3
    167   //      %exn = call i8* @llvm.eh.exception()
    168   //      insnsAndBranches_4
    169   //      %selector = call @llvm.eh.selector(i8* %exn, ...
    170   // We need to turn this into:
    171   //    lpad:
    172   //      phis_0
    173   //      %exn0 = call i8* @llvm.eh.exception()
    174   //      %selector0 = call @llvm.eh.selector(i8* %exn0, ...
    175   //      insnsAndBranches_1
    176   //      br label %split // from lastDominated
    177   //    nonDominated:
    178   //      phis_2 (without edge from lastDominated)
    179   //      %exn1 = call i8* @llvm.eh.exception()
    180   //      %selector1 = call i8* @llvm.eh.selector(i8* %exn1, ...
    181   //      br label %split
    182   //    split:
    183   //      phis_2 (edge from lastDominated, edge from split)
    184   //      %exn = phi ...
    185   //      %selector = phi ...
    186   //      insns_3
    187   //      insnsAndBranches_4
    188 
    189   assert(nonDominated);
    190   assert(lastDominated);
    191 
    192   // First, make clones of the intrinsics to go in lpad.
    193   EHExceptionInst *lpadExn = cast<EHExceptionInst>(exn->clone());
    194   EHSelectorInst *lpadSelector = cast<EHSelectorInst>(selector->clone());
    195   lpadSelector->setArgOperand(0, lpadExn);
    196   lpadSelector->insertBefore(lpad->getFirstNonPHI());
    197   lpadExn->insertBefore(lpadSelector);
    198 
    199   // Split the non-dominated block.
    200   BasicBlock *split =
    201     nonDominated->splitBasicBlock(nonDominated->getFirstNonPHI(),
    202                                   nonDominated->getName() + ".lpad-fix");
    203 
    204   // Redirect the last dominated branch there.
    205   cast<BranchInst>(lastDominated->back()).setSuccessor(0, split);
    206 
    207   // Move the existing intrinsics to the end of the old block.
    208   selector->moveBefore(&nonDominated->back());
    209   exn->moveBefore(selector);
    210 
    211   Instruction *splitIP = &split->front();
    212 
    213   // For all the phis in nonDominated, make a new phi in split to join
    214   // that phi with the edge from lastDominated.
    215   for (BasicBlock::iterator
    216          i = nonDominated->begin(), e = nonDominated->end(); i != e; ++i) {
    217     PHINode *phi = dyn_cast<PHINode>(i);
    218     if (!phi) break;
    219 
    220     PHINode *splitPhi = PHINode::Create(phi->getType(), 2, phi->getName(),
    221                                         splitIP);
    222     phi->replaceAllUsesWith(splitPhi);
    223     splitPhi->addIncoming(phi, nonDominated);
    224     splitPhi->addIncoming(phi->removeIncomingValue(lastDominated),
    225                           lastDominated);
    226   }
    227 
    228   // Make new phis for the exception and selector.
    229   PHINode *exnPhi = PHINode::Create(exn->getType(), 2, "", splitIP);
    230   exn->replaceAllUsesWith(exnPhi);
    231   selector->setArgOperand(0, exn); // except for this use
    232   exnPhi->addIncoming(exn, nonDominated);
    233   exnPhi->addIncoming(lpadExn, lastDominated);
    234 
    235   PHINode *selectorPhi = PHINode::Create(selector->getType(), 2, "", splitIP);
    236   selector->replaceAllUsesWith(selectorPhi);
    237   selectorPhi->addIncoming(selector, nonDominated);
    238   selectorPhi->addIncoming(lpadSelector, lastDominated);
    239 
    240   return lpadSelector;
    241 }
    242 
    243 namespace {
    244   /// A class for recording information about inlining through an invoke.
    245   class InvokeInliningInfo {
    246     BasicBlock *OuterUnwindDest;
    247     EHSelectorInst *OuterSelector;
    248     BasicBlock *InnerUnwindDest;
    249     PHINode *InnerExceptionPHI;
    250     PHINode *InnerSelectorPHI;
    251     SmallVector<Value*, 8> UnwindDestPHIValues;
    252 
    253   public:
    254     InvokeInliningInfo(InvokeInst *II) :
    255       OuterUnwindDest(II->getUnwindDest()), OuterSelector(0),
    256       InnerUnwindDest(0), InnerExceptionPHI(0), InnerSelectorPHI(0) {
    257 
    258       // If there are PHI nodes in the unwind destination block, we
    259       // need to keep track of which values came into them from the
    260       // invoke before removing the edge from this block.
    261       llvm::BasicBlock *invokeBB = II->getParent();
    262       for (BasicBlock::iterator I = OuterUnwindDest->begin();
    263              isa<PHINode>(I); ++I) {
    264         // Save the value to use for this edge.
    265         PHINode *phi = cast<PHINode>(I);
    266         UnwindDestPHIValues.push_back(phi->getIncomingValueForBlock(invokeBB));
    267       }
    268     }
    269 
    270     /// The outer unwind destination is the target of unwind edges
    271     /// introduced for calls within the inlined function.
    272     BasicBlock *getOuterUnwindDest() const {
    273       return OuterUnwindDest;
    274     }
    275 
    276     EHSelectorInst *getOuterSelector() {
    277       if (!OuterSelector)
    278         OuterSelector = findSelectorForLandingPad(OuterUnwindDest);
    279       return OuterSelector;
    280     }
    281 
    282     BasicBlock *getInnerUnwindDest();
    283 
    284     bool forwardEHResume(CallInst *call, BasicBlock *src);
    285 
    286     /// Add incoming-PHI values to the unwind destination block for
    287     /// the given basic block, using the values for the original
    288     /// invoke's source block.
    289     void addIncomingPHIValuesFor(BasicBlock *BB) const {
    290       addIncomingPHIValuesForInto(BB, OuterUnwindDest);
    291     }
    292 
    293     void addIncomingPHIValuesForInto(BasicBlock *src, BasicBlock *dest) const {
    294       BasicBlock::iterator I = dest->begin();
    295       for (unsigned i = 0, e = UnwindDestPHIValues.size(); i != e; ++i, ++I) {
    296         PHINode *phi = cast<PHINode>(I);
    297         phi->addIncoming(UnwindDestPHIValues[i], src);
    298       }
    299     }
    300   };
    301 }
    302 
    303 /// Get or create a target for the branch out of rewritten calls to
    304 /// llvm.eh.resume.
    305 BasicBlock *InvokeInliningInfo::getInnerUnwindDest() {
    306   if (InnerUnwindDest) return InnerUnwindDest;
    307 
    308   // Find and hoist the llvm.eh.exception and llvm.eh.selector calls
    309   // in the outer landing pad to immediately following the phis.
    310   EHSelectorInst *selector = getOuterSelector();
    311   if (!selector) return 0;
    312 
    313   // The call to llvm.eh.exception *must* be in the landing pad.
    314   Instruction *exn = cast<Instruction>(selector->getArgOperand(0));
    315   assert(exn->getParent() == OuterUnwindDest);
    316 
    317   // TODO: recognize when we've already done this, so that we don't
    318   // get a linear number of these when inlining calls into lots of
    319   // invokes with the same landing pad.
    320 
    321   // Do the hoisting.
    322   Instruction *splitPoint = exn->getParent()->getFirstNonPHI();
    323   assert(splitPoint != selector && "selector-on-exception dominance broken!");
    324   if (splitPoint == exn) {
    325     selector->removeFromParent();
    326     selector->insertAfter(exn);
    327     splitPoint = selector->getNextNode();
    328   } else {
    329     exn->moveBefore(splitPoint);
    330     selector->moveBefore(splitPoint);
    331   }
    332 
    333   // Split the landing pad.
    334   InnerUnwindDest = OuterUnwindDest->splitBasicBlock(splitPoint,
    335                                         OuterUnwindDest->getName() + ".body");
    336 
    337   // The number of incoming edges we expect to the inner landing pad.
    338   const unsigned phiCapacity = 2;
    339 
    340   // Create corresponding new phis for all the phis in the outer landing pad.
    341   BasicBlock::iterator insertPoint = InnerUnwindDest->begin();
    342   BasicBlock::iterator I = OuterUnwindDest->begin();
    343   for (unsigned i = 0, e = UnwindDestPHIValues.size(); i != e; ++i, ++I) {
    344     PHINode *outerPhi = cast<PHINode>(I);
    345     PHINode *innerPhi = PHINode::Create(outerPhi->getType(), phiCapacity,
    346                                         outerPhi->getName() + ".lpad-body",
    347                                         insertPoint);
    348     outerPhi->replaceAllUsesWith(innerPhi);
    349     innerPhi->addIncoming(outerPhi, OuterUnwindDest);
    350   }
    351 
    352   // Create a phi for the exception value...
    353   InnerExceptionPHI = PHINode::Create(exn->getType(), phiCapacity,
    354                                       "exn.lpad-body", insertPoint);
    355   exn->replaceAllUsesWith(InnerExceptionPHI);
    356   selector->setArgOperand(0, exn); // restore this use
    357   InnerExceptionPHI->addIncoming(exn, OuterUnwindDest);
    358 
    359   // ...and the selector.
    360   InnerSelectorPHI = PHINode::Create(selector->getType(), phiCapacity,
    361                                      "selector.lpad-body", insertPoint);
    362   selector->replaceAllUsesWith(InnerSelectorPHI);
    363   InnerSelectorPHI->addIncoming(selector, OuterUnwindDest);
    364 
    365   // All done.
    366   return InnerUnwindDest;
    367 }
    368 
    369 /// [LIBUNWIND] Try to forward the given call, which logically occurs
    370 /// at the end of the given block, as a branch to the inner unwind
    371 /// block.  Returns true if the call was forwarded.
    372 bool InvokeInliningInfo::forwardEHResume(CallInst *call, BasicBlock *src) {
    373   // First, check whether this is a call to the intrinsic.
    374   Function *fn = dyn_cast<Function>(call->getCalledValue());
    375   if (!fn || fn->getName() != "llvm.eh.resume")
    376     return false;
    377 
    378   // At this point, we need to return true on all paths, because
    379   // otherwise we'll construct an invoke of the intrinsic, which is
    380   // not well-formed.
    381 
    382   // Try to find or make an inner unwind dest, which will fail if we
    383   // can't find a selector call for the outer unwind dest.
    384   BasicBlock *dest = getInnerUnwindDest();
    385   bool hasSelector = (dest != 0);
    386 
    387   // If we failed, just use the outer unwind dest, dropping the
    388   // exception and selector on the floor.
    389   if (!hasSelector)
    390     dest = OuterUnwindDest;
    391 
    392   // Make a branch.
    393   BranchInst::Create(dest, src);
    394 
    395   // Update the phis in the destination.  They were inserted in an
    396   // order which makes this work.
    397   addIncomingPHIValuesForInto(src, dest);
    398 
    399   if (hasSelector) {
    400     InnerExceptionPHI->addIncoming(call->getArgOperand(0), src);
    401     InnerSelectorPHI->addIncoming(call->getArgOperand(1), src);
    402   }
    403 
    404   return true;
    405 }
    406 
    407 /// [LIBUNWIND] Check whether this selector is "only cleanups":
    408 ///   call i32 @llvm.eh.selector(blah, blah, i32 0)
    409 static bool isCleanupOnlySelector(EHSelectorInst *selector) {
    410   if (selector->getNumArgOperands() != 3) return false;
    411   ConstantInt *val = dyn_cast<ConstantInt>(selector->getArgOperand(2));
    412   return (val && val->isZero());
    413 }
    414 
    415 /// HandleCallsInBlockInlinedThroughInvoke - When we inline a basic block into
    416 /// an invoke, we have to turn all of the calls that can throw into
    417 /// invokes.  This function analyze BB to see if there are any calls, and if so,
    418 /// it rewrites them to be invokes that jump to InvokeDest and fills in the PHI
    419 /// nodes in that block with the values specified in InvokeDestPHIValues.
    420 ///
    421 /// Returns true to indicate that the next block should be skipped.
    422 static bool HandleCallsInBlockInlinedThroughInvoke(BasicBlock *BB,
    423                                                    InvokeInliningInfo &Invoke) {
    424   for (BasicBlock::iterator BBI = BB->begin(), E = BB->end(); BBI != E; ) {
    425     Instruction *I = BBI++;
    426 
    427     // We only need to check for function calls: inlined invoke
    428     // instructions require no special handling.
    429     CallInst *CI = dyn_cast<CallInst>(I);
    430     if (CI == 0) continue;
    431 
    432     // LIBUNWIND: merge selector instructions.
    433     if (EHSelectorInst *Inner = dyn_cast<EHSelectorInst>(CI)) {
    434       EHSelectorInst *Outer = Invoke.getOuterSelector();
    435       if (!Outer) continue;
    436 
    437       bool innerIsOnlyCleanup = isCleanupOnlySelector(Inner);
    438       bool outerIsOnlyCleanup = isCleanupOnlySelector(Outer);
    439 
    440       // If both selectors contain only cleanups, we don't need to do
    441       // anything.  TODO: this is really just a very specific instance
    442       // of a much more general optimization.
    443       if (innerIsOnlyCleanup && outerIsOnlyCleanup) continue;
    444 
    445       // Otherwise, we just append the outer selector to the inner selector.
    446       SmallVector<Value*, 16> NewSelector;
    447       for (unsigned i = 0, e = Inner->getNumArgOperands(); i != e; ++i)
    448         NewSelector.push_back(Inner->getArgOperand(i));
    449       for (unsigned i = 2, e = Outer->getNumArgOperands(); i != e; ++i)
    450         NewSelector.push_back(Outer->getArgOperand(i));
    451 
    452       CallInst *NewInner =
    453         IRBuilder<>(Inner).CreateCall(Inner->getCalledValue(), NewSelector);
    454       // No need to copy attributes, calling convention, etc.
    455       NewInner->takeName(Inner);
    456       Inner->replaceAllUsesWith(NewInner);
    457       Inner->eraseFromParent();
    458       continue;
    459     }
    460 
    461     // If this call cannot unwind, don't convert it to an invoke.
    462     if (CI->doesNotThrow())
    463       continue;
    464 
    465     // Convert this function call into an invoke instruction.
    466     // First, split the basic block.
    467     BasicBlock *Split = BB->splitBasicBlock(CI, CI->getName()+".noexc");
    468 
    469     // Delete the unconditional branch inserted by splitBasicBlock
    470     BB->getInstList().pop_back();
    471 
    472     // LIBUNWIND: If this is a call to @llvm.eh.resume, just branch
    473     // directly to the new landing pad.
    474     if (Invoke.forwardEHResume(CI, BB)) {
    475       // TODO: 'Split' is now unreachable; clean it up.
    476 
    477       // We want to leave the original call intact so that the call
    478       // graph and other structures won't get misled.  We also have to
    479       // avoid processing the next block, or we'll iterate here forever.
    480       return true;
    481     }
    482 
    483     // Otherwise, create the new invoke instruction.
    484     ImmutableCallSite CS(CI);
    485     SmallVector<Value*, 8> InvokeArgs(CS.arg_begin(), CS.arg_end());
    486     InvokeInst *II =
    487       InvokeInst::Create(CI->getCalledValue(), Split,
    488                          Invoke.getOuterUnwindDest(),
    489                          InvokeArgs, CI->getName(), BB);
    490     II->setCallingConv(CI->getCallingConv());
    491     II->setAttributes(CI->getAttributes());
    492 
    493     // Make sure that anything using the call now uses the invoke!  This also
    494     // updates the CallGraph if present, because it uses a WeakVH.
    495     CI->replaceAllUsesWith(II);
    496 
    497     Split->getInstList().pop_front();  // Delete the original call
    498 
    499     // Update any PHI nodes in the exceptional block to indicate that
    500     // there is now a new entry in them.
    501     Invoke.addIncomingPHIValuesFor(BB);
    502     return false;
    503   }
    504 
    505   return false;
    506 }
    507 
    508 
    509 /// HandleInlinedInvoke - If we inlined an invoke site, we need to convert calls
    510 /// in the body of the inlined function into invokes and turn unwind
    511 /// instructions into branches to the invoke unwind dest.
    512 ///
    513 /// II is the invoke instruction being inlined.  FirstNewBlock is the first
    514 /// block of the inlined code (the last block is the end of the function),
    515 /// and InlineCodeInfo is information about the code that got inlined.
    516 static void HandleInlinedInvoke(InvokeInst *II, BasicBlock *FirstNewBlock,
    517                                 ClonedCodeInfo &InlinedCodeInfo) {
    518   BasicBlock *InvokeDest = II->getUnwindDest();
    519 
    520   Function *Caller = FirstNewBlock->getParent();
    521 
    522   // The inlined code is currently at the end of the function, scan from the
    523   // start of the inlined code to its end, checking for stuff we need to
    524   // rewrite.  If the code doesn't have calls or unwinds, we know there is
    525   // nothing to rewrite.
    526   if (!InlinedCodeInfo.ContainsCalls && !InlinedCodeInfo.ContainsUnwinds) {
    527     // Now that everything is happy, we have one final detail.  The PHI nodes in
    528     // the exception destination block still have entries due to the original
    529     // invoke instruction.  Eliminate these entries (which might even delete the
    530     // PHI node) now.
    531     InvokeDest->removePredecessor(II->getParent());
    532     return;
    533   }
    534 
    535   InvokeInliningInfo Invoke(II);
    536 
    537   for (Function::iterator BB = FirstNewBlock, E = Caller->end(); BB != E; ++BB){
    538     if (InlinedCodeInfo.ContainsCalls)
    539       if (HandleCallsInBlockInlinedThroughInvoke(BB, Invoke)) {
    540         // Honor a request to skip the next block.  We don't need to
    541         // consider UnwindInsts in this case either.
    542         ++BB;
    543         continue;
    544       }
    545 
    546     if (UnwindInst *UI = dyn_cast<UnwindInst>(BB->getTerminator())) {
    547       // An UnwindInst requires special handling when it gets inlined into an
    548       // invoke site.  Once this happens, we know that the unwind would cause
    549       // a control transfer to the invoke exception destination, so we can
    550       // transform it into a direct branch to the exception destination.
    551       BranchInst::Create(InvokeDest, UI);
    552 
    553       // Delete the unwind instruction!
    554       UI->eraseFromParent();
    555 
    556       // Update any PHI nodes in the exceptional block to indicate that
    557       // there is now a new entry in them.
    558       Invoke.addIncomingPHIValuesFor(BB);
    559     }
    560   }
    561 
    562   // Now that everything is happy, we have one final detail.  The PHI nodes in
    563   // the exception destination block still have entries due to the original
    564   // invoke instruction.  Eliminate these entries (which might even delete the
    565   // PHI node) now.
    566   InvokeDest->removePredecessor(II->getParent());
    567 }
    568 
    569 /// UpdateCallGraphAfterInlining - Once we have cloned code over from a callee
    570 /// into the caller, update the specified callgraph to reflect the changes we
    571 /// made.  Note that it's possible that not all code was copied over, so only
    572 /// some edges of the callgraph may remain.
    573 static void UpdateCallGraphAfterInlining(CallSite CS,
    574                                          Function::iterator FirstNewBlock,
    575                                          ValueToValueMapTy &VMap,
    576                                          InlineFunctionInfo &IFI) {
    577   CallGraph &CG = *IFI.CG;
    578   const Function *Caller = CS.getInstruction()->getParent()->getParent();
    579   const Function *Callee = CS.getCalledFunction();
    580   CallGraphNode *CalleeNode = CG[Callee];
    581   CallGraphNode *CallerNode = CG[Caller];
    582 
    583   // Since we inlined some uninlined call sites in the callee into the caller,
    584   // add edges from the caller to all of the callees of the callee.
    585   CallGraphNode::iterator I = CalleeNode->begin(), E = CalleeNode->end();
    586 
    587   // Consider the case where CalleeNode == CallerNode.
    588   CallGraphNode::CalledFunctionsVector CallCache;
    589   if (CalleeNode == CallerNode) {
    590     CallCache.assign(I, E);
    591     I = CallCache.begin();
    592     E = CallCache.end();
    593   }
    594 
    595   for (; I != E; ++I) {
    596     const Value *OrigCall = I->first;
    597 
    598     ValueToValueMapTy::iterator VMI = VMap.find(OrigCall);
    599     // Only copy the edge if the call was inlined!
    600     if (VMI == VMap.end() || VMI->second == 0)
    601       continue;
    602 
    603     // If the call was inlined, but then constant folded, there is no edge to
    604     // add.  Check for this case.
    605     Instruction *NewCall = dyn_cast<Instruction>(VMI->second);
    606     if (NewCall == 0) continue;
    607 
    608     // Remember that this call site got inlined for the client of
    609     // InlineFunction.
    610     IFI.InlinedCalls.push_back(NewCall);
    611 
    612     // It's possible that inlining the callsite will cause it to go from an
    613     // indirect to a direct call by resolving a function pointer.  If this
    614     // happens, set the callee of the new call site to a more precise
    615     // destination.  This can also happen if the call graph node of the caller
    616     // was just unnecessarily imprecise.
    617     if (I->second->getFunction() == 0)
    618       if (Function *F = CallSite(NewCall).getCalledFunction()) {
    619         // Indirect call site resolved to direct call.
    620         CallerNode->addCalledFunction(CallSite(NewCall), CG[F]);
    621 
    622         continue;
    623       }
    624 
    625     CallerNode->addCalledFunction(CallSite(NewCall), I->second);
    626   }
    627 
    628   // Update the call graph by deleting the edge from Callee to Caller.  We must
    629   // do this after the loop above in case Caller and Callee are the same.
    630   CallerNode->removeCallEdgeFor(CS);
    631 }
    632 
    633 /// HandleByValArgument - When inlining a call site that has a byval argument,
    634 /// we have to make the implicit memcpy explicit by adding it.
    635 static Value *HandleByValArgument(Value *Arg, Instruction *TheCall,
    636                                   const Function *CalledFunc,
    637                                   InlineFunctionInfo &IFI,
    638                                   unsigned ByValAlignment) {
    639   Type *AggTy = cast<PointerType>(Arg->getType())->getElementType();
    640 
    641   // If the called function is readonly, then it could not mutate the caller's
    642   // copy of the byval'd memory.  In this case, it is safe to elide the copy and
    643   // temporary.
    644   if (CalledFunc->onlyReadsMemory()) {
    645     // If the byval argument has a specified alignment that is greater than the
    646     // passed in pointer, then we either have to round up the input pointer or
    647     // give up on this transformation.
    648     if (ByValAlignment <= 1)  // 0 = unspecified, 1 = no particular alignment.
    649       return Arg;
    650 
    651     // If the pointer is already known to be sufficiently aligned, or if we can
    652     // round it up to a larger alignment, then we don't need a temporary.
    653     if (getOrEnforceKnownAlignment(Arg, ByValAlignment,
    654                                    IFI.TD) >= ByValAlignment)
    655       return Arg;
    656 
    657     // Otherwise, we have to make a memcpy to get a safe alignment.  This is bad
    658     // for code quality, but rarely happens and is required for correctness.
    659   }
    660 
    661   LLVMContext &Context = Arg->getContext();
    662 
    663   Type *VoidPtrTy = Type::getInt8PtrTy(Context);
    664 
    665   // Create the alloca.  If we have TargetData, use nice alignment.
    666   unsigned Align = 1;
    667   if (IFI.TD)
    668     Align = IFI.TD->getPrefTypeAlignment(AggTy);
    669 
    670   // If the byval had an alignment specified, we *must* use at least that
    671   // alignment, as it is required by the byval argument (and uses of the
    672   // pointer inside the callee).
    673   Align = std::max(Align, ByValAlignment);
    674 
    675   Function *Caller = TheCall->getParent()->getParent();
    676 
    677   Value *NewAlloca = new AllocaInst(AggTy, 0, Align, Arg->getName(),
    678                                     &*Caller->begin()->begin());
    679   // Emit a memcpy.
    680   Type *Tys[3] = {VoidPtrTy, VoidPtrTy, Type::getInt64Ty(Context)};
    681   Function *MemCpyFn = Intrinsic::getDeclaration(Caller->getParent(),
    682                                                  Intrinsic::memcpy,
    683                                                  Tys);
    684   Value *DestCast = new BitCastInst(NewAlloca, VoidPtrTy, "tmp", TheCall);
    685   Value *SrcCast = new BitCastInst(Arg, VoidPtrTy, "tmp", TheCall);
    686 
    687   Value *Size;
    688   if (IFI.TD == 0)
    689     Size = ConstantExpr::getSizeOf(AggTy);
    690   else
    691     Size = ConstantInt::get(Type::getInt64Ty(Context),
    692                             IFI.TD->getTypeStoreSize(AggTy));
    693 
    694   // Always generate a memcpy of alignment 1 here because we don't know
    695   // the alignment of the src pointer.  Other optimizations can infer
    696   // better alignment.
    697   Value *CallArgs[] = {
    698     DestCast, SrcCast, Size,
    699     ConstantInt::get(Type::getInt32Ty(Context), 1),
    700     ConstantInt::getFalse(Context) // isVolatile
    701   };
    702   IRBuilder<>(TheCall).CreateCall(MemCpyFn, CallArgs);
    703 
    704   // Uses of the argument in the function should use our new alloca
    705   // instead.
    706   return NewAlloca;
    707 }
    708 
    709 // isUsedByLifetimeMarker - Check whether this Value is used by a lifetime
    710 // intrinsic.
    711 static bool isUsedByLifetimeMarker(Value *V) {
    712   for (Value::use_iterator UI = V->use_begin(), UE = V->use_end(); UI != UE;
    713        ++UI) {
    714     if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(*UI)) {
    715       switch (II->getIntrinsicID()) {
    716       default: break;
    717       case Intrinsic::lifetime_start:
    718       case Intrinsic::lifetime_end:
    719         return true;
    720       }
    721     }
    722   }
    723   return false;
    724 }
    725 
    726 // hasLifetimeMarkers - Check whether the given alloca already has
    727 // lifetime.start or lifetime.end intrinsics.
    728 static bool hasLifetimeMarkers(AllocaInst *AI) {
    729   Type *Int8PtrTy = Type::getInt8PtrTy(AI->getType()->getContext());
    730   if (AI->getType() == Int8PtrTy)
    731     return isUsedByLifetimeMarker(AI);
    732 
    733   // Do a scan to find all the casts to i8*.
    734   for (Value::use_iterator I = AI->use_begin(), E = AI->use_end(); I != E;
    735        ++I) {
    736     if (I->getType() != Int8PtrTy) continue;
    737     if (I->stripPointerCasts() != AI) continue;
    738     if (isUsedByLifetimeMarker(*I))
    739       return true;
    740   }
    741   return false;
    742 }
    743 
    744 /// updateInlinedAtInfo - Helper function used by fixupLineNumbers to recursively
    745 /// update InlinedAtEntry of a DebugLoc.
    746 static DebugLoc updateInlinedAtInfo(const DebugLoc &DL,
    747                                     const DebugLoc &InlinedAtDL,
    748                                     LLVMContext &Ctx) {
    749   if (MDNode *IA = DL.getInlinedAt(Ctx)) {
    750     DebugLoc NewInlinedAtDL
    751       = updateInlinedAtInfo(DebugLoc::getFromDILocation(IA), InlinedAtDL, Ctx);
    752     return DebugLoc::get(DL.getLine(), DL.getCol(), DL.getScope(Ctx),
    753                          NewInlinedAtDL.getAsMDNode(Ctx));
    754   }
    755 
    756   return DebugLoc::get(DL.getLine(), DL.getCol(), DL.getScope(Ctx),
    757                        InlinedAtDL.getAsMDNode(Ctx));
    758 }
    759 
    760 
    761 /// fixupLineNumbers - Update inlined instructions' line numbers to
    762 /// to encode location where these instructions are inlined.
    763 static void fixupLineNumbers(Function *Fn, Function::iterator FI,
    764                               Instruction *TheCall) {
    765   DebugLoc TheCallDL = TheCall->getDebugLoc();
    766   if (TheCallDL.isUnknown())
    767     return;
    768 
    769   for (; FI != Fn->end(); ++FI) {
    770     for (BasicBlock::iterator BI = FI->begin(), BE = FI->end();
    771          BI != BE; ++BI) {
    772       DebugLoc DL = BI->getDebugLoc();
    773       if (!DL.isUnknown()) {
    774         BI->setDebugLoc(updateInlinedAtInfo(DL, TheCallDL, BI->getContext()));
    775         if (DbgValueInst *DVI = dyn_cast<DbgValueInst>(BI)) {
    776           LLVMContext &Ctx = BI->getContext();
    777           MDNode *InlinedAt = BI->getDebugLoc().getInlinedAt(Ctx);
    778           DVI->setOperand(2, createInlinedVariable(DVI->getVariable(),
    779                                                    InlinedAt, Ctx));
    780         }
    781       }
    782     }
    783   }
    784 }
    785 
    786 // InlineFunction - This function inlines the called function into the basic
    787 // block of the caller.  This returns false if it is not possible to inline this
    788 // call.  The program is still in a well defined state if this occurs though.
    789 //
    790 // Note that this only does one level of inlining.  For example, if the
    791 // instruction 'call B' is inlined, and 'B' calls 'C', then the call to 'C' now
    792 // exists in the instruction stream.  Similarly this will inline a recursive
    793 // function by one level.
    794 //
    795 bool llvm::InlineFunction(CallSite CS, InlineFunctionInfo &IFI) {
    796   Instruction *TheCall = CS.getInstruction();
    797   LLVMContext &Context = TheCall->getContext();
    798   assert(TheCall->getParent() && TheCall->getParent()->getParent() &&
    799          "Instruction not in function!");
    800 
    801   // If IFI has any state in it, zap it before we fill it in.
    802   IFI.reset();
    803 
    804   const Function *CalledFunc = CS.getCalledFunction();
    805   if (CalledFunc == 0 ||          // Can't inline external function or indirect
    806       CalledFunc->isDeclaration() || // call, or call to a vararg function!
    807       CalledFunc->getFunctionType()->isVarArg()) return false;
    808 
    809   // If the call to the callee is not a tail call, we must clear the 'tail'
    810   // flags on any calls that we inline.
    811   bool MustClearTailCallFlags =
    812     !(isa<CallInst>(TheCall) && cast<CallInst>(TheCall)->isTailCall());
    813 
    814   // If the call to the callee cannot throw, set the 'nounwind' flag on any
    815   // calls that we inline.
    816   bool MarkNoUnwind = CS.doesNotThrow();
    817 
    818   BasicBlock *OrigBB = TheCall->getParent();
    819   Function *Caller = OrigBB->getParent();
    820 
    821   // GC poses two hazards to inlining, which only occur when the callee has GC:
    822   //  1. If the caller has no GC, then the callee's GC must be propagated to the
    823   //     caller.
    824   //  2. If the caller has a differing GC, it is invalid to inline.
    825   if (CalledFunc->hasGC()) {
    826     if (!Caller->hasGC())
    827       Caller->setGC(CalledFunc->getGC());
    828     else if (CalledFunc->getGC() != Caller->getGC())
    829       return false;
    830   }
    831 
    832   // Get an iterator to the last basic block in the function, which will have
    833   // the new function inlined after it.
    834   //
    835   Function::iterator LastBlock = &Caller->back();
    836 
    837   // Make sure to capture all of the return instructions from the cloned
    838   // function.
    839   SmallVector<ReturnInst*, 8> Returns;
    840   ClonedCodeInfo InlinedFunctionInfo;
    841   Function::iterator FirstNewBlock;
    842 
    843   { // Scope to destroy VMap after cloning.
    844     ValueToValueMapTy VMap;
    845 
    846     assert(CalledFunc->arg_size() == CS.arg_size() &&
    847            "No varargs calls can be inlined!");
    848 
    849     // Calculate the vector of arguments to pass into the function cloner, which
    850     // matches up the formal to the actual argument values.
    851     CallSite::arg_iterator AI = CS.arg_begin();
    852     unsigned ArgNo = 0;
    853     for (Function::const_arg_iterator I = CalledFunc->arg_begin(),
    854          E = CalledFunc->arg_end(); I != E; ++I, ++AI, ++ArgNo) {
    855       Value *ActualArg = *AI;
    856 
    857       // When byval arguments actually inlined, we need to make the copy implied
    858       // by them explicit.  However, we don't do this if the callee is readonly
    859       // or readnone, because the copy would be unneeded: the callee doesn't
    860       // modify the struct.
    861       if (CalledFunc->paramHasAttr(ArgNo+1, Attribute::ByVal)) {
    862         ActualArg = HandleByValArgument(ActualArg, TheCall, CalledFunc, IFI,
    863                                         CalledFunc->getParamAlignment(ArgNo+1));
    864 
    865         // Calls that we inline may use the new alloca, so we need to clear
    866         // their 'tail' flags if HandleByValArgument introduced a new alloca and
    867         // the callee has calls.
    868         MustClearTailCallFlags |= ActualArg != *AI;
    869       }
    870 
    871       VMap[I] = ActualArg;
    872     }
    873 
    874     // We want the inliner to prune the code as it copies.  We would LOVE to
    875     // have no dead or constant instructions leftover after inlining occurs
    876     // (which can happen, e.g., because an argument was constant), but we'll be
    877     // happy with whatever the cloner can do.
    878     CloneAndPruneFunctionInto(Caller, CalledFunc, VMap,
    879                               /*ModuleLevelChanges=*/false, Returns, ".i",
    880                               &InlinedFunctionInfo, IFI.TD, TheCall);
    881 
    882     // Remember the first block that is newly cloned over.
    883     FirstNewBlock = LastBlock; ++FirstNewBlock;
    884 
    885     // Update the callgraph if requested.
    886     if (IFI.CG)
    887       UpdateCallGraphAfterInlining(CS, FirstNewBlock, VMap, IFI);
    888 
    889     // Update inlined instructions' line number information.
    890     fixupLineNumbers(Caller, FirstNewBlock, TheCall);
    891   }
    892 
    893   // If there are any alloca instructions in the block that used to be the entry
    894   // block for the callee, move them to the entry block of the caller.  First
    895   // calculate which instruction they should be inserted before.  We insert the
    896   // instructions at the end of the current alloca list.
    897   //
    898   {
    899     BasicBlock::iterator InsertPoint = Caller->begin()->begin();
    900     for (BasicBlock::iterator I = FirstNewBlock->begin(),
    901          E = FirstNewBlock->end(); I != E; ) {
    902       AllocaInst *AI = dyn_cast<AllocaInst>(I++);
    903       if (AI == 0) continue;
    904 
    905       // If the alloca is now dead, remove it.  This often occurs due to code
    906       // specialization.
    907       if (AI->use_empty()) {
    908         AI->eraseFromParent();
    909         continue;
    910       }
    911 
    912       if (!isa<Constant>(AI->getArraySize()))
    913         continue;
    914 
    915       // Keep track of the static allocas that we inline into the caller.
    916       IFI.StaticAllocas.push_back(AI);
    917 
    918       // Scan for the block of allocas that we can move over, and move them
    919       // all at once.
    920       while (isa<AllocaInst>(I) &&
    921              isa<Constant>(cast<AllocaInst>(I)->getArraySize())) {
    922         IFI.StaticAllocas.push_back(cast<AllocaInst>(I));
    923         ++I;
    924       }
    925 
    926       // Transfer all of the allocas over in a block.  Using splice means
    927       // that the instructions aren't removed from the symbol table, then
    928       // reinserted.
    929       Caller->getEntryBlock().getInstList().splice(InsertPoint,
    930                                                    FirstNewBlock->getInstList(),
    931                                                    AI, I);
    932     }
    933   }
    934 
    935   // Leave lifetime markers for the static alloca's, scoping them to the
    936   // function we just inlined.
    937   if (!IFI.StaticAllocas.empty()) {
    938     IRBuilder<> builder(FirstNewBlock->begin());
    939     for (unsigned ai = 0, ae = IFI.StaticAllocas.size(); ai != ae; ++ai) {
    940       AllocaInst *AI = IFI.StaticAllocas[ai];
    941 
    942       // If the alloca is already scoped to something smaller than the whole
    943       // function then there's no need to add redundant, less accurate markers.
    944       if (hasLifetimeMarkers(AI))
    945         continue;
    946 
    947       builder.CreateLifetimeStart(AI);
    948       for (unsigned ri = 0, re = Returns.size(); ri != re; ++ri) {
    949         IRBuilder<> builder(Returns[ri]);
    950         builder.CreateLifetimeEnd(AI);
    951       }
    952     }
    953   }
    954 
    955   // If the inlined code contained dynamic alloca instructions, wrap the inlined
    956   // code with llvm.stacksave/llvm.stackrestore intrinsics.
    957   if (InlinedFunctionInfo.ContainsDynamicAllocas) {
    958     Module *M = Caller->getParent();
    959     // Get the two intrinsics we care about.
    960     Function *StackSave = Intrinsic::getDeclaration(M, Intrinsic::stacksave);
    961     Function *StackRestore=Intrinsic::getDeclaration(M,Intrinsic::stackrestore);
    962 
    963     // Insert the llvm.stacksave.
    964     CallInst *SavedPtr = IRBuilder<>(FirstNewBlock, FirstNewBlock->begin())
    965       .CreateCall(StackSave, "savedstack");
    966 
    967     // Insert a call to llvm.stackrestore before any return instructions in the
    968     // inlined function.
    969     for (unsigned i = 0, e = Returns.size(); i != e; ++i) {
    970       IRBuilder<>(Returns[i]).CreateCall(StackRestore, SavedPtr);
    971     }
    972 
    973     // Count the number of StackRestore calls we insert.
    974     unsigned NumStackRestores = Returns.size();
    975 
    976     // If we are inlining an invoke instruction, insert restores before each
    977     // unwind.  These unwinds will be rewritten into branches later.
    978     if (InlinedFunctionInfo.ContainsUnwinds && isa<InvokeInst>(TheCall)) {
    979       for (Function::iterator BB = FirstNewBlock, E = Caller->end();
    980            BB != E; ++BB)
    981         if (UnwindInst *UI = dyn_cast<UnwindInst>(BB->getTerminator())) {
    982           IRBuilder<>(UI).CreateCall(StackRestore, SavedPtr);
    983           ++NumStackRestores;
    984         }
    985     }
    986   }
    987 
    988   // If we are inlining tail call instruction through a call site that isn't
    989   // marked 'tail', we must remove the tail marker for any calls in the inlined
    990   // code.  Also, calls inlined through a 'nounwind' call site should be marked
    991   // 'nounwind'.
    992   if (InlinedFunctionInfo.ContainsCalls &&
    993       (MustClearTailCallFlags || MarkNoUnwind)) {
    994     for (Function::iterator BB = FirstNewBlock, E = Caller->end();
    995          BB != E; ++BB)
    996       for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I)
    997         if (CallInst *CI = dyn_cast<CallInst>(I)) {
    998           if (MustClearTailCallFlags)
    999             CI->setTailCall(false);
   1000           if (MarkNoUnwind)
   1001             CI->setDoesNotThrow();
   1002         }
   1003   }
   1004 
   1005   // If we are inlining through a 'nounwind' call site then any inlined 'unwind'
   1006   // instructions are unreachable.
   1007   if (InlinedFunctionInfo.ContainsUnwinds && MarkNoUnwind)
   1008     for (Function::iterator BB = FirstNewBlock, E = Caller->end();
   1009          BB != E; ++BB) {
   1010       TerminatorInst *Term = BB->getTerminator();
   1011       if (isa<UnwindInst>(Term)) {
   1012         new UnreachableInst(Context, Term);
   1013         BB->getInstList().erase(Term);
   1014       }
   1015     }
   1016 
   1017   // If we are inlining for an invoke instruction, we must make sure to rewrite
   1018   // any inlined 'unwind' instructions into branches to the invoke exception
   1019   // destination, and call instructions into invoke instructions.
   1020   if (InvokeInst *II = dyn_cast<InvokeInst>(TheCall))
   1021     HandleInlinedInvoke(II, FirstNewBlock, InlinedFunctionInfo);
   1022 
   1023   // If we cloned in _exactly one_ basic block, and if that block ends in a
   1024   // return instruction, we splice the body of the inlined callee directly into
   1025   // the calling basic block.
   1026   if (Returns.size() == 1 && std::distance(FirstNewBlock, Caller->end()) == 1) {
   1027     // Move all of the instructions right before the call.
   1028     OrigBB->getInstList().splice(TheCall, FirstNewBlock->getInstList(),
   1029                                  FirstNewBlock->begin(), FirstNewBlock->end());
   1030     // Remove the cloned basic block.
   1031     Caller->getBasicBlockList().pop_back();
   1032 
   1033     // If the call site was an invoke instruction, add a branch to the normal
   1034     // destination.
   1035     if (InvokeInst *II = dyn_cast<InvokeInst>(TheCall))
   1036       BranchInst::Create(II->getNormalDest(), TheCall);
   1037 
   1038     // If the return instruction returned a value, replace uses of the call with
   1039     // uses of the returned value.
   1040     if (!TheCall->use_empty()) {
   1041       ReturnInst *R = Returns[0];
   1042       if (TheCall == R->getReturnValue())
   1043         TheCall->replaceAllUsesWith(UndefValue::get(TheCall->getType()));
   1044       else
   1045         TheCall->replaceAllUsesWith(R->getReturnValue());
   1046     }
   1047     // Since we are now done with the Call/Invoke, we can delete it.
   1048     TheCall->eraseFromParent();
   1049 
   1050     // Since we are now done with the return instruction, delete it also.
   1051     Returns[0]->eraseFromParent();
   1052 
   1053     // We are now done with the inlining.
   1054     return true;
   1055   }
   1056 
   1057   // Otherwise, we have the normal case, of more than one block to inline or
   1058   // multiple return sites.
   1059 
   1060   // We want to clone the entire callee function into the hole between the
   1061   // "starter" and "ender" blocks.  How we accomplish this depends on whether
   1062   // this is an invoke instruction or a call instruction.
   1063   BasicBlock *AfterCallBB;
   1064   if (InvokeInst *II = dyn_cast<InvokeInst>(TheCall)) {
   1065 
   1066     // Add an unconditional branch to make this look like the CallInst case...
   1067     BranchInst *NewBr = BranchInst::Create(II->getNormalDest(), TheCall);
   1068 
   1069     // Split the basic block.  This guarantees that no PHI nodes will have to be
   1070     // updated due to new incoming edges, and make the invoke case more
   1071     // symmetric to the call case.
   1072     AfterCallBB = OrigBB->splitBasicBlock(NewBr,
   1073                                           CalledFunc->getName()+".exit");
   1074 
   1075   } else {  // It's a call
   1076     // If this is a call instruction, we need to split the basic block that
   1077     // the call lives in.
   1078     //
   1079     AfterCallBB = OrigBB->splitBasicBlock(TheCall,
   1080                                           CalledFunc->getName()+".exit");
   1081   }
   1082 
   1083   // Change the branch that used to go to AfterCallBB to branch to the first
   1084   // basic block of the inlined function.
   1085   //
   1086   TerminatorInst *Br = OrigBB->getTerminator();
   1087   assert(Br && Br->getOpcode() == Instruction::Br &&
   1088          "splitBasicBlock broken!");
   1089   Br->setOperand(0, FirstNewBlock);
   1090 
   1091 
   1092   // Now that the function is correct, make it a little bit nicer.  In
   1093   // particular, move the basic blocks inserted from the end of the function
   1094   // into the space made by splitting the source basic block.
   1095   Caller->getBasicBlockList().splice(AfterCallBB, Caller->getBasicBlockList(),
   1096                                      FirstNewBlock, Caller->end());
   1097 
   1098   // Handle all of the return instructions that we just cloned in, and eliminate
   1099   // any users of the original call/invoke instruction.
   1100   Type *RTy = CalledFunc->getReturnType();
   1101 
   1102   PHINode *PHI = 0;
   1103   if (Returns.size() > 1) {
   1104     // The PHI node should go at the front of the new basic block to merge all
   1105     // possible incoming values.
   1106     if (!TheCall->use_empty()) {
   1107       PHI = PHINode::Create(RTy, Returns.size(), TheCall->getName(),
   1108                             AfterCallBB->begin());
   1109       // Anything that used the result of the function call should now use the
   1110       // PHI node as their operand.
   1111       TheCall->replaceAllUsesWith(PHI);
   1112     }
   1113 
   1114     // Loop over all of the return instructions adding entries to the PHI node
   1115     // as appropriate.
   1116     if (PHI) {
   1117       for (unsigned i = 0, e = Returns.size(); i != e; ++i) {
   1118         ReturnInst *RI = Returns[i];
   1119         assert(RI->getReturnValue()->getType() == PHI->getType() &&
   1120                "Ret value not consistent in function!");
   1121         PHI->addIncoming(RI->getReturnValue(), RI->getParent());
   1122       }
   1123     }
   1124 
   1125 
   1126     // Add a branch to the merge points and remove return instructions.
   1127     for (unsigned i = 0, e = Returns.size(); i != e; ++i) {
   1128       ReturnInst *RI = Returns[i];
   1129       BranchInst::Create(AfterCallBB, RI);
   1130       RI->eraseFromParent();
   1131     }
   1132   } else if (!Returns.empty()) {
   1133     // Otherwise, if there is exactly one return value, just replace anything
   1134     // using the return value of the call with the computed value.
   1135     if (!TheCall->use_empty()) {
   1136       if (TheCall == Returns[0]->getReturnValue())
   1137         TheCall->replaceAllUsesWith(UndefValue::get(TheCall->getType()));
   1138       else
   1139         TheCall->replaceAllUsesWith(Returns[0]->getReturnValue());
   1140     }
   1141 
   1142     // Update PHI nodes that use the ReturnBB to use the AfterCallBB.
   1143     BasicBlock *ReturnBB = Returns[0]->getParent();
   1144     ReturnBB->replaceAllUsesWith(AfterCallBB);
   1145 
   1146     // Splice the code from the return block into the block that it will return
   1147     // to, which contains the code that was after the call.
   1148     AfterCallBB->getInstList().splice(AfterCallBB->begin(),
   1149                                       ReturnBB->getInstList());
   1150 
   1151     // Delete the return instruction now and empty ReturnBB now.
   1152     Returns[0]->eraseFromParent();
   1153     ReturnBB->eraseFromParent();
   1154   } else if (!TheCall->use_empty()) {
   1155     // No returns, but something is using the return value of the call.  Just
   1156     // nuke the result.
   1157     TheCall->replaceAllUsesWith(UndefValue::get(TheCall->getType()));
   1158   }
   1159 
   1160   // Since we are now done with the Call/Invoke, we can delete it.
   1161   TheCall->eraseFromParent();
   1162 
   1163   // We should always be able to fold the entry block of the function into the
   1164   // single predecessor of the block...
   1165   assert(cast<BranchInst>(Br)->isUnconditional() && "splitBasicBlock broken!");
   1166   BasicBlock *CalleeEntry = cast<BranchInst>(Br)->getSuccessor(0);
   1167 
   1168   // Splice the code entry block into calling block, right before the
   1169   // unconditional branch.
   1170   CalleeEntry->replaceAllUsesWith(OrigBB);  // Update PHI nodes
   1171   OrigBB->getInstList().splice(Br, CalleeEntry->getInstList());
   1172 
   1173   // Remove the unconditional branch.
   1174   OrigBB->getInstList().erase(Br);
   1175 
   1176   // Now we can remove the CalleeEntry block, which is now empty.
   1177   Caller->getBasicBlockList().erase(CalleeEntry);
   1178 
   1179   // If we inserted a phi node, check to see if it has a single value (e.g. all
   1180   // the entries are the same or undef).  If so, remove the PHI so it doesn't
   1181   // block other optimizations.
   1182   if (PHI)
   1183     if (Value *V = SimplifyInstruction(PHI, IFI.TD)) {
   1184       PHI->replaceAllUsesWith(V);
   1185       PHI->eraseFromParent();
   1186     }
   1187 
   1188   return true;
   1189 }
   1190