From 91c9502fdf437fce5596631e50db5e70c034312a Mon Sep 17 00:00:00 2001 From: Santiago Aboy Solanes Date: Tue, 16 Jul 2024 13:33:00 +0100 Subject: Update InductionVarRange::Replace to match more cases We were missing to update some cases when `instruction` wasn't present in the induction analysis but `fetch` was. We can use `fetch` itself when querying for the InductionInfo to cover both the previous and new cases. Bug: 351868772 Fixes: 351868772 Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b Test: m test-art-host-gtest Change-Id: I3c412efdef36d242b0182ed80ce62567c0e3eafc --- compiler/optimizing/induction_var_range.cc | 4 ++-- compiler/optimizing/induction_var_range.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'compiler') diff --git a/compiler/optimizing/induction_var_range.cc b/compiler/optimizing/induction_var_range.cc index 767a149636..2f5a22ec0e 100644 --- a/compiler/optimizing/induction_var_range.cc +++ b/compiler/optimizing/induction_var_range.cc @@ -368,8 +368,8 @@ void InductionVarRange::Replace(HInstruction* instruction, for (HLoopInformation* lp = instruction->GetBlock()->GetLoopInformation(); // closest enveloping loop lp != nullptr; lp = lp->GetPreHeader()->GetLoopInformation()) { - // Update instruction's information. - ReplaceInduction(induction_analysis_->LookupInfo(lp, instruction), fetch, replacement); + // Update loop's InductionInfo about fetch. + ReplaceInduction(induction_analysis_->LookupInfo(lp, fetch), fetch, replacement); // Update loop's trip-count information. ReplaceInduction(induction_analysis_->LookupInfo(lp, GetLoopControl(lp)), fetch, replacement); } diff --git a/compiler/optimizing/induction_var_range.h b/compiler/optimizing/induction_var_range.h index a81227b41b..ab497414c9 100644 --- a/compiler/optimizing/induction_var_range.h +++ b/compiler/optimizing/induction_var_range.h @@ -128,8 +128,8 @@ class InductionVarRange { HInstruction* GenerateLastValue(HInstruction* instruction, HGraph* graph, HBasicBlock* block); /** - * Updates all matching fetches with the given replacement in all induction information - * that is associated with the given instruction. + * Updates all matching `fetch`es with the given `replacement` in all induction information + * that is present in the loops of the given `instruction`. */ void Replace(HInstruction* instruction, HInstruction* fetch, HInstruction* replacement); -- cgit v1.2.3-59-g8ed1b