Added implementation of alternate CallInst constructors (one ctor is
authorJoel Stanley <jstanley@cs.uiuc.edu>
Sat, 1 Feb 2003 00:39:58 +0000 (00:39 +0000)
committerJoel Stanley <jstanley@cs.uiuc.edu>
Sat, 1 Feb 2003 00:39:58 +0000 (00:39 +0000)
for no actual parameters, and one ctor is for one actual parameter).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5452 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/iCall.cpp

index 3a0545f17425f828377a97326ffaa52acb54a87e..888e45f7f9f5c067e1908c52a53deaf7f00ba6ed 100644 (file)
@@ -32,6 +32,41 @@ CallInst::CallInst(Value *Func, const std::vector<Value*> &params,
     Operands.push_back(Use(params[i], this));
 }
 
+CallInst::CallInst(Value *Func, const std::string &Name,
+                   Instruction  *InsertBefore)
+  : Instruction(cast<FunctionType>(cast<PointerType>(Func->getType())
+                                   ->getElementType())->getReturnType(),
+                Instruction::Call, Name, InsertBefore) {
+  Operands.reserve(1);
+  Operands.push_back(Use(Func, this));
+  
+  const FunctionType *MTy = 
+    cast<FunctionType>(cast<PointerType>(Func->getType())->getElementType());
+
+  const FunctionType::ParamTypes &PL = MTy->getParamTypes();
+  assert((0 == PL.size()) ||
+        (MTy->isVarArg() && 0 >= PL.size()) &&
+        "Calling a function with bad signature");
+}
+
+CallInst::CallInst(Value *Func, Value* A, const std::string &Name,
+                   Instruction  *InsertBefore)
+  : Instruction(cast<FunctionType>(cast<PointerType>(Func->getType())
+                                   ->getElementType())->getReturnType(),
+                Instruction::Call, Name, InsertBefore) {
+  Operands.reserve(2);
+  Operands.push_back(Use(Func, this));
+  
+  const FunctionType *MTy = 
+    cast<FunctionType>(cast<PointerType>(Func->getType())->getElementType());
+
+  const FunctionType::ParamTypes &PL = MTy->getParamTypes();
+  assert((1 == PL.size()) || 
+        (MTy->isVarArg() && 1 >= PL.size()) &&
+        "Calling a function with bad signature");
+  Operands.push_back(Use(A, this));
+}
+
 CallInst::CallInst(const CallInst &CI) 
   : Instruction(CI.getType(), Instruction::Call) {
   Operands.reserve(CI.Operands.size());