eliminate a temporary vector
authorChris Lattner <sabre@nondot.org>
Wed, 31 Jan 2007 04:43:46 +0000 (04:43 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 31 Jan 2007 04:43:46 +0000 (04:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33695 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AsmParser/llvmAsmParser.y
lib/Bytecode/Reader/Reader.cpp

index 229845d5e3b887f2251c3e87e09a0c9ed5eefa29..586896cfa07bb7a3c537dc32da42c8639992058f 100644 (file)
@@ -20,6 +20,7 @@
 #include "llvm/SymbolTable.h"
 #include "llvm/Support/GetElementPtrTypeIterator.h"
 #include "llvm/Support/CommandLine.h"
+#include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/Support/MathExtras.h"
 #include "llvm/Support/Streams.h"
@@ -1733,7 +1734,7 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' {
     if (!IdxTy)
       GEN_ERROR("Index list invalid for constant getelementptr!");
 
-    std::vector<Constant*> IdxVec;
+    SmallVector<Constant*, 8> IdxVec;
     for (unsigned i = 0, e = $4->size(); i != e; ++i)
       if (Constant *C = dyn_cast<Constant>((*$4)[i]))
         IdxVec.push_back(C);
@@ -1742,7 +1743,7 @@ ConstExpr: CastOps '(' ConstVal TO Types ')' {
 
     delete $4;
 
-    $$ = ConstantExpr::getGetElementPtr($3, IdxVec);
+    $$ = ConstantExpr::getGetElementPtr($3, &IdxVec[0], IdxVec.size());
     CHECK_FOR_ERROR
   }
   | SELECT '(' ConstVal ',' ConstVal ',' ConstVal ')' {
index 718ba3e80032a332df9f1636f047fdb5c4b2ffa2..3c72d639e03761b2267e7a148b27f8c1c6bf65a0 100644 (file)
@@ -1171,8 +1171,8 @@ Value *BytecodeReader::ParseConstantPoolValue(unsigned TypeID) {
       if (Handler) Handler->handleConstantExpression(Opcode, ArgVec, Result);
       return Result;
     } else if (Opcode == Instruction::GetElementPtr) { // GetElementPtr
-      std::vector<Constant*> IdxList(ArgVec.begin()+1, ArgVec.end());
-      Constant *Result = ConstantExpr::getGetElementPtr(ArgVec[0], IdxList);
+      Constant *Result = ConstantExpr::getGetElementPtr(ArgVec[0], &ArgVec[1],
+                                                        ArgVec.size()-1);
       if (Handler) Handler->handleConstantExpression(Opcode, ArgVec, Result);
       return Result;
     } else if (Opcode == Instruction::Select) {