Check invocation's side effects for LSE.

More optimization is allowed if an invocation doesn't do read/write.

Test: run-test on host.
Change-Id: Id80e2fa90b8c843afd852778e8f7e6c69c765ad5
diff --git a/compiler/optimizing/escape.cc b/compiler/optimizing/escape.cc
index 9df5bf1..88e9326 100644
--- a/compiler/optimizing/escape.cc
+++ b/compiler/optimizing/escape.cc
@@ -51,7 +51,9 @@
       *is_singleton_and_not_returned = false;
       *is_singleton_and_not_deopt_visible = false;
       return;
-    } else if (user->IsPhi() || user->IsSelect() || user->IsInvoke() ||
+    } else if (user->IsPhi() ||
+               user->IsSelect() ||
+               (user->IsInvoke() && user->GetSideEffects().DoesAnyWrite()) ||
                (user->IsInstanceFieldSet() && (reference == user->InputAt(1))) ||
                (user->IsUnresolvedInstanceFieldSet() && (reference == user->InputAt(1))) ||
                (user->IsStaticFieldSet() && (reference == user->InputAt(1))) ||