Fix LSE to track type conversions correctly.

Add a new state to LSE's `Value` class to mark loads that
depend on loop Phi placeholders but may require a type
conversion. We store the load in the `Value` and use the
`loads_requiring_loop_phi_[load->GetId()]->value` to form
a singly-linked list leading to the actual Phi placeholder.
During `LSEVisitor::ProcessLoadsRequiringLoopPhis()`, we may
replace these records, so a walk over the singly-linked list
in that stage can terminate with a replacement instruction
instead of the loop Phi placeholder.

Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 341476044
Change-Id: Id8f2edf4dfaa82dc3f25ddf47f3fe1da8f2fb3ea
4 files changed