[llvm] 404f0d4 - Simplify away some SmallVector copies. NFCI.

Benjamin Kramer via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 26 07:35:04 PDT 2021


Author: Benjamin Kramer
Date: 2021-07-26T16:33:38+02:00
New Revision: 404f0d4f7cc7b7497c9725c6c6f20b21df8611bb

URL: https://github.com/llvm/llvm-project/commit/404f0d4f7cc7b7497c9725c6c6f20b21df8611bb
DIFF: https://github.com/llvm/llvm-project/commit/404f0d4f7cc7b7497c9725c6c6f20b21df8611bb.diff

LOG: Simplify away some SmallVector copies. NFCI.

The lifetime of the initializer list is the full expression, so we can
skip storing it in a temporary vector.

Added: 
    

Modified: 
    llvm/include/llvm/IR/Constants.h
    llvm/include/llvm/IR/DerivedTypes.h

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/IR/Constants.h b/llvm/include/llvm/IR/Constants.h
index 142dc2187450..1f716a45b70f 100644
--- a/llvm/include/llvm/IR/Constants.h
+++ b/llvm/include/llvm/IR/Constants.h
@@ -454,8 +454,7 @@ class ConstantStruct final : public ConstantAggregate {
   template <typename... Csts>
   static std::enable_if_t<are_base_of<Constant, Csts...>::value, Constant *>
   get(StructType *T, Csts *...Vs) {
-    SmallVector<Constant *, 8> Values({Vs...});
-    return get(T, Values);
+    return get(T, ArrayRef<Constant *>({Vs...}));
   }
 
   /// Return an anonymous struct that has the specified elements.

diff  --git a/llvm/include/llvm/IR/DerivedTypes.h b/llvm/include/llvm/IR/DerivedTypes.h
index 7354aa0525b1..b68a912b5f70 100644
--- a/llvm/include/llvm/IR/DerivedTypes.h
+++ b/llvm/include/llvm/IR/DerivedTypes.h
@@ -244,8 +244,7 @@ class StructType : public Type {
   static std::enable_if_t<are_base_of<Type, Tys...>::value, StructType *>
   create(StringRef Name, Type *elt1, Tys *... elts) {
     assert(elt1 && "Cannot create a struct type with no elements with this");
-    SmallVector<llvm::Type *, 8> StructFields({elt1, elts...});
-    return create(StructFields, Name);
+    return create(ArrayRef<Type *>({elt1, elts...}), Name);
   }
 
   /// This static method is the primary way to create a literal StructType.
@@ -263,8 +262,7 @@ class StructType : public Type {
   get(Type *elt1, Tys *... elts) {
     assert(elt1 && "Cannot create a struct type with no elements with this");
     LLVMContext &Ctx = elt1->getContext();
-    SmallVector<llvm::Type *, 8> StructFields({elt1, elts...});
-    return llvm::StructType::get(Ctx, StructFields);
+    return StructType::get(Ctx, ArrayRef<Type *>({elt1, elts...}));
   }
 
   /// Return the type with the specified name, or null if there is none by that
@@ -306,8 +304,7 @@ class StructType : public Type {
   std::enable_if_t<are_base_of<Type, Tys...>::value, void>
   setBody(Type *elt1, Tys *... elts) {
     assert(elt1 && "Cannot create a struct type with no elements with this");
-    SmallVector<llvm::Type *, 8> StructFields({elt1, elts...});
-    setBody(StructFields);
+    setBody(ArrayRef<Type *>({elt1, elts...}));
   }
 
   /// Return true if the specified type is valid as a element type.


        


More information about the llvm-commits mailing list