diff options
| author | Devang Patel <dpatel@apple.com> | 2008-02-26 19:38:17 +0000 |
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2008-02-26 19:38:17 +0000 |
| commit | 5765239466b0251fec21f46eda490c5a5d625242 (patch) | |
| tree | 8965958a05e59c267fa0c8f649eb7231955bd81f | |
| parent | 0574ab2190fe13b84f5b794b7186b0bf86dcc8d2 (diff) | |
| download | external_llvm-5765239466b0251fec21f46eda490c5a5d625242.zip external_llvm-5765239466b0251fec21f46eda490c5a5d625242.tar.gz external_llvm-5765239466b0251fec21f46eda490c5a5d625242.tar.bz2 | |
Use SmallVector while constructing ReturnInst.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47619 91177308-0d34-0410-b5e6-96231b3b80d8
| -rw-r--r-- | include/llvm/Instructions.h | 3 | ||||
| -rw-r--r-- | lib/Bitcode/Reader/BitcodeReader.cpp | 6 | ||||
| -rw-r--r-- | lib/VMCore/Instructions.cpp | 18 |
3 files changed, 25 insertions, 2 deletions
diff --git a/include/llvm/Instructions.h b/include/llvm/Instructions.h index 316d6b5..2b7241e 100644 --- a/include/llvm/Instructions.h +++ b/include/llvm/Instructions.h @@ -1400,6 +1400,9 @@ public: ReturnInst(const std::vector<Value *> &retVals); ReturnInst(const std::vector<Value *> &retVals, Instruction *InsertBefore); ReturnInst(const std::vector<Value *> &retVals, BasicBlock *InsertAtEnd); + ReturnInst(Value * const* retVals, unsigned N); + ReturnInst(Value * const* retVals, unsigned N, Instruction *InsertBefore); + ReturnInst(Value * const* retVals, unsigned N, BasicBlock *InsertAtEnd); explicit ReturnInst(BasicBlock *InsertAtEnd); virtual ~ReturnInst(); diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index 487a135..61e0ab9 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -21,6 +21,7 @@ #include "llvm/ParamAttrsList.h" #include "llvm/AutoUpgrade.h" #include "llvm/ADT/SmallString.h" +#include "llvm/ADT/SmallVector.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/MemoryBuffer.h" using namespace llvm; @@ -1344,7 +1345,7 @@ bool BitcodeReader::ParseFunctionBody(Function *F) { break; } else { unsigned OpNum = 0; - std::vector<Value *> Vs; + SmallVector<Value *,4> Vs; do { Value *Op = NULL; if (getValueTypePair(Record, OpNum, NextValueNo, Op)) @@ -1352,7 +1353,8 @@ bool BitcodeReader::ParseFunctionBody(Function *F) { Vs.push_back(Op); } while(OpNum != Record.size()); - I = new ReturnInst(Vs); + // SmallVector Vs has at least one element. + I = new ReturnInst(&Vs[0], Vs.size()); break; } } diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp index ffd93db..012aad1 100644 --- a/lib/VMCore/Instructions.cpp +++ b/lib/VMCore/Instructions.cpp @@ -618,6 +618,24 @@ ReturnInst::ReturnInst(const std::vector<Value *> &retVals) init(&retVals[0], retVals.size()); } +ReturnInst::ReturnInst(Value * const* retVals, unsigned N, + Instruction *InsertBefore) + : TerminatorInst(Type::VoidTy, Instruction::Ret, &RetVal, N, InsertBefore) { + if (N != 0) + init(retVals, N); +} +ReturnInst::ReturnInst(Value * const* retVals, unsigned N, + BasicBlock *InsertAtEnd) + : TerminatorInst(Type::VoidTy, Instruction::Ret, &RetVal, N, InsertAtEnd) { + if (N != 0) + init(retVals, N); +} +ReturnInst::ReturnInst(Value * const* retVals, unsigned N) + : TerminatorInst(Type::VoidTy, Instruction::Ret, &RetVal, N) { + if (N != 0) + init(retVals, N); +} + void ReturnInst::init(Value * const* retVals, unsigned N) { assert (N > 0 && "Invalid operands numbers in ReturnInst init"); |
