Fix inliner crash related to type propagation.

- Do not agressively try to resolve a return type.
- Deal with unresolved return type.

bug:25492619

Change-Id: Idc9c96a0b376fe5ee86b411c02ce7078c7f48c84
diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc
index d861e39..fe528a0 100644
--- a/compiler/optimizing/inliner.cc
+++ b/compiler/optimizing/inliner.cc
@@ -1279,10 +1279,14 @@
         // some functionality from the reference type propagation.
         DCHECK(return_replacement->IsPhi());
         size_t pointer_size = Runtime::Current()->GetClassLinker()->GetImagePointerSize();
-        ReferenceTypeInfo::TypeHandle return_handle =
-            handles_->NewHandle(resolved_method->GetReturnType(true /* resolve */, pointer_size));
-        return_replacement->SetReferenceTypeInfo(ReferenceTypeInfo::Create(
-            return_handle, return_handle->CannotBeAssignedFromOtherTypes() /* is_exact */));
+        mirror::Class* cls = resolved_method->GetReturnType(false /* resolve */, pointer_size);
+        if (cls != nullptr) {
+          ReferenceTypeInfo::TypeHandle return_handle= handles_->NewHandle(cls);
+          return_replacement->SetReferenceTypeInfo(ReferenceTypeInfo::Create(
+              return_handle, return_handle->CannotBeAssignedFromOtherTypes() /* is_exact */));
+        } else {
+          return_replacement->SetReferenceTypeInfo(graph_->GetInexactObjectRti());
+        }
       }
 
       if (do_rtp) {