Avoid cases of deriving information from unresolved types giving conflict.

Previously non-trivial merges of unresolved types resulted in conflict
(bottom), introduce a new type to represent this case. Similarly
implement a type for unresolved super classes.

Change-Id: Ib84ba082cb9409ad3acaa49dafbc6b1dd1c7772d
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 5bd69e8..df14a41 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -2045,6 +2045,11 @@
       LOG(FATAL) << "Verification failed hard on class " << PrettyDescriptor(klass)
                  << " at compile time, but succeeded at runtime! The verifier must be broken.";
     }
+    if (!preverified && verifier_failure != verifier::MethodVerifier::kNoFailure) {
+      LOG(WARNING) << "Soft verification failure in class " << PrettyDescriptor(klass)
+          << " in " << klass->GetDexCache()->GetLocation()->ToModifiedUtf8()
+          << " because: " << error_msg;
+    }
     DCHECK(!Thread::Current()->IsExceptionPending());
     CHECK(verifier_failure == verifier::MethodVerifier::kNoFailure ||
           Runtime::Current()->IsCompiler());