From 69d75ffac23fe1e655b7e81f0454c2841280dc1f Mon Sep 17 00:00:00 2001 From: Mingyao Yang Date: Tue, 7 Feb 2017 13:06:06 -0800 Subject: Skip loop optimization if there is no loop in the graph. LinearizeGraph() does quite some allocations. Also add some comments on the possible false positives of some flags. Test: m test-art-host Change-Id: I80ef89a2dc031d601e7621d0b22060cd8c17fae3 --- compiler/optimizing/loop_optimization.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'compiler/optimizing/loop_optimization.cc') diff --git a/compiler/optimizing/loop_optimization.cc b/compiler/optimizing/loop_optimization.cc index 95838380cc..26c9ab83c2 100644 --- a/compiler/optimizing/loop_optimization.cc +++ b/compiler/optimizing/loop_optimization.cc @@ -71,7 +71,7 @@ HLoopOptimization::HLoopOptimization(HGraph* graph, void HLoopOptimization::Run() { // Well-behaved loops only. // TODO: make this less of a sledgehammer. - if (graph_->HasTryCatch() || graph_->HasIrreducibleLoops()) { + if (!graph_->HasLoops() || graph_->HasTryCatch() || graph_->HasIrreducibleLoops()) { return; } @@ -84,6 +84,10 @@ void HLoopOptimization::Run() { // Perform loop optimizations. LocalRun(); + if (top_loop_ == nullptr) { + graph_->SetHasLoops(false); + } + // Detach. loop_allocator_ = nullptr; last_loop_ = top_loop_ = nullptr; -- cgit v1.2.3-59-g8ed1b