diff --git a/llvm/include/llvm/TextAPI/MachO/TextAPIReader.h b/llvm/include/llvm/TextAPI/MachO/TextAPIReader.h
--- a/llvm/include/llvm/TextAPI/MachO/TextAPIReader.h
+++ b/llvm/include/llvm/TextAPI/MachO/TextAPIReader.h
@@ -20,10 +20,7 @@
 class TextAPIReader {
 public:
   static Expected<std::unique_ptr<InterfaceFile>>
-  get(std::unique_ptr<MemoryBuffer> InputBuffer);
-
-  static Expected<std::unique_ptr<InterfaceFile>>
-  getUnmanaged(llvm::MemoryBuffer *InputBuffer);
+  get(MemoryBufferRef InputBuffer);
 
   TextAPIReader() = delete;
 };
diff --git a/llvm/lib/TextAPI/MachO/TextStub.cpp b/llvm/lib/TextAPI/MachO/TextStub.cpp
--- a/llvm/lib/TextAPI/MachO/TextStub.cpp
+++ b/llvm/lib/TextAPI/MachO/TextStub.cpp
@@ -623,21 +623,21 @@
 }
 
 Expected<std::unique_ptr<InterfaceFile>>
-TextAPIReader::get(std::unique_ptr<MemoryBuffer> InputBuffer) {
+TextAPIReader::get(MemoryBufferRef InputBuffer) {
   TextAPIContext Ctx;
-  Ctx.Path = InputBuffer->getBufferIdentifier();
-  yaml::Input YAMLIn(InputBuffer->getBuffer(), &Ctx, DiagHandler, &Ctx);
+  Ctx.Path = InputBuffer.getBufferIdentifier();
+  yaml::Input YAMLIn(InputBuffer.getBuffer(), &Ctx, DiagHandler, &Ctx);
 
   // Fill vector with interface file objects created by parsing the YAML file.
   std::vector<const InterfaceFile *> Files;
   YAMLIn >> Files;
 
-  auto File = std::unique_ptr<InterfaceFile>(
-      const_cast<InterfaceFile *>(Files.front()));
-
   if (YAMLIn.error())
     return make_error<StringError>(Ctx.ErrorMessage, YAMLIn.error());
 
+  auto File = std::unique_ptr<InterfaceFile>(
+      const_cast<InterfaceFile *>(Files.front()));
+
   return std::move(File);
 }
 
diff --git a/llvm/unittests/TextAPI/TextStubV1Tests.cpp b/llvm/unittests/TextAPI/TextStubV1Tests.cpp
--- a/llvm/unittests/TextAPI/TextStubV1Tests.cpp
+++ b/llvm/unittests/TextAPI/TextStubV1Tests.cpp
@@ -82,8 +82,7 @@
       "    thread-local-symbols: [ _tlv3 ]\n"
       "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_file1, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(MemoryBufferRef(tbd_v1_file1, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -127,8 +126,7 @@
                                      "install-name: Test.dylib\n"
                                      "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_file2, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(MemoryBufferRef(tbd_v1_file2, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -205,8 +203,8 @@
                                               "install-name: Test.dylib\n"
                                               "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_macos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_macos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -220,8 +218,8 @@
                                             "install-name: Test.dylib\n"
                                             "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_ios, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_ios, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -235,8 +233,8 @@
                                                 "install-name: Test.dylib\n"
                                                 "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_watchos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_watchos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -250,8 +248,8 @@
                                              "install-name: Test.dylib\n"
                                              "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_tvos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_tvos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -265,9 +263,8 @@
                                                  "install-name: Test.dylib\n"
                                                  "...\n";
 
-  auto Buffer =
-      MemoryBuffer::getMemBuffer(tbd_v1_platform_bridgeos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_bridgeos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -282,8 +279,8 @@
                                          "swift-version: 1.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_1_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_1_0, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -298,8 +295,8 @@
                                          "swift-version: 1.1\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_1_1, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_1_1, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -314,8 +311,8 @@
                                          "swift-version: 2.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_2_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_2_0, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -330,8 +327,8 @@
                                          "swift-version: 3.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_3_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_3_0, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -346,8 +343,8 @@
                                          "swift-version: 4.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_4_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_4_0, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   EXPECT_EQ("malformed file\nTest.tbd:5:16: error: invalid Swift ABI "
@@ -363,8 +360,7 @@
                                        "swift-version: 5\n"
                                        "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_5, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_5, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -379,8 +375,8 @@
                                         "swift-version: 99\n"
                                         "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_99, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_99, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V1, File->getFileType());
@@ -395,9 +391,8 @@
       "install-name: Test.dylib\n"
       "...\n";
 
-  auto Buffer =
-      MemoryBuffer::getMemBuffer(tbd_v1_file_unknown_architecture, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(
+      MemoryBufferRef(tbd_v1_file_unknown_architecture, "Test.tbd"));
   EXPECT_TRUE(!!Result);
 }
 
@@ -407,9 +402,8 @@
                                                      "platform: newOS\n"
                                                      "...\n";
 
-  auto Buffer =
-      MemoryBuffer::getMemBuffer(tbd_v1_file_unknown_platform, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(
+      MemoryBufferRef(tbd_v1_file_unknown_platform, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   EXPECT_EQ("malformed file\nTest.tbd:3:11: error: unknown platform\nplatform: "
@@ -423,8 +417,8 @@
                                         "foobar: \"Unsupported key\"\n"
                                         "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(malformed_file1, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(malformed_file1, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   ASSERT_EQ("malformed file\nTest.tbd:2:1: error: missing required key "
@@ -440,8 +434,8 @@
                                         "foobar: \"Unsupported key\"\n"
                                         "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(malformed_file2, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(malformed_file2, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   ASSERT_EQ(
diff --git a/llvm/unittests/TextAPI/TextStubV2Tests.cpp b/llvm/unittests/TextAPI/TextStubV2Tests.cpp
--- a/llvm/unittests/TextAPI/TextStubV2Tests.cpp
+++ b/llvm/unittests/TextAPI/TextStubV2Tests.cpp
@@ -84,8 +84,7 @@
       "    thread-local-symbols: [ _tlv3 ]\n"
       "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v2_file1, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(MemoryBufferRef(tbd_v2_file1, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -151,8 +150,7 @@
       "    weak-ref-symbols: [ _undefWeak1, _undefWeak2 ]\n"
       "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v2_file2, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(MemoryBufferRef(tbd_v2_file2, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -230,8 +228,8 @@
                                               "install-name: Test.dylib\n"
                                               "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_macos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_macos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -245,8 +243,8 @@
                                             "install-name: Test.dylib\n"
                                             "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_ios, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_ios, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -260,8 +258,8 @@
                                                 "install-name: Test.dylib\n"
                                                 "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_watchos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_watchos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -275,8 +273,8 @@
                                              "install-name: Test.dylib\n"
                                              "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_tvos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_tvos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -290,9 +288,8 @@
                                                  "install-name: Test.dylib\n"
                                                  "...\n";
 
-  auto Buffer =
-      MemoryBuffer::getMemBuffer(tbd_v1_platform_bridgeos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_bridgeos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -307,8 +304,8 @@
                                          "swift-version: 1.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_1_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_1_0, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -323,8 +320,8 @@
                                          "swift-version: 1.1\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_1_1, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_1_1, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -339,8 +336,8 @@
                                          "swift-version: 2.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_2_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_2_0, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -355,8 +352,8 @@
                                          "swift-version: 3.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_3_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_3_0, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -371,8 +368,8 @@
                                          "swift-version: 4.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_4_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_4_0, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   EXPECT_EQ("malformed file\nTest.tbd:5:16: error: invalid Swift ABI "
@@ -388,8 +385,7 @@
                                        "swift-version: 5\n"
                                        "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_5, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_5, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -404,8 +400,8 @@
                                         "swift-version: 99\n"
                                         "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_99, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_99, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V2, File->getFileType());
@@ -420,9 +416,8 @@
       "install-name: Test.dylib\n"
       "...\n";
 
-  auto Buffer =
-      MemoryBuffer::getMemBuffer(tbd_v2_file_unknown_architecture, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(
+      MemoryBufferRef(tbd_v2_file_unknown_architecture, "Test.tbd"));
   EXPECT_TRUE(!!Result);
 }
 
@@ -432,9 +427,8 @@
                                                      "platform: newOS\n"
                                                      "...\n";
 
-  auto Buffer =
-      MemoryBuffer::getMemBuffer(tbd_v2_file_unknown_platform, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(
+      MemoryBufferRef(tbd_v2_file_unknown_platform, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   EXPECT_EQ("malformed file\nTest.tbd:3:11: error: unknown platform\nplatform: "
@@ -448,8 +442,8 @@
                                         "foobar: \"Unsupported key\"\n"
                                         "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(malformed_file1, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(malformed_file1, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   ASSERT_EQ("malformed file\nTest.tbd:2:1: error: missing required key "
@@ -465,8 +459,8 @@
                                         "foobar: \"Unsupported key\"\n"
                                         "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(malformed_file2, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(malformed_file2, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   ASSERT_EQ(
diff --git a/llvm/unittests/TextAPI/TextStubV3Tests.cpp b/llvm/unittests/TextAPI/TextStubV3Tests.cpp
--- a/llvm/unittests/TextAPI/TextStubV3Tests.cpp
+++ b/llvm/unittests/TextAPI/TextStubV3Tests.cpp
@@ -88,8 +88,7 @@
       "    thread-local-symbols: [ _tlv3 ]\n"
       "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v3_file1, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(MemoryBufferRef(tbd_v3_file1, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -188,8 +187,8 @@
                                               "install-name: Test.dylib\n"
                                               "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_macos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_macos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -203,8 +202,8 @@
                                             "install-name: Test.dylib\n"
                                             "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_ios, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_ios, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -218,8 +217,8 @@
                                                 "install-name: Test.dylib\n"
                                                 "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_watchos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_watchos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -233,8 +232,8 @@
                                              "install-name: Test.dylib\n"
                                              "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_platform_tvos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_tvos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -248,9 +247,8 @@
                                                  "install-name: Test.dylib\n"
                                                  "...\n";
 
-  auto Buffer =
-      MemoryBuffer::getMemBuffer(tbd_v1_platform_bridgeos, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_platform_bridgeos, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -265,8 +263,8 @@
                                          "swift-abi-version: 1.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_1_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_1_0, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -281,8 +279,8 @@
                                          "swift-abi-version: 1.1\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_1_1, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_1_1, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -297,8 +295,8 @@
                                          "swift-abi-version: 2.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_2_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_2_0, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -313,8 +311,8 @@
                                          "swift-abi-version: 3.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_3_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_3_0, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -329,8 +327,8 @@
                                          "swift-abi-version: 4.0\n"
                                          "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_4_0, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_4_0, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   EXPECT_EQ("malformed file\nTest.tbd:5:20: error: invalid Swift ABI "
@@ -346,8 +344,7 @@
                                        "swift-abi-version: 5\n"
                                        "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_5, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_5, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -362,8 +359,8 @@
                                         "swift-abi-version: 99\n"
                                         "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(tbd_v1_swift_99, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(tbd_v1_swift_99, "Test.tbd"));
   EXPECT_TRUE(!!Result);
   auto File = std::move(Result.get());
   EXPECT_EQ(FileType::TBD_V3, File->getFileType());
@@ -378,9 +375,8 @@
       "install-name: Test.dylib\n"
       "...\n";
 
-  auto Buffer =
-      MemoryBuffer::getMemBuffer(tbd_v3_file_unknown_architecture, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(
+      MemoryBufferRef(tbd_v3_file_unknown_architecture, "Test.tbd"));
   EXPECT_TRUE(!!Result);
 }
 
@@ -390,9 +386,8 @@
                                                      "platform: newOS\n"
                                                      "...\n";
 
-  auto Buffer =
-      MemoryBuffer::getMemBuffer(tbd_v3_file_unknown_platform, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result = TextAPIReader::get(
+      MemoryBufferRef(tbd_v3_file_unknown_platform, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   EXPECT_EQ("malformed file\nTest.tbd:3:11: error: unknown platform\nplatform: "
@@ -406,8 +401,8 @@
                                         "foobar: \"Unsupported key\"\n"
                                         "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(malformed_file1, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(malformed_file1, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   ASSERT_EQ("malformed file\nTest.tbd:2:1: error: missing required key "
@@ -423,8 +418,8 @@
                                         "foobar: \"Unsupported key\"\n"
                                         "...\n";
 
-  auto Buffer = MemoryBuffer::getMemBuffer(malformed_file2, "Test.tbd");
-  auto Result = TextAPIReader::get(std::move(Buffer));
+  auto Result =
+      TextAPIReader::get(MemoryBufferRef(malformed_file2, "Test.tbd"));
   EXPECT_FALSE(!!Result);
   auto errorMessage = toString(Result.takeError());
   ASSERT_EQ(