aboutsummaryrefslogtreecommitdiffstats
path: root/lib/VMCore
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2008-02-26 18:49:29 +0000
committerDevang Patel <dpatel@apple.com>2008-02-26 18:49:29 +0000
commit814ebd77b015c9e95afa6be74cb7e7a636baa7f4 (patch)
treeda382b6d19483f99ac2262bfddeaed5b57da39c0 /lib/VMCore
parent9ec8095485c994522c9a50e16fc029de94c20476 (diff)
downloadexternal_llvm-814ebd77b015c9e95afa6be74cb7e7a636baa7f4.zip
external_llvm-814ebd77b015c9e95afa6be74cb7e7a636baa7f4.tar.gz
external_llvm-814ebd77b015c9e95afa6be74cb7e7a636baa7f4.tar.bz2
Unify to ReturnInst::init() member functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47611 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore')
-rw-r--r--lib/VMCore/Instructions.cpp39
1 files changed, 17 insertions, 22 deletions
diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp
index 163601a..e0c14b8 100644
--- a/lib/VMCore/Instructions.cpp
+++ b/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);
}
}