Fix bug: Inline/2003-09-14-InlineValue.ll
authorChris Lattner <sabre@nondot.org>
Mon, 15 Sep 2003 02:10:16 +0000 (02:10 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 15 Sep 2003 02:10:16 +0000 (02:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8514 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Utils/InlineFunction.cpp

index 17628e22537da6bef164f8c5d5c93d22a7286013..9362d26e2b267a575e1e17126b2fd0dedb2fefff 100644 (file)
@@ -191,10 +191,14 @@ bool InlineFunction(CallSite CS) {
           
           // Next, create the new invoke instruction, inserting it at the end
           // of the old basic block.
-          new InvokeInst(CI->getCalledValue(), Split, InvokeDest, 
-                         std::vector<Value*>(CI->op_begin()+1, CI->op_end()),
-                         CI->getName(), BB->getTerminator());
-          
+          InvokeInst *II =
+            new InvokeInst(CI->getCalledValue(), Split, InvokeDest, 
+                           std::vector<Value*>(CI->op_begin()+1, CI->op_end()),
+                           CI->getName(), BB->getTerminator());
+
+          // Make sure that anything using the call now uses the invoke!
+          CI->replaceAllUsesWith(II);
+
           // Delete the unconditional branch inserted by splitBasicBlock
           BB->getInstList().pop_back();
           Split->getInstList().pop_front();  // Delete the original call