From f57c1ae3682f95e6d7ce08ae4c241d04b09de658 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Wed, 28 Jun 2017 17:40:18 +0100 Subject: Prevent loop optimization in debuggable mode. bug: 33775412 Test: no scanner crash (torn on whether I should spend some time working on a smali test) Change-Id: I8b94725ce57171b592bede4bf55cd0a9626a8a10 --- compiler/optimizing/loop_optimization.cc | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'compiler/optimizing/loop_optimization.cc') diff --git a/compiler/optimizing/loop_optimization.cc b/compiler/optimizing/loop_optimization.cc index d2493137fe..0bf5720f4f 100644 --- a/compiler/optimizing/loop_optimization.cc +++ b/compiler/optimizing/loop_optimization.cc @@ -1448,6 +1448,12 @@ bool HLoopOptimization::VectorizeHalvingAddIdiom(LoopNode* node, // 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* set = induction_range_.LookupCycle(phi); if (set != nullptr) { -- cgit v1.2.3-59-g8ed1b