Improved MSVC __interface support by adding first class support for it, instead of aliasing to "struct" which had some incorrect behaviour. Patch by David Robins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163013 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp
index d5cf4d0..212923421 100644
--- a/lib/CodeGen/CGDebugInfo.cpp
+++ b/lib/CodeGen/CGDebugInfo.cpp
@@ -520,13 +520,13 @@
   const CXXRecordDecl *CXXDecl = dyn_cast<CXXRecordDecl>(RD);
   unsigned Tag = 0;
   if (CXXDecl) {
-    RDName = getClassName(RD);
-    Tag = llvm::dwarf::DW_TAG_class_type;
-  }
-  else if (RD->isStruct())
-    Tag = llvm::dwarf::DW_TAG_structure_type;
-  else if (RD->isUnion())
-    Tag = llvm::dwarf::DW_TAG_union_type;
+    RDName = getClassName(RD);

+    Tag = llvm::dwarf::DW_TAG_class_type;

+  }

+  else if (RD->isStruct() || RD->isInterface())

+    Tag = llvm::dwarf::DW_TAG_structure_type;

+  else if (RD->isUnion())

+    Tag = llvm::dwarf::DW_TAG_union_type;

   else
     llvm_unreachable("Unknown RecordDecl type!");