diff options
Diffstat (limited to 'compiler/optimizing/nodes.cc')
| -rw-r--r-- | compiler/optimizing/nodes.cc | 14 | 
1 files changed, 10 insertions, 4 deletions
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc index 5f33ed6303..d39c2aded5 100644 --- a/compiler/optimizing/nodes.cc +++ b/compiler/optimizing/nodes.cc @@ -1111,10 +1111,10 @@ bool HInstructionList::FoundBefore(const HInstruction* instruction1,    return true;  } -bool HInstruction::StrictlyDominates(HInstruction* other_instruction) const { +bool HInstruction::Dominates(HInstruction* other_instruction, bool strictly) const {    if (other_instruction == this) {      // An instruction does not strictly dominate itself. -    return false; +    return !strictly;    }    HBasicBlock* block = GetBlock();    HBasicBlock* other_block = other_instruction->GetBlock(); @@ -1148,6 +1148,10 @@ bool HInstruction::StrictlyDominates(HInstruction* other_instruction) const {    }  } +bool HInstruction::StrictlyDominates(HInstruction* other_instruction) const { +  return Dominates(other_instruction, /* strictly */ true); +} +  void HInstruction::RemoveEnvironment() {    RemoveEnvironmentUses(this);    environment_ = nullptr; @@ -1170,14 +1174,16 @@ void HInstruction::ReplaceWith(HInstruction* other) {    DCHECK(env_uses_.empty());  } -void HInstruction::ReplaceUsesDominatedBy(HInstruction* dominator, HInstruction* replacement) { +void HInstruction::ReplaceUsesDominatedBy(HInstruction* dominator, +                                          HInstruction* replacement, +                                          bool strictly) {    const HUseList<HInstruction*>& uses = GetUses();    for (auto it = uses.begin(), end = uses.end(); it != end; /* ++it below */) {      HInstruction* user = it->GetUser();      size_t index = it->GetIndex();      // Increment `it` now because `*it` may disappear thanks to user->ReplaceInput().      ++it; -    if (dominator->StrictlyDominates(user)) { +    if (dominator->Dominates(user, strictly)) {        user->ReplaceInput(replacement, index);      }    }  |