Fix scheduler's `FieldAccessHeapLocation()`.
Use the correct target for predicated get.
Also remove an always-false condition from LSE.
Test: m
Bug: 188188275
Bug: 188847019
Change-Id: I731e181c8c0d812120dc4fad0c011158053fa7a8
diff --git a/compiler/optimizing/load_store_elimination.cc b/compiler/optimizing/load_store_elimination.cc
index 05862e3..d7cae76 100644
--- a/compiler/optimizing/load_store_elimination.cc
+++ b/compiler/optimizing/load_store_elimination.cc
@@ -2143,8 +2143,7 @@
size_t idx = phi_placeholder.GetHeapLocation();
for (HBasicBlock* predecessor : block->GetPredecessors()) {
Value value = ReplacementOrValue(heap_values_for_[predecessor->GetBlockId()][idx].value);
- if (value.NeedsNonLoopPhi() ||
- (current_phase_ == Phase::kPartialElimination && value.IsMergedUnknown())) {
+ if (value.NeedsNonLoopPhi()) {
DCHECK(current_phase_ == Phase::kLoadElimination ||
current_phase_ == Phase::kPartialElimination)
<< current_phase_;