diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 229845d5e3b..586896cfa07 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -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 IdxVec; + SmallVector IdxVec; for (unsigned i = 0, e = $4->size(); i != e; ++i) if (Constant *C = dyn_cast((*$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 ')' { diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp index 718ba3e8003..3c72d639e03 100644 --- a/lib/Bytecode/Reader/Reader.cpp +++ b/lib/Bytecode/Reader/Reader.cpp @@ -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 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) {