Manage llvm::TargetMachine with smart pointer.

We should delete llvm::TargetMachine if we don't have to
use it anymore; otherwise we will suffer from the memory
leak.

Change-Id: I776c3447b7e73531f2c99a3b082dfbeebcd4af22
diff --git a/src/compiler_llvm/compilation_unit.cc b/src/compiler_llvm/compilation_unit.cc
index 4e2f16f..e7f77e2 100644
--- a/src/compiler_llvm/compilation_unit.cc
+++ b/src/compiler_llvm/compilation_unit.cc
@@ -327,12 +327,12 @@
   target_options.EnableFastISel = true;
 
   // Create the llvm::TargetMachine
-  llvm::TargetMachine* target_machine =
+  llvm::OwningPtr<llvm::TargetMachine> target_machine(
     target->createTargetMachine(target_triple, "", target_attr, target_options,
                                 llvm::Reloc::Static, llvm::CodeModel::Small,
-                                llvm::CodeGenOpt::Aggressive);
+                                llvm::CodeGenOpt::Aggressive));
 
-  CHECK(target_machine != NULL) << "Failed to create target machine";
+  CHECK(target_machine.get() != NULL) << "Failed to create target machine";
 
   // Add target data
   llvm::TargetData const* target_data = target_machine->getTargetData();