From ba67d7d31efbbdc6e8e8870b2cf0faf7d22db454 Mon Sep 17 00:00:00 2001 From: Shih-wei Liao Date: Sat, 23 Jun 2012 18:48:04 -0700 Subject: Revert "Cleanup runtime support. Inline via IR builder." This reverts commit afa97e2b4ede9c5fb590399b106a42728ce3b999. --- src/compiler_llvm/compilation_unit.cc | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'src/compiler_llvm/compilation_unit.cc') diff --git a/src/compiler_llvm/compilation_unit.cc b/src/compiler_llvm/compilation_unit.cc index cdfd42224f..38faf618cf 100644 --- a/src/compiler_llvm/compilation_unit.cc +++ b/src/compiler_llvm/compilation_unit.cc @@ -128,10 +128,9 @@ class AddSuspendCheckToLoopLatchPass : public llvm::LoopPass { virtual void getAnalysisUsage(llvm::AnalysisUsage &AU) const { AU.addRequiredID(llvm::LoopSimplifyID); - // TODO: Preserve more. - //AU.addPreserved(); + AU.addPreserved(); AU.addPreserved(); - //AU.addPreservedID(llvm::LoopSimplifyID); + AU.addPreservedID(llvm::LoopSimplifyID); AU.addPreserved(); AU.addPreservedID(llvm::BreakCriticalEdgesID); } @@ -141,13 +140,11 @@ class AddSuspendCheckToLoopLatchPass : public llvm::LoopPass { llvm::BasicBlock* bb = loop->getLoopLatch(); CHECK_NE(bb, static_cast(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 @@ CompilationUnit::CompilationUnit(InstructionSet insn_set, size_t elf_idx) break; } + runtime_support_->OptimizeRuntimeSupport(); + irb_->SetRuntimeSupport(runtime_support_.get()); } @@ -353,10 +352,8 @@ bool CompilationUnit::MaterializeToFile(llvm::raw_ostream& out_stream) { // 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; -- cgit v1.2.3-59-g8ed1b