Use ArrayRef::copy, instead of copying data manually
authorDmitri Gribenko <gribozavr@gmail.com>
Thu, 28 Feb 2019 14:00:26 +0000 (14:00 +0000)
committerDmitri Gribenko <gribozavr@gmail.com>
Thu, 28 Feb 2019 14:00:26 +0000 (14:00 +0000)
Reviewers: ioeric

Subscribers: jkorous, arphaman, kadircet, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D58782

llvm-svn: 355091

clang-tools-extra/clangd/index/Ref.cpp

index 9eb645059b84ee22d00855679412c7cb092bf4c6..3f0fea5602a1c6d7690a3071ab75b26e248066dc 100644 (file)
@@ -51,9 +51,7 @@ RefSlab RefSlab::Builder::build() && {
     SymRefs.erase(std::unique(SymRefs.begin(), SymRefs.end()), SymRefs.end());
 
     NumRefs += SymRefs.size();
-    auto *Array = Arena.Allocate<Ref>(SymRefs.size());
-    std::uninitialized_copy(SymRefs.begin(), SymRefs.end(), Array);
-    Result.emplace_back(Sym.first, llvm::ArrayRef<Ref>(Array, SymRefs.size()));
+    Result.emplace_back(Sym.first, llvm::ArrayRef<Ref>(SymRefs).copy(Arena));
   }
   return RefSlab(std::move(Result), std::move(Arena), NumRefs);
 }