Add support for setting parameters to CallSite.
authorOwen Anderson <resistor@mac.com>
Mon, 18 Feb 2008 00:10:55 +0000 (00:10 +0000)
committerOwen Anderson <resistor@mac.com>
Mon, 18 Feb 2008 00:10:55 +0000 (00:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47249 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/CallSite.h

index f7d8db60860ab083f0de1863c1df6f2af58ff27f..7e95e5db7b6e9309582a8ffe1e61ccfb71ad25b9 100644 (file)
@@ -114,6 +114,15 @@ public:
     return *(arg_begin()+ArgNo);
   }
 
+  void setArgument(unsigned ArgNo, Value* newVal) {
+    assert(I && "Not a call or invoke instruction!");
+    assert(arg_begin() + ArgNo < arg_end() && "Argument # out of range!");
+    if (I->getOpcode() == Instruction::Call)
+      I->setOperand(ArgNo+1, newVal); // Skip Function
+    else
+      I->setOperand(ArgNo+3, newVal); // Skip Function, BB, BB
+  }
+
   /// arg_iterator - The type of iterator to use when looping over actual
   /// arguments at this call site...
   typedef User::op_iterator arg_iterator;