aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2009-02-03 06:30:37 +0000
committerNick Lewycky <nicholas@mxc.ca>2009-02-03 06:30:37 +0000
commitde25a149d3e9d98f25d237e513dd190eda993ac0 (patch)
treebbe4a3da16d6fb9d87aa29f951a0162f9068c684
parentfbb585b7a4aa46e7c90525ad6bdb2021a3ec74e4 (diff)
downloadexternal_llvm-de25a149d3e9d98f25d237e513dd190eda993ac0.zip
external_llvm-de25a149d3e9d98f25d237e513dd190eda993ac0.tar.gz
external_llvm-de25a149d3e9d98f25d237e513dd190eda993ac0.tar.bz2
Revert r63600. It didn't fix the bug, it just moved it a bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63618 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/Utils/InlineFunction.cpp9
-rw-r--r--test/Transforms/Inline/2009-02-02-InvokeUpdateCG.ll32
2 files changed, 2 insertions, 39 deletions
diff --git a/lib/Transforms/Utils/InlineFunction.cpp b/lib/Transforms/Utils/InlineFunction.cpp
index eb136b5..758b97e 100644
--- a/lib/Transforms/Utils/InlineFunction.cpp
+++ b/lib/Transforms/Utils/InlineFunction.cpp
@@ -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
diff --git a/test/Transforms/Inline/2009-02-02-InvokeUpdateCG.ll b/test/Transforms/Inline/2009-02-02-InvokeUpdateCG.ll
deleted file mode 100644
index 38d7596..0000000
--- a/test/Transforms/Inline/2009-02-02-InvokeUpdateCG.ll
+++ /dev/null
@@ -1,32 +0,0 @@
-; 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()