diff options
author | Mingyao Yang <mingyao@google.com> | 2017-02-07 13:06:06 -0800 |
---|---|---|
committer | Mingyao Yang <mingyao@google.com> | 2017-02-17 12:21:46 -0800 |
commit | 69d75ffac23fe1e655b7e81f0454c2841280dc1f (patch) | |
tree | 88432364dd096bdd5674f48fb26e77f08cbf0dc6 /compiler/optimizing/loop_optimization.cc | |
parent | d8a16ba050978e4fe1447089002040a0047a5b3a (diff) |
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
Diffstat (limited to 'compiler/optimizing/loop_optimization.cc')
-rw-r--r-- | compiler/optimizing/loop_optimization.cc | 6 |
1 files changed, 5 insertions, 1 deletions
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; |