[IR] Simplify code with ArrayRef::copy. No functionality change.
authorBenjamin Kramer <benny.kra@googlemail.com>
Wed, 5 Aug 2015 14:16:28 +0000 (14:16 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Wed, 5 Aug 2015 14:16:28 +0000 (14:16 +0000)
llvm-svn: 244043

llvm/lib/IR/Type.cpp

index 2f6dbab..7f65e94 100644 (file)
@@ -420,18 +420,14 @@ void StructType::setBody(ArrayRef<Type*> Elements, bool isPacked) {
   if (isPacked)
     setSubclassData(getSubclassData() | SCDB_Packed);
 
+  NumContainedTys = Elements.size();
+
   if (Elements.empty()) {
     ContainedTys = nullptr;
-    NumContainedTys = 0;
     return;
   }
 
-  unsigned NumElements = Elements.size();
-  Type **Elts = getContext().pImpl->TypeAllocator.Allocate<Type*>(NumElements);
-  memcpy(Elts, Elements.data(), sizeof(Elements[0]) * NumElements);
-  
-  ContainedTys = Elts;
-  NumContainedTys = NumElements;
+  ContainedTys = Elements.copy(getContext().pImpl->TypeAllocator).data();
 }
 
 void StructType::setName(StringRef Name) {