diff options
| author | 2015-12-14 05:45:01 -0800 | |
|---|---|---|
| committer | 2015-12-14 05:45:01 -0800 | |
| commit | c57108d49e99f5da452b8356d491222a0fe539c8 (patch) | |
| tree | 9f4e4ffb5fae25c4f14059fd1d772726e9d96170 /compiler/optimizing/ssa_phi_elimination.cc | |
| parent | d3523f2b461a0051e511a22c731bfb388135a836 (diff) | |
| parent | 795accfff05abfb69f54003ee3f096ef3ff6f1e4 (diff) | |
Merge "ART: Refactor SsaBuilder for more precise typing info"
am: 795accfff0
* commit '795accfff05abfb69f54003ee3f096ef3ff6f1e4':
ART: Refactor SsaBuilder for more precise typing info
Diffstat (limited to 'compiler/optimizing/ssa_phi_elimination.cc')
| -rw-r--r-- | compiler/optimizing/ssa_phi_elimination.cc | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/compiler/optimizing/ssa_phi_elimination.cc b/compiler/optimizing/ssa_phi_elimination.cc index a3219dcc38..63aba88c2b 100644 --- a/compiler/optimizing/ssa_phi_elimination.cc +++ b/compiler/optimizing/ssa_phi_elimination.cc @@ -40,15 +40,17 @@ void SsaDeadPhiElimination::MarkDeadPhis() { continue; } - bool has_non_phi_use = false; - for (HUseIterator<HInstruction*> use_it(phi->GetUses()); !use_it.Done(); use_it.Advance()) { - if (!use_it.Current()->GetUser()->IsPhi()) { - has_non_phi_use = true; - break; + bool keep_alive = (graph_->IsDebuggable() && phi->HasEnvironmentUses()); + if (!keep_alive) { + for (HUseIterator<HInstruction*> use_it(phi->GetUses()); !use_it.Done(); use_it.Advance()) { + if (!use_it.Current()->GetUser()->IsPhi()) { + keep_alive = true; + break; + } } } - if (has_non_phi_use) { + if (keep_alive) { worklist_.push_back(phi); } else { phi->SetDead(); @@ -94,8 +96,8 @@ void SsaDeadPhiElimination::EliminateDeadPhis() { for (HUseIterator<HInstruction*> use_it(phi->GetUses()); !use_it.Done(); use_it.Advance()) { HInstruction* user = use_it.Current()->GetUser(); - DCHECK(user->IsLoopHeaderPhi()) << user->GetId(); - DCHECK(user->AsPhi()->IsDead()) << user->GetId(); + DCHECK(user->IsLoopHeaderPhi()); + DCHECK(user->AsPhi()->IsDead()); } } // Remove the phi from use lists of its inputs. |