LSE improvement: better singleton array optimization

Rationale:
In a recent LSA/LSE refactoring, we removed the "exceptional"
situation on mismatched arrays from the load-elimination branch
for merged values. As a direct result, we can relax the condition
on removing stores for singleton arrays into return blocks a bit,
as done in this CL (and shown with some tests).

Test: test-art-host,target

Bug: b/77906240

Change-Id: I32c89057168730f82d1d7c41155a9ff71b126204
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h
index e786502..09d9c57 100644
--- a/compiler/optimizing/nodes.h
+++ b/compiler/optimizing/nodes.h
@@ -1285,6 +1285,7 @@
   void SetLifetimeEnd(size_t end) { lifetime_end_ = end; }
 
   bool EndsWithControlFlowInstruction() const;
+  bool EndsWithReturn() const;
   bool EndsWithIf() const;
   bool EndsWithTryBoundary() const;
   bool HasSinglePhi() const;