Add clang_getDiagnosticSetFromTU() to libclang.  Fixes <rdar://problem/10553081>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146287 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/libclang/CIndexDiagnostic.cpp b/tools/libclang/CIndexDiagnostic.cpp
index a29e3a6..ceb6405 100644
--- a/tools/libclang/CIndexDiagnostic.cpp
+++ b/tools/libclang/CIndexDiagnostic.cpp
@@ -98,15 +98,22 @@
 }
 
 CXDiagnostic clang_getDiagnostic(CXTranslationUnit Unit, unsigned Index) {
-  if (!Unit->TUData)
+  CXDiagnosticSet D = clang_getDiagnosticSetFromTU(Unit);
+  if (!D)
     return 0;
 
-  CXDiagnosticSetImpl *Diags = lazyCreateDiags(Unit);
+  CXDiagnosticSetImpl *Diags = static_cast<CXDiagnosticSetImpl*>(D);
   if (Index >= Diags->getNumDiagnostics())
     return 0;
 
   return Diags->getDiagnostic(Index);
 }
+  
+CXDiagnosticSet clang_getDiagnosticSetFromTU(CXTranslationUnit Unit) {
+  if (!Unit->TUData)
+    return 0;
+  return static_cast<CXDiagnostic>(lazyCreateDiags(Unit));
+}
 
 void clang_disposeDiagnostic(CXDiagnostic Diagnostic) {
   // No-op.  Kept as a legacy API.  CXDiagnostics are now managed