Unify to ReturnInst::init() member functions.
authorDevang Patel <dpatel@apple.com>
Tue, 26 Feb 2008 18:49:29 +0000 (18:49 +0000)
committerDevang Patel <dpatel@apple.com>
Tue, 26 Feb 2008 18:49:29 +0000 (18:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47611 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Instructions.h
lib/VMCore/Instructions.cpp

index 70a98d78bed9655349109bd593515c9b2e085766..75ae5c1ae42bb58353446939e3d987052ee4b517 100644 (file)
@@ -1381,8 +1381,7 @@ public:
 class ReturnInst : public TerminatorInst {
   Use RetVal;
   ReturnInst(const ReturnInst &RI);
-  void init(Value *RetVal);
-  void init(const std::vector<Value *> &RetVals);
+  void init(const Value * const* retVals, unsigned N);
 
 public:
   // ReturnInst constructors:
index 163601a6c13304d6c11cb44659f65479cbe93caf..e0c14b832864000a36282dc31d95e2cb709bbeb7 100644 (file)
@@ -586,11 +586,13 @@ ReturnInst::ReturnInst(const ReturnInst &RI)
 
 ReturnInst::ReturnInst(Value *retVal, Instruction *InsertBefore)
   : TerminatorInst(Type::VoidTy, Instruction::Ret, &RetVal, 0, InsertBefore) {
-  init(retVal);
+  if (retVal)
+    init(&retVal, 1);
 }
 ReturnInst::ReturnInst(Value *retVal, BasicBlock *InsertAtEnd)
   : TerminatorInst(Type::VoidTy, Instruction::Ret, &RetVal, 0, InsertAtEnd) {
-  init(retVal);
+  if (retVal)
+    init(&retVal, 1);
 }
 ReturnInst::ReturnInst(BasicBlock *InsertAtEnd)
   : TerminatorInst(Type::VoidTy, Instruction::Ret, &RetVal, 0, InsertAtEnd) {
@@ -600,48 +602,41 @@ ReturnInst::ReturnInst(const std::vector<Value *> &retVals,
                        Instruction *InsertBefore)
   : TerminatorInst(Type::VoidTy, Instruction::Ret, &RetVal, retVals.size(), 
                    InsertBefore) {
-  init(retVals);
+  if (!retVals.empty())
+    init(&retVals[0], retVals.size());
 }
 ReturnInst::ReturnInst(const std::vector<Value *> &retVals, 
                        BasicBlock *InsertAtEnd)
   : TerminatorInst(Type::VoidTy, Instruction::Ret, &RetVal, retVals.size(), 
                    InsertAtEnd) {
-  init(retVals);
+  if (!retVals.empty())
+    init(&retVals[0], retVals.size());
 }
 ReturnInst::ReturnInst(const std::vector<Value *> &retVals)
   : TerminatorInst(Type::VoidTy, Instruction::Ret, &RetVal, retVals.size()) {
-  init(retVals);
+  if (!retVals.empty())
+    init(&retVals[0], retVals.size());
 }
 
-void ReturnInst::init(Value *retVal) {
-  if (retVal && retVal->getType() != Type::VoidTy) {
-    assert(!isa<BasicBlock>(retVal) &&
-           "Cannot return basic block.  Probably using the incorrect ctor");
-    NumOperands = 1;
-    RetVal.init(retVal, this);
-  }
-}
+void ReturnInst::init(const Value * const* retVals, unsigned N) {
 
-void ReturnInst::init(const std::vector<Value *> &retVals) {
-  if (retVals.empty())
-    return;
+  assert (N > 0 && "Invalid operands numbers in ReturnInst init");
 
-  NumOperands = retVals.size();
+  NumOperands = N;
   if (NumOperands == 1) {
-    Value *V = retVals[0];
+    const Value *V = *retVals;
     if (V->getType() == Type::VoidTy)
       return;
-    RetVal.init(V, this);
+    RetVal.init(const_cast<Value*>(V), this);
     return;
   }
 
   Use *OL = OperandList = new Use[NumOperands];
-  RetVal.init(retVals[0], this);
   for (unsigned i = 0; i < NumOperands; ++i) {
-    Value *V = retVals[i];
+    const Value *V = *retVals++;
     assert(!isa<BasicBlock>(V) &&
            "Cannot return basic block.  Probably using the incorrect ctor");
-    OL[i].init(V, this);
+    OL[i].init(const_cast<Value *>(V), this);
   }
 }