Commit 8920fde3 authored by Tanya Lattner's avatar Tanya Lattner
Browse files

Merge from mainline.

Revert r63600.

llvm-svn: 63787
parent 597ba6f9
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -41,8 +41,7 @@ bool llvm::InlineFunction(InvokeInst *II, CallGraph *CG, const TargetData *TD) {
/// block of the inlined code (the last block is the end of the function),
/// and InlineCodeInfo is information about the code that got inlined.
static void HandleInlinedInvoke(InvokeInst *II, BasicBlock *FirstNewBlock,
                                ClonedCodeInfo &InlinedCodeInfo,
                                CallGraph *CG) {
                                ClonedCodeInfo &InlinedCodeInfo) {
  BasicBlock *InvokeDest = II->getUnwindDest();
  std::vector<Value*> InvokeDestPHIValues;

@@ -94,10 +93,6 @@ static void HandleInlinedInvoke(InvokeInst *II, BasicBlock *FirstNewBlock,
          // Make sure that anything using the call now uses the invoke!
          CI->replaceAllUsesWith(II);

          // Update the callgraph.
          if (CG)
            (*CG)[Caller]->replaceCallSite(CI, II);

          // Delete the unconditional branch inserted by splitBasicBlock
          BB->getInstList().pop_back();
          Split->getInstList().pop_front();  // Delete the original call
@@ -438,7 +433,7 @@ bool llvm::InlineFunction(CallSite CS, CallGraph *CG, const TargetData *TD) {
  // any inlined 'unwind' instructions into branches to the invoke exception
  // destination, and call instructions into invoke instructions.
  if (InvokeInst *II = dyn_cast<InvokeInst>(TheCall))
    HandleInlinedInvoke(II, FirstNewBlock, InlinedFunctionInfo, CG);
    HandleInlinedInvoke(II, FirstNewBlock, InlinedFunctionInfo);

  // If we cloned in _exactly one_ basic block, and if that block ends in a
  // return instruction, we splice the body of the inlined callee directly into
+0 −32
Original line number Diff line number Diff line
; RUN: llvm-as < %s | opt -inline -prune-eh
; PR3367

define void @f2() {
    invoke void @f6()
        to label %ok1 unwind label %lpad1

ok1:
    ret void

lpad1:
    invoke void @f4()
        to label %ok2 unwind label %lpad2

ok2:
    call void @f8()
    unreachable

lpad2:
    unreachable
}

declare void @f3()

define void @f4() {
    call void @f3()
    ret void
}

declare void @f6() nounwind

declare void @f8()