Revert "Cleanup runtime support. Inline via IR builder."

This reverts commit afa97e2b4ede9c5fb590399b106a42728ce3b999.
diff --git a/src/compiler_llvm/compilation_unit.cc b/src/compiler_llvm/compilation_unit.cc
index cdfd422..38faf61 100644
--- a/src/compiler_llvm/compilation_unit.cc
+++ b/src/compiler_llvm/compilation_unit.cc
@@ -128,10 +128,9 @@
   virtual void getAnalysisUsage(llvm::AnalysisUsage &AU) const {
     AU.addRequiredID(llvm::LoopSimplifyID);
 
-    // TODO: Preserve more.
-    //AU.addPreserved<llvm::DominatorTree>();
+    AU.addPreserved<llvm::DominatorTree>();
     AU.addPreserved<llvm::LoopInfo>();
-    //AU.addPreservedID(llvm::LoopSimplifyID);
+    AU.addPreservedID(llvm::LoopSimplifyID);
     AU.addPreserved<llvm::ScalarEvolution>();
     AU.addPreservedID(llvm::BreakCriticalEdgesID);
   }
@@ -141,13 +140,11 @@
     llvm::BasicBlock* bb = loop->getLoopLatch();
     CHECK_NE(bb, static_cast<void*>(NULL)) << "A single loop latch must exist.";
 
-    llvm::BasicBlock* tb = bb->splitBasicBlock(bb->getTerminator(), "suspend_exit");
-    // Remove unconditional branch which is added by splitBasicBlock.
-    bb->getTerminator()->eraseFromParent();
+    irb_->SetInsertPoint(bb->getTerminator());
 
-    irb_->SetInsertPoint(bb);
-    irb_->Runtime().EmitTestSuspend();
-    irb_->CreateBr(tb);
+    using art::compiler_llvm::runtime_support::TestSuspend;
+    llvm::Value* runtime_func = irb_->GetRuntime(TestSuspend);
+    irb_->CreateCall(runtime_func, irb_->getJNull());
 
     return true;
   }
@@ -198,6 +195,8 @@
     break;
   }
 
+  runtime_support_->OptimizeRuntimeSupport();
+
   irb_->SetRuntimeSupport(runtime_support_.get());
 }
 
@@ -353,10 +352,8 @@
 
   // Add optimization pass
   llvm::PassManagerBuilder pm_builder;
-  // TODO: Use inliner after we can do IPO.
-  pm_builder.Inliner = NULL;
   //pm_builder.Inliner = llvm::createFunctionInliningPass();
-  //pm_builder.Inliner = llvm::createAlwaysInlinerPass();
+  pm_builder.Inliner = llvm::createAlwaysInlinerPass();
   //pm_builder.Inliner = llvm::createPartialInliningPass();
   pm_builder.OptLevel = 3;
   pm_builder.DisableSimplifyLibCalls = 1;