]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - opencl/llvm.git/commitdiff
Remove some calls to std::move.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 1 Aug 2014 14:31:55 +0000 (14:31 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 1 Aug 2014 14:31:55 +0000 (14:31 +0000)
Instead of moving out the data in a ErrorOr<std::unique_ptr<Foo>>, get
a reference to it.

Thanks to David Blaikie for the suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214516 91177308-0d34-0410-b5e6-96231b3b80d8

19 files changed:
lib/ExecutionEngine/MCJIT/MCJIT.cpp
lib/Support/CommandLine.cpp
lib/Support/FileUtilities.cpp
lib/Support/LockFileManager.cpp
lib/Transforms/Scalar/SampleProfile.cpp
tools/llvm-ar/llvm-ar.cpp
tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp
tools/llvm-dwarfdump/llvm-dwarfdump.cpp
tools/llvm-nm/llvm-nm.cpp
tools/llvm-objdump/llvm-objdump.cpp
tools/llvm-readobj/llvm-readobj.cpp
tools/llvm-size/llvm-size.cpp
tools/llvm-symbolizer/LLVMSymbolize.cpp
tools/llvm-vtabledump/llvm-vtabledump.cpp
tools/macho-dump/macho-dump.cpp
tools/obj2yaml/obj2yaml.cpp
tools/verify-uselistorder/verify-uselistorder.cpp
utils/FileCheck/FileCheck.cpp
utils/yaml-bench/YAMLBench.cpp

index 5025aa61278a412b81ba67025b2947881b522fda..a86f85c9f4c5f2352d90df0c6e1f71e42385f5c8 100644 (file)
@@ -307,7 +307,7 @@ uint64_t MCJIT::getSymbolAddress(const std::string &Name,
           ChildIt->getAsBinary();
       if (ChildBinOrErr.getError())
         continue;
-      std::unique_ptr<object::Binary> ChildBin = std::move(ChildBinOrErr.get());
+      std::unique_ptr<object::Binary> &ChildBin = ChildBinOrErr.get();
       if (ChildBin->isObject()) {
         std::unique_ptr<object::ObjectFile> OF(
             static_cast<object::ObjectFile *>(ChildBin.release()));
index 586eceae757fcba6fed16627248b2bc4f92af857..4c1df5c47dd544f497be52c3f6cc57d898eca9f6 100644 (file)
@@ -635,11 +635,11 @@ static bool ExpandResponseFile(const char *FName, StringSaver &Saver,
       MemoryBuffer::getFile(FName);
   if (!MemBufOrErr)
     return false;
-  std::unique_ptr<MemoryBuffer> MemBuf = std::move(MemBufOrErr.get());
-  StringRef Str(MemBuf->getBufferStart(), MemBuf->getBufferSize());
+  MemoryBuffer &MemBuf = *MemBufOrErr.get();
+  StringRef Str(MemBuf.getBufferStart(), MemBuf.getBufferSize());
 
   // If we have a UTF-16 byte order mark, convert to UTF-8 for parsing.
-  ArrayRef<char> BufRef(MemBuf->getBufferStart(), MemBuf->getBufferEnd());
+  ArrayRef<char> BufRef(MemBuf.getBufferStart(), MemBuf.getBufferEnd());
   std::string UTF8Buf;
   if (hasUTF16ByteOrderMark(BufRef)) {
     if (!convertUTF16ToUTF8String(BufRef, UTF8Buf))
index 8a234917827edc2657514d92a5d099be041ab36a..5316f049a38a5a41754c354f9385d91af332017d 100644 (file)
@@ -182,7 +182,7 @@ int llvm::DiffFilesWithTolerance(StringRef NameA,
       *Error = EC.message();
     return 2;
   }
-  std::unique_ptr<MemoryBuffer> F1 = std::move(F1OrErr.get());
+  MemoryBuffer &F1 = *F1OrErr.get();
 
   ErrorOr<std::unique_ptr<MemoryBuffer>> F2OrErr = MemoryBuffer::getFile(NameB);
   if (std::error_code EC = F2OrErr.getError()) {
@@ -190,17 +190,17 @@ int llvm::DiffFilesWithTolerance(StringRef NameA,
       *Error = EC.message();
     return 2;
   }
-  std::unique_ptr<MemoryBuffer> F2 = std::move(F2OrErr.get());
+  MemoryBuffer &F2 = *F2OrErr.get();
 
   // Okay, now that we opened the files, scan them for the first difference.
-  const char *File1Start = F1->getBufferStart();
-  const char *File2Start = F2->getBufferStart();
-  const char *File1End = F1->getBufferEnd();
-  const char *File2End = F2->getBufferEnd();
+  const char *File1Start = F1.getBufferStart();
+  const char *File2Start = F2.getBufferStart();
+  const char *File1End = F1.getBufferEnd();
+  const char *File2End = F2.getBufferEnd();
   const char *F1P = File1Start;
   const char *F2P = File2Start;
-  uint64_t A_size = F1->getBufferSize();
-  uint64_t B_size = F2->getBufferSize();
+  uint64_t A_size = F1.getBufferSize();
+  uint64_t B_size = F2.getBufferSize();
 
   // Are the buffers identical?  Common case: Handle this efficiently.
   if (A_size == B_size &&
index 3f224e0c588f77f7987cc230267d3630b4b4405c..8fc58017cb0f287f57045c28b79a6fe6dc8d95e0 100644 (file)
@@ -39,11 +39,11 @@ LockFileManager::readLockFile(StringRef LockFileName) {
     sys::fs::remove(LockFileName);
     return None;
   }
-  std::unique_ptr<MemoryBuffer> MB = std::move(MBOrErr.get());
+  MemoryBuffer &MB = *MBOrErr.get();
 
   StringRef Hostname;
   StringRef PIDStr;
-  std::tie(Hostname, PIDStr) = getToken(MB->getBuffer(), " ");
+  std::tie(Hostname, PIDStr) = getToken(MB.getBuffer(), " ");
   PIDStr = PIDStr.substr(PIDStr.find_first_not_of(" "));
   int PID;
   if (!PIDStr.getAsInteger(10, PID)) {
index 73c97ffeef4f98fdf65558665f589fcaa8eb8b18..56c57373a7673f348c8f21cb9c8ff9f2c8c4b274 100644 (file)
@@ -457,8 +457,8 @@ bool SampleModuleProfile::loadText() {
     M.getContext().diagnose(DiagnosticInfoSampleProfile(Filename.data(), Msg));
     return false;
   }
-  std::unique_ptr<MemoryBuffer> Buffer = std::move(BufferOrErr.get());
-  line_iterator LineIt(*Buffer, '#');
+  MemoryBuffer &Buffer = *BufferOrErr.get();
+  line_iterator LineIt(Buffer, '#');
 
   // Read the profile of each function. Since each function may be
   // mentioned more than once, and we are collecting flat profiles,
index 3d5482df9de85465a349bcb69c6af25aacafe260..3d87597f39bd7c003ae8207e35e2a090a7ecfd39 100644 (file)
@@ -703,7 +703,7 @@ writeSymbolTable(raw_fd_ostream &Out, ArrayRef<NewArchiveIterator> Members,
             MemberBuffer, sys::fs::file_magic::unknown, &Context);
     if (!ObjOrErr)
       continue;  // FIXME: check only for "not an object file" errors.
-    std::unique_ptr<object::SymbolicFile> Obj = std::move(ObjOrErr.get());
+    object::SymbolicFile &Obj = *ObjOrErr.get();
 
     if (!StartOffset) {
       printMemberHeader(Out, "", sys::TimeValue::now(), 0, 0, 0, 0);
@@ -711,7 +711,7 @@ writeSymbolTable(raw_fd_ostream &Out, ArrayRef<NewArchiveIterator> Members,
       print32BE(Out, 0);
     }
 
-    for (const object::BasicSymbolRef &S : Obj->symbols()) {
+    for (const object::BasicSymbolRef &S : Obj.symbols()) {
       uint32_t Symflags = S.getFlags();
       if (Symflags & object::SymbolRef::SF_FormatSpecific)
         continue;
@@ -725,7 +725,7 @@ writeSymbolTable(raw_fd_ostream &Out, ArrayRef<NewArchiveIterator> Members,
       MemberOffsetRefs.push_back(std::make_pair(Out.tell(), MemberNum));
       print32BE(Out, 0);
     }
-    MemberBuffer.reset(Obj->releaseBuffer());
+    MemberBuffer.reset(Obj.releaseBuffer());
   }
   Out << NameOS.str();
 
@@ -763,7 +763,7 @@ static void performWriteOperation(ArchiveOperation Operation,
   MemberBuffers.resize(NewMembers.size());
 
   for (unsigned I = 0, N = NewMembers.size(); I < N; ++I) {
-    std::unique_ptr<MemoryBuffer> MemberBuffer;
+    std::unique_ptr<MemoryBuffer> &MemberBuffer = MemberBuffers[I];
     NewArchiveIterator &Member = NewMembers[I];
 
     if (Member.isNewMember()) {
@@ -781,7 +781,6 @@ static void performWriteOperation(ArchiveOperation Operation,
       failIfError(MemberBufferOrErr.getError());
       MemberBuffer = std::move(MemberBufferOrErr.get());
     }
-    MemberBuffers[I].reset(MemberBuffer.release());
   }
 
   if (Symtab) {
index 63145c087a69f24a42db303311cdc5f3cbc8ec32..24ebbc1cb806da8fc29c9d34e8d097c0c3dbbab3 100644 (file)
@@ -483,13 +483,13 @@ static int AnalyzeBitcode() {
       MemoryBuffer::getFileOrSTDIN(InputFilename);
   if (std::error_code EC = MemBufOrErr.getError())
     return Error("Error reading '" + InputFilename + "': " + EC.message());
-  std::unique_ptr<MemoryBuffer> MemBuf = std::move(MemBufOrErr.get());
+  MemoryBuffer &MemBuf = *MemBufOrErr.get();
 
-  if (MemBuf->getBufferSize() & 3)
+  if (MemBuf.getBufferSize() & 3)
     return Error("Bitcode stream should be a multiple of 4 bytes in length");
 
-  const unsigned char *BufPtr = (const unsigned char *)MemBuf->getBufferStart();
-  const unsigned char *EndBufPtr = BufPtr+MemBuf->getBufferSize();
+  const unsigned char *BufPtr = (const unsigned char *)MemBuf.getBufferStart();
+  const unsigned char *EndBufPtr = BufPtr+MemBuf.getBufferSize();
 
   // If we have a wrapper header, parse it and ignore the non-bc file contents.
   // The magic number is 0x0B17C0DE stored in little endian.
index 33bb766f200f38f701a6ba68616af7e33aab0d23..4e65d444fc8d35522799dd39669d688e6626171b 100644 (file)
@@ -80,12 +80,12 @@ static void DumpInput(const StringRef &Filename) {
     errs() << Filename << ": " << EC.message() << '\n';
     return;
   }
-  std::unique_ptr<ObjectFile> Obj = std::move(ObjOrErr.get());
+  ObjectFile &Obj = *ObjOrErr.get();
 
-  std::unique_ptr<DIContext> DICtx(DIContext::getDWARFContext(*Obj));
+  std::unique_ptr<DIContext> DICtx(DIContext::getDWARFContext(Obj));
 
   outs() << Filename
-         << ":\tfile format " << Obj->getFileFormatName() << "\n\n";
+         << ":\tfile format " << Obj.getFileFormatName() << "\n\n";
   // Dump the complete DWARF structure.
   DICtx->dump(outs(), DumpType);
 }
index a16135e0c7ffe0512f2a574d8b315d882b3e4dbe..d7014264086c956f282cf26390344a4fde2a55fc 100644 (file)
@@ -1013,9 +1013,9 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
       createBinary(std::move(*BufferOrErr), &Context);
   if (error(BinaryOrErr.getError(), Filename))
     return;
-  std::unique_ptr<Binary> Bin = std::move(BinaryOrErr.get());
+  Binary &Bin = *BinaryOrErr.get();
 
-  if (Archive *A = dyn_cast<Archive>(Bin.get())) {
+  if (Archive *A = dyn_cast<Archive>(&Bin)) {
     if (ArchiveMap) {
       Archive::symbol_iterator I = A->symbol_begin();
       Archive::symbol_iterator E = A->symbol_end();
@@ -1056,7 +1056,7 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
     }
     return;
   }
-  if (MachOUniversalBinary *UB = dyn_cast<MachOUniversalBinary>(Bin.get())) {
+  if (MachOUniversalBinary *UB = dyn_cast<MachOUniversalBinary>(&Bin)) {
     // If we have a list of architecture flags specified dump only those.
     if (!ArchAll && ArchFlags.size() != 0) {
       // Look for a slice in the universal binary that matches each ArchFlag.
@@ -1076,16 +1076,16 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
             ArchiveName.clear();
             ArchitectureName.clear();
             if (ObjOrErr) {
-              std::unique_ptr<ObjectFile> Obj = std::move(ObjOrErr.get());
+              ObjectFile &Obj = *ObjOrErr.get();
               if (ArchFlags.size() > 1) {
                 if (PrintFileName)
                   ArchitectureName = I->getArchTypeName();
                 else
-                  outs() << "\n" << Obj->getFileName() << " (for architecture "
+                  outs() << "\n" << Obj.getFileName() << " (for architecture "
                          << I->getArchTypeName() << ")"
                          << ":\n";
               }
-              dumpSymbolNamesFromObject(*Obj, false, ArchiveName,
+              dumpSymbolNamesFromObject(Obj, false, ArchiveName,
                                         ArchitectureName);
             } else if (!I->getAsArchive(A)) {
               for (Archive::child_iterator AI = A->child_begin(),
@@ -1138,8 +1138,8 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
           std::string ArchiveName;
           ArchiveName.clear();
           if (ObjOrErr) {
-            std::unique_ptr<ObjectFile> Obj = std::move(ObjOrErr.get());
-            dumpSymbolNamesFromObject(*Obj, false);
+            ObjectFile &Obj = *ObjOrErr.get();
+            dumpSymbolNamesFromObject(Obj, false);
           } else if (!I->getAsArchive(A)) {
             for (Archive::child_iterator AI = A->child_begin(),
                                          AE = A->child_end();
@@ -1177,19 +1177,19 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
       ArchiveName.clear();
       ArchitectureName.clear();
       if (ObjOrErr) {
-        std::unique_ptr<ObjectFile> Obj = std::move(ObjOrErr.get());
+        ObjectFile &Obj = *ObjOrErr.get();
         if (PrintFileName) {
-          if (isa<MachOObjectFile>(Obj.get()) && moreThanOneArch)
+          if (isa<MachOObjectFile>(Obj) && moreThanOneArch)
             ArchitectureName = I->getArchTypeName();
         } else {
           if (moreThanOneArch)
             outs() << "\n";
-          outs() << Obj->getFileName();
-          if (isa<MachOObjectFile>(Obj.get()) && moreThanOneArch)
+          outs() << Obj.getFileName();
+          if (isa<MachOObjectFile>(Obj) && moreThanOneArch)
             outs() << " (for architecture " << I->getArchTypeName() << ")";
           outs() << ":\n";
         }
-        dumpSymbolNamesFromObject(*Obj, false, ArchiveName, ArchitectureName);
+        dumpSymbolNamesFromObject(Obj, false, ArchiveName, ArchitectureName);
       } else if (!I->getAsArchive(A)) {
         for (Archive::child_iterator AI = A->child_begin(), AE = A->child_end();
              AI != AE; ++AI) {
@@ -1220,7 +1220,7 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
     }
     return;
   }
-  if (SymbolicFile *O = dyn_cast<SymbolicFile>(Bin.get())) {
+  if (SymbolicFile *O = dyn_cast<SymbolicFile>(&Bin)) {
     if (!checkMachOAndArchFlags(O, Filename))
       return;
     dumpSymbolNamesFromObject(*O, true);
index 8041a88396aa33dbcd1fa72b88e229f5c5aa865b..9e9526aa3cc675e22d475018da12c5199ddd310e 100644 (file)
@@ -891,11 +891,11 @@ static void DumpInput(StringRef file) {
     errs() << ToolName << ": '" << file << "': " << EC.message() << ".\n";
     return;
   }
-  std::unique_ptr<Binary> binary = std::move(BinaryOrErr.get());
+  Binary &Binary = *BinaryOrErr.get();
 
-  if (Archive *a = dyn_cast<Archive>(binary.get()))
+  if (Archive *a = dyn_cast<Archive>(&Binary))
     DumpArchive(a);
-  else if (ObjectFile *o = dyn_cast<ObjectFile>(binary.get()))
+  else if (ObjectFile *o = dyn_cast<ObjectFile>(&Binary))
     DumpObject(o);
   else
     errs() << ToolName << ": '" << file << "': " << "Unrecognized file type.\n";
index 837b71f05dc4762b528216dbf093b43a6002fd39..6e5b835f511c46e578c98c67d3878f303b87091e 100644 (file)
@@ -292,11 +292,11 @@ static void dumpInput(StringRef File) {
     reportError(File, EC);
     return;
   }
-  std::unique_ptr<Binary> Binary = std::move(BinaryOrErr.get());
+  Binary &Binary = *BinaryOrErr.get();
 
-  if (Archive *Arc = dyn_cast<Archive>(Binary.get()))
+  if (Archive *Arc = dyn_cast<Archive>(&Binary))
     dumpArchive(Arc);
-  else if (ObjectFile *Obj = dyn_cast<ObjectFile>(Binary.get()))
+  else if (ObjectFile *Obj = dyn_cast<ObjectFile>(&Binary))
     dumpObject(Obj);
   else
     reportError(File, readobj_error::unrecognized_file_format);
index 0664d535b8b3877bf1af9368082432bc18cac2bf..24c9cd862feb7ec8f96ec979682fcd5c99a693f7 100644 (file)
@@ -458,9 +458,9 @@ static void PrintFileSectionSizes(StringRef file) {
     errs() << ToolName << ": " << file << ": " << EC.message() << ".\n";
     return;
   }
-  std::unique_ptr<Binary> binary = std::move(BinaryOrErr.get());
+  Binary &Bin = *BinaryOrErr.get();
 
-  if (Archive *a = dyn_cast<Archive>(binary.get())) {
+  if (Archive *a = dyn_cast<Archive>(&Bin)) {
     // This is an archive. Iterate over each member and display its sizes.
     for (object::Archive::child_iterator i = a->child_begin(),
                                          e = a->child_end();
@@ -488,7 +488,7 @@ static void PrintFileSectionSizes(StringRef file) {
       }
     }
   } else if (MachOUniversalBinary *UB =
-                 dyn_cast<MachOUniversalBinary>(binary.get())) {
+                 dyn_cast<MachOUniversalBinary>(&Bin)) {
     // If we have a list of architecture flags specified dump only those.
     if (!ArchAll && ArchFlags.size() != 0) {
       // Look for a slice in the universal binary that matches each ArchFlag.
@@ -692,7 +692,7 @@ static void PrintFileSectionSizes(StringRef file) {
         }
       }
     }
-  } else if (ObjectFile *o = dyn_cast<ObjectFile>(binary.get())) {
+  } else if (ObjectFile *o = dyn_cast<ObjectFile>(&Bin)) {
     if (!checkMachOAndArchFlags(o, file))
       return;
     if (OutputFormat == sysv)
index 7c4743b5dfb925a36e59ba4ee00274da969a14dc..14e193a53736848dd053353f571e393cc83dcf16 100644 (file)
@@ -302,7 +302,7 @@ LLVMSymbolizer::getOrCreateBinary(const std::string &Path) {
   Binary *DbgBin = nullptr;
   ErrorOr<std::unique_ptr<Binary>> BinaryOrErr = createBinary(Path);
   if (!error(BinaryOrErr.getError())) {
-    std::unique_ptr<Binary> ParsedBinary = std::move(BinaryOrErr.get());
+    std::unique_ptr<Binary> &ParsedBinary = BinaryOrErr.get();
     // Check if it's a universal binary.
     Bin = ParsedBinary.get();
     ParsedBinariesAndObjects.push_back(std::move(ParsedBinary));
index d1d8aa4082b6d78a1b0ef8d871df4c70db3f509e..2f6ccb0620acc1bf10785c21bd3657349df95312 100644 (file)
@@ -169,11 +169,11 @@ static void dumpInput(StringRef File) {
     reportError(File, EC);
     return;
   }
-  std::unique_ptr<Binary> Binary = std::move(BinaryOrErr.get());
+  Binary &Binary = *BinaryOrErr.get();
 
-  if (Archive *Arc = dyn_cast<Archive>(Binary.get()))
+  if (Archive *Arc = dyn_cast<Archive>(&Binary))
     dumpArchive(Arc);
-  else if (ObjectFile *Obj = dyn_cast<ObjectFile>(Binary.get()))
+  else if (ObjectFile *Obj = dyn_cast<ObjectFile>(&Binary))
     dumpVTables(Obj);
   else
     reportError(File, vtabledump_error::unrecognized_file_format);
index bbc7aae9f44c2c48aba6cf8c2164883dc3e49552..787aebc058d483adf949c9fa0204c3c0b68bbba8 100644 (file)
@@ -406,9 +406,9 @@ int main(int argc, char **argv) {
   ErrorOr<std::unique_ptr<Binary>> BinaryOrErr = createBinary(InputFile);
   if (std::error_code EC = BinaryOrErr.getError())
     return Error("unable to read input: '" + EC.message() + "'");
-  std::unique_ptr<Binary> Binary = std::move((BinaryOrErr.get()));
+  Binary &Binary = *BinaryOrErr.get();
 
-  const MachOObjectFile *InputObject = dyn_cast<MachOObjectFile>(Binary.get());
+  const MachOObjectFile *InputObject = dyn_cast<MachOObjectFile>(&Binary);
   if (!InputObject)
     return Error("Not a MachO object");
 
index 8d1c1409f1870e65b568a5ff2eb82c21475842cc..dbf5a4acd16e0de8caf549451a7f1f7f0f4a8944 100644 (file)
@@ -36,9 +36,9 @@ static std::error_code dumpInput(StringRef File) {
   if (std::error_code EC = BinaryOrErr.getError())
     return EC;
 
-  std::unique_ptr<Binary> Binary = std::move(BinaryOrErr.get());
+  Binary &Binary = *BinaryOrErr.get();
   // TODO: If this is an archive, then burst it and dump each entry
-  if (ObjectFile *Obj = dyn_cast<ObjectFile>(Binary.get()))
+  if (ObjectFile *Obj = dyn_cast<ObjectFile>(&Binary))
     return dumpObject(*Obj);
 
   return obj2yaml_error::unrecognized_file_format;
index f5699e40c9b34cdf07dd0c4c48666c812697ec86..a9666ac528490fe5226a1f6a0c58ae00848800bb 100644 (file)
@@ -153,8 +153,8 @@ std::unique_ptr<Module> TempFile::readBitcode(LLVMContext &Context) const {
     return nullptr;
   }
 
-  std::unique_ptr<MemoryBuffer> Buffer = std::move(BufferOr.get());
-  ErrorOr<Module *> ModuleOr = parseBitcodeFile(Buffer.get(), Context);
+  MemoryBuffer *Buffer = BufferOr.get().get();
+  ErrorOr<Module *> ModuleOr = parseBitcodeFile(Buffer, Context);
   if (!ModuleOr) {
     DEBUG(dbgs() << "error: " << ModuleOr.getError().message() << "\n");
     return nullptr;
index 9cd1fe75760b1f3deab6bfc1648fa9bd9672b457..8c62ae7f5d147f40f4ca8d6548af14418856f5de 100644 (file)
@@ -1258,7 +1258,7 @@ int main(int argc, char **argv) {
            << "': " << EC.message() << '\n';
     return 2;
   }
-  std::unique_ptr<MemoryBuffer> File = std::move(FileOrErr.get());
+  std::unique_ptr<MemoryBuffer> &File = FileOrErr.get();
 
   if (File->getBufferSize() == 0) {
     errs() << "FileCheck error: '" << InputFilename << "' is empty.\n";
index e88ce5daeba7cd384f1e5d47a952251c42915509..8bd1ea17ea8e2d7e789180e2ea8289eb9cd41747 100644 (file)
@@ -192,15 +192,15 @@ int main(int argc, char **argv) {
         MemoryBuffer::getFileOrSTDIN(Input);
     if (!BufOrErr)
       return 1;
-    std::unique_ptr<MemoryBuffer> Buf = std::move(BufOrErr.get());
+    MemoryBuffer &Buf = *BufOrErr.get();
 
     llvm::SourceMgr sm;
     if (DumpTokens) {
-      yaml::dumpTokens(Buf->getBuffer(), outs());
+      yaml::dumpTokens(Buf.getBuffer(), outs());
     }
 
     if (DumpCanonical) {
-      yaml::Stream stream(Buf->getBuffer(), sm);
+      yaml::Stream stream(Buf.getBuffer(), sm);
       dumpStream(stream);
     }
   }