diff options
author | Devang Patel <dpatel@apple.com> | 2008-02-26 18:49:29 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2008-02-26 18:49:29 +0000 |
commit | c38eb52787c41a2536fab7cc53e7f05cc03ba2a5 (patch) | |
tree | f0db8d6e2b025cdec7f651409913366b09da4105 /llvm/lib/VMCore/Instructions.cpp | |
parent | 666bbe34f4ed538cda9b21af9178f2cc38c44c32 (diff) | |
download | bcm5719-llvm-c38eb52787c41a2536fab7cc53e7f05cc03ba2a5.tar.gz bcm5719-llvm-c38eb52787c41a2536fab7cc53e7f05cc03ba2a5.zip |
Unify to ReturnInst::init() member functions.
llvm-svn: 47611
Diffstat (limited to 'llvm/lib/VMCore/Instructions.cpp')
-rw-r--r-- | llvm/lib/VMCore/Instructions.cpp | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/llvm/lib/VMCore/Instructions.cpp b/llvm/lib/VMCore/Instructions.cpp index 163601a6c13..e0c14b83286 100644 --- a/llvm/lib/VMCore/Instructions.cpp +++ b/llvm/lib/VMCore/Instructions.cpp @@ -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); } } |