Use std::unique_ptr to make the ownership explicit.

llvm-svn: 214377
diff --git a/llvm/lib/Object/Binary.cpp b/llvm/lib/Object/Binary.cpp
index 552d5db..89e9d73 100644
--- a/llvm/lib/Object/Binary.cpp
+++ b/llvm/lib/Object/Binary.cpp
@@ -38,8 +38,9 @@
   return Data->getBufferIdentifier();
 }
 
-ErrorOr<Binary *> object::createBinary(std::unique_ptr<MemoryBuffer> Buffer,
-                                       LLVMContext *Context) {
+ErrorOr<std::unique_ptr<Binary>>
+object::createBinary(std::unique_ptr<MemoryBuffer> Buffer,
+                     LLVMContext *Context) {
   sys::fs::file_magic Type = sys::fs::identify_magic(Buffer->getBuffer());
 
   switch (Type) {
@@ -74,7 +75,7 @@
   llvm_unreachable("Unexpected Binary File Type");
 }
 
-ErrorOr<Binary *> object::createBinary(StringRef Path) {
+ErrorOr<std::unique_ptr<Binary>> object::createBinary(StringRef Path) {
   ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr =
       MemoryBuffer::getFileOrSTDIN(Path);
   if (std::error_code EC = FileOrErr.getError())
diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp
index 46ef87d..5ba3b78 100644
--- a/llvm/lib/Object/COFFObjectFile.cpp
+++ b/llvm/lib/Object/COFFObjectFile.cpp
@@ -1112,12 +1112,12 @@
   return object_error::success;
 }
 
-ErrorOr<ObjectFile *>
+ErrorOr<std::unique_ptr<COFFObjectFile>>
 ObjectFile::createCOFFObjectFile(std::unique_ptr<MemoryBuffer> Object) {
   std::error_code EC;
   std::unique_ptr<COFFObjectFile> Ret(
       new COFFObjectFile(std::move(Object), EC));
   if (EC)
     return EC;
-  return Ret.release();
+  return std::move(Ret);
 }
diff --git a/llvm/lib/Object/ELFObjectFile.cpp b/llvm/lib/Object/ELFObjectFile.cpp
index 4f0f60b..199ea35 100644
--- a/llvm/lib/Object/ELFObjectFile.cpp
+++ b/llvm/lib/Object/ELFObjectFile.cpp
@@ -17,7 +17,7 @@
 namespace llvm {
 using namespace object;
 
-ErrorOr<ObjectFile *>
+ErrorOr<std::unique_ptr<ObjectFile>>
 ObjectFile::createELFObjectFile(std::unique_ptr<MemoryBuffer> &Obj) {
   std::pair<unsigned char, unsigned char> Ident =
       getElfArchType(Obj->getBuffer());
@@ -80,7 +80,7 @@
 
   if (EC)
     return EC;
-  return R.release();
+  return std::move(R);
 }
 
 } // end namespace llvm
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index fe5c29d..613364d 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -1721,7 +1721,7 @@
   }
 }
 
-ErrorOr<ObjectFile *>
+ErrorOr<std::unique_ptr<MachOObjectFile>>
 ObjectFile::createMachOObjectFile(std::unique_ptr<MemoryBuffer> &Buffer) {
   StringRef Magic = Buffer->getBuffer().slice(0, 4);
   std::error_code EC;
@@ -1739,6 +1739,6 @@
 
   if (EC)
     return EC;
-  return Ret.release();
+  return std::move(Ret);
 }
 
diff --git a/llvm/lib/Object/Object.cpp b/llvm/lib/Object/Object.cpp
index 567d87f..2b3861b 100644
--- a/llvm/lib/Object/Object.cpp
+++ b/llvm/lib/Object/Object.cpp
@@ -60,9 +60,10 @@
 // ObjectFile creation
 LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf) {
   std::unique_ptr<MemoryBuffer> Buf(unwrap(MemBuf));
-  ErrorOr<ObjectFile *> ObjOrErr(ObjectFile::createObjectFile(Buf));
+  ErrorOr<std::unique_ptr<ObjectFile>> ObjOrErr(
+      ObjectFile::createObjectFile(Buf));
   Buf.release();
-  ObjectFile *Obj = ObjOrErr ? ObjOrErr.get() : nullptr;
+  ObjectFile *Obj = ObjOrErr ? ObjOrErr.get().release() : nullptr;
   return wrap(Obj);
 }
 
diff --git a/llvm/lib/Object/ObjectFile.cpp b/llvm/lib/Object/ObjectFile.cpp
index f5488c6..0e77541 100644
--- a/llvm/lib/Object/ObjectFile.cpp
+++ b/llvm/lib/Object/ObjectFile.cpp
@@ -11,6 +11,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "llvm/Object/COFF.h"
+#include "llvm/Object/MachO.h"
 #include "llvm/Object/ObjectFile.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/FileSystem.h"
@@ -45,7 +47,7 @@
   return section_iterator(SectionRef(Sec, this));
 }
 
-ErrorOr<ObjectFile *>
+ErrorOr<std::unique_ptr<ObjectFile>>
 ObjectFile::createObjectFile(std::unique_ptr<MemoryBuffer> &Object,
                              sys::fs::file_magic Type) {
   if (Type == sys::fs::file_magic::unknown)
@@ -82,7 +84,8 @@
   llvm_unreachable("Unexpected Object File Type");
 }
 
-ErrorOr<ObjectFile *> ObjectFile::createObjectFile(StringRef ObjectPath) {
+ErrorOr<std::unique_ptr<ObjectFile>>
+ObjectFile::createObjectFile(StringRef ObjectPath) {
   ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr =
       MemoryBuffer::getFile(ObjectPath);
   if (std::error_code EC = FileOrErr.getError())
diff --git a/llvm/lib/Object/SymbolicFile.cpp b/llvm/lib/Object/SymbolicFile.cpp
index 30cf1a0..790d5a7 100644
--- a/llvm/lib/Object/SymbolicFile.cpp
+++ b/llvm/lib/Object/SymbolicFile.cpp
@@ -25,7 +25,7 @@
 
 SymbolicFile::~SymbolicFile() {}
 
-ErrorOr<SymbolicFile *>
+ErrorOr<std::unique_ptr<SymbolicFile>>
 SymbolicFile::createSymbolicFile(std::unique_ptr<MemoryBuffer> &Object,
                                  sys::fs::file_magic Type,
                                  LLVMContext *Context) {