[Support] Remove MemoryBuffer::getNewUninitMemBuffer
authorPavel Labath <labath@google.com>
Thu, 21 Dec 2017 11:27:21 +0000 (11:27 +0000)
committerPavel Labath <labath@google.com>
Thu, 21 Dec 2017 11:27:21 +0000 (11:27 +0000)
There is nothing useful that can be done with a read-only uninitialized
buffer without const_casting its contents to initialize it. A better
solution is to obtain a writable buffer
(WritableMemoryBuffer::getNewUninitMemBuffer), and then convert it to a
read-only buffer after initialization. All callers of this function have
already been updated to do this, so this function is now unused.

llvm-svn: 321257

llvm/include/llvm/Support/MemoryBuffer.h
llvm/lib/Support/MemoryBuffer.cpp
llvm/unittests/Support/MemoryBufferTest.cpp

index 921d428b9b27cb9766e4d553705e05fb235d7b03..7b849fdb86706e366be49f7d8a73ed75ba9cbbf9 100644 (file)
@@ -123,15 +123,6 @@ public:
   static std::unique_ptr<MemoryBuffer>
   getNewMemBuffer(size_t Size, StringRef BufferName = "");
 
-  /// Allocate a new MemoryBuffer of the specified size that is not initialized.
-  /// Note that the caller should initialize the memory allocated by this
-  /// method. The memory is owned by the MemoryBuffer object.
-  //
-  // TODO: Remove this and migrate callers to
-  //   WritableMemoryBuffer::getNewUninitMemBuffer
-  static std::unique_ptr<MemoryBuffer>
-  getNewUninitMemBuffer(size_t Size, const Twine &BufferName = "");
-
   /// Read all of stdin into a file buffer, and return it.
   static ErrorOr<std::unique_ptr<MemoryBuffer>> getSTDIN();
 
@@ -199,6 +190,9 @@ public:
   getFileSlice(const Twine &Filename, uint64_t MapSize, uint64_t Offset,
                bool IsVolatile = false);
 
+  /// Allocate a new MemoryBuffer of the specified size that is not initialized.
+  /// Note that the caller should initialize the memory allocated by this
+  /// method. The memory is owned by the MemoryBuffer object.
   static std::unique_ptr<WritableMemoryBuffer>
   getNewUninitMemBuffer(size_t Size, const Twine &BufferName = "");
 
index 8a93f97930caa54a7d6d46e4e53b15e76a3273d8..c709fc416df606b2bb4d37979fdca8c10189b7b2 100644 (file)
@@ -139,18 +139,13 @@ MemoryBuffer::getMemBufferCopy(StringRef InputData, const Twine &BufferName) {
   return nullptr;
 }
 
-std::unique_ptr<MemoryBuffer>
-MemoryBuffer::getNewUninitMemBuffer(size_t Size, const Twine &BufferName) {
-  return WritableMemoryBuffer::getNewUninitMemBuffer(Size, BufferName);
-}
-
 std::unique_ptr<MemoryBuffer>
 MemoryBuffer::getNewMemBuffer(size_t Size, StringRef BufferName) {
-  std::unique_ptr<MemoryBuffer> SB = getNewUninitMemBuffer(Size, BufferName);
+  auto SB = WritableMemoryBuffer::getNewUninitMemBuffer(Size, BufferName);
   if (!SB)
     return nullptr;
-  memset(const_cast<char*>(SB->getBufferStart()), 0, Size);
-  return SB;
+  memset(SB->getBufferStart(), 0, Size);
+  return std::move(SB);
 }
 
 ErrorOr<std::unique_ptr<MemoryBuffer>>
index 0d9578621e0a00416ad90c0dcf217cd42468944d..5e3c8db02791da0b0f1149db05d1e7fb0de01769 100644 (file)
@@ -104,15 +104,15 @@ TEST_F(MemoryBufferTest, copy) {
 
 TEST_F(MemoryBufferTest, make_new) {
   // 0-sized buffer
-  OwningBuffer Zero(MemoryBuffer::getNewUninitMemBuffer(0));
+  OwningBuffer Zero(WritableMemoryBuffer::getNewUninitMemBuffer(0));
   EXPECT_TRUE(nullptr != Zero.get());
 
   // uninitialized buffer with no name
-  OwningBuffer One(MemoryBuffer::getNewUninitMemBuffer(321));
+  OwningBuffer One(WritableMemoryBuffer::getNewUninitMemBuffer(321));
   EXPECT_TRUE(nullptr != One.get());
 
   // uninitialized buffer with name
-  OwningBuffer Two(MemoryBuffer::getNewUninitMemBuffer(123, "bla"));
+  OwningBuffer Two(WritableMemoryBuffer::getNewUninitMemBuffer(123, "bla"));
   EXPECT_TRUE(nullptr != Two.get());
 
   // 0-initialized buffer with no name