diff options
author | Bill Wendling <isanbard@gmail.com> | 2012-02-07 01:27:51 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2012-02-07 01:27:51 +0000 |
commit | a7a3f04eb9a18c11940ab1486709c63c8bd296ff (patch) | |
tree | 21d732baf3a75e2e893fef2dacd1d589b50f3838 | |
parent | eb446511ce5f1761962f12f1e8a0c7b342733d1c (diff) | |
download | external_llvm-a7a3f04eb9a18c11940ab1486709c63c8bd296ff.zip external_llvm-a7a3f04eb9a18c11940ab1486709c63c8bd296ff.tar.gz external_llvm-a7a3f04eb9a18c11940ab1486709c63c8bd296ff.tar.bz2 |
Reserve space in these vectors to prevent having to grow the array too
much. This gets us an addition 0.9% on 445.gobmk.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149952 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/VMCore/Constants.cpp | 7 | ||||
-rw-r--r-- | lib/VMCore/Type.cpp | 7 |
2 files changed, 8 insertions, 6 deletions
diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index a2f3b3f..6dbc144 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -784,9 +784,10 @@ Constant *ConstantArray::get(ArrayType *Ty, ArrayRef<Constant*> V) { StructType *ConstantStruct::getTypeForElements(LLVMContext &Context, ArrayRef<Constant*> V, bool Packed) { - SmallVector<Type*, 16> EltTypes; - for (unsigned i = 0, e = V.size(); i != e; ++i) - EltTypes.push_back(V[i]->getType()); + unsigned VecSize = V.size(); + SmallVector<Type*, 16> EltTypes(VecSize); + for (unsigned i = 0; i != VecSize; ++i) + EltTypes[i] = V[i]->getType(); return StructType::get(Context, EltTypes, Packed); } diff --git a/lib/VMCore/Type.cpp b/lib/VMCore/Type.cpp index f5c88cc..14a5aae 100644 --- a/lib/VMCore/Type.cpp +++ b/lib/VMCore/Type.cpp @@ -440,11 +440,12 @@ bool FunctionType::isValidArgumentType(Type *ArgTy) { StructType *StructType::get(LLVMContext &Context, ArrayRef<Type*> ETypes, bool isPacked) { // FIXME: std::vector is horribly inefficient for this probe. - std::vector<Type*> Key; - for (unsigned i = 0, e = ETypes.size(); i != e; ++i) { + unsigned ETypesSize = ETypes.size(); + std::vector<Type*> Key(ETypesSize); + for (unsigned i = 0, e = ETypesSize; i != e; ++i) { assert(isValidElementType(ETypes[i]) && "Invalid type for structure element!"); - Key.push_back(ETypes[i]); + Key[i] = ETypes[i]; } if (isPacked) Key.push_back(0); |