summaryrefslogtreecommitdiff
path: root/compiler/optimizing/loop_optimization.cc
diff options
context:
space:
mode:
authorAart Bik <ajcbik@google.com>2017-06-28 22:33:32 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-06-28 22:33:32 +0000
commit76754cc816af46b41a8d1f419a38334b5db59b6e (patch)
tree9a04d4a9811c5f196b29c144875a57818e8815d9 /compiler/optimizing/loop_optimization.cc
parent3dc94c4763ecab28c0053d5d07e332c61a3f781b (diff)
parentf57c1ae3682f95e6d7ce08ae4c241d04b09de658 (diff)
Merge "Prevent loop optimization in debuggable mode."
Diffstat (limited to 'compiler/optimizing/loop_optimization.cc')
-rw-r--r--compiler/optimizing/loop_optimization.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/optimizing/loop_optimization.cc b/compiler/optimizing/loop_optimization.cc
index d39bc16ed2..32f40024d3 100644
--- a/compiler/optimizing/loop_optimization.cc
+++ b/compiler/optimizing/loop_optimization.cc
@@ -1550,6 +1550,12 @@ uint32_t HLoopOptimization::GetUnrollingFactor(HBasicBlock* block, int64_t trip_
//
bool HLoopOptimization::TrySetPhiInduction(HPhi* phi, bool restrict_uses) {
+ // Special case Phis that have equivalent in a debuggable setup. Our graph checker isn't
+ // smart enough to follow strongly connected components (and it's probably not worth
+ // it to make it so). See b/33775412.
+ if (graph_->IsDebuggable() && phi->HasEquivalentPhi()) {
+ return false;
+ }
DCHECK(iset_->empty());
ArenaSet<HInstruction*>* set = induction_range_.LookupCycle(phi);
if (set != nullptr) {