Since we use C++11, we should switch over to using std::unique_ptr when C++11 is being used. To do this, we follow what we have done for shared pointers and we define a STD_UNIQUE_PTR macro that can be used and it will "do the right thing". Due to some API differences in std::unique_ptr and due to the fact that we need to be able to compile without C++11, we can't use move semantics so some code needed to change so that it can compile with either C++.

Anyone wanting to use a unique_ptr or auto_ptr should now use the "STD_UNIQUE_PTR(TYPE)" macro.

llvm-svn: 179779
diff --git a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
index 9eb22fd..b9f7936 100644
--- a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
+++ b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
@@ -472,6 +472,10 @@
         m_is_valid = false;
 }
 
+DisassemblerLLVMC::LLVMCDisassembler::~LLVMCDisassembler()
+{
+}
+
 namespace {
     // This is the memory object we use in GetInstruction.
     class LLDBDisasmMemoryObject : public llvm::MemoryObject {
@@ -563,7 +567,7 @@
 {
     if (arch.GetTriple().getArch() != llvm::Triple::UnknownArch)
     {
-        std::auto_ptr<DisassemblerLLVMC> disasm_ap (new DisassemblerLLVMC(arch, flavor));
+        STD_UNIQUE_PTR(DisassemblerLLVMC) disasm_ap (new DisassemblerLLVMC(arch, flavor));
     
         if (disasm_ap.get() && disasm_ap->IsValid())
             return disasm_ap.release();
diff --git a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.h b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.h
index 7428b6b..4b9cee2 100644
--- a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.h
+++ b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.h
@@ -43,7 +43,7 @@
     public:
         LLVMCDisassembler (const char *triple, unsigned flavor, DisassemblerLLVMC &owner);
         
-        ~LLVMCDisassembler() {};
+        ~LLVMCDisassembler();
         
         uint64_t GetMCInst (const uint8_t *opcode_data, size_t opcode_data_len, lldb::addr_t pc, llvm::MCInst &mc_inst);
         uint64_t PrintMCInst (llvm::MCInst &mc_inst, char *output_buffer, size_t out_buffer_len);
@@ -54,14 +54,14 @@
         }
         
     private:
-        bool                                 m_is_valid;
-        std::auto_ptr<llvm::MCContext>       m_context_ap;
-        std::auto_ptr<llvm::MCAsmInfo>       m_asm_info_ap;
-        std::auto_ptr<llvm::MCSubtargetInfo> m_subtarget_info_ap;
-        std::auto_ptr<llvm::MCInstrInfo>     m_instr_info_ap;
-        std::auto_ptr<llvm::MCRegisterInfo>  m_reg_info_ap;
-        std::auto_ptr<llvm::MCInstPrinter>   m_instr_printer_ap;
-        std::auto_ptr<llvm::MCDisassembler>  m_disasm_ap;
+        bool                                    m_is_valid;
+        STD_UNIQUE_PTR(llvm::MCContext)         m_context_ap;
+        STD_UNIQUE_PTR(llvm::MCAsmInfo)         m_asm_info_ap;
+        STD_UNIQUE_PTR(llvm::MCSubtargetInfo)   m_subtarget_info_ap;
+        STD_UNIQUE_PTR(llvm::MCInstrInfo)       m_instr_info_ap;
+        STD_UNIQUE_PTR(llvm::MCRegisterInfo)    m_reg_info_ap;
+        STD_UNIQUE_PTR(llvm::MCInstPrinter)     m_instr_printer_ap;
+        STD_UNIQUE_PTR(llvm::MCDisassembler)    m_disasm_ap;
     };
 
 public:
@@ -164,8 +164,8 @@
     lldb_private::Mutex m_mutex;
     bool m_data_from_file;
     
-    std::auto_ptr<LLVMCDisassembler> m_disasm_ap;
-    std::auto_ptr<LLVMCDisassembler> m_alternate_disasm_ap;
+    STD_UNIQUE_PTR(LLVMCDisassembler) m_disasm_ap;
+    STD_UNIQUE_PTR(LLVMCDisassembler) m_alternate_disasm_ap;
 };
 
 #endif  // liblldb_DisassemblerLLVM_h_