-Changes to TagDecl:
  Added TagKind enum.
  Added getTagKind() method.
  Added convenience methods: isEnum(), isStruct(), isUnion(), isClass().
-RecordDecl/CXXRecordDecl::Create() accept a TagKind enum instead of a DeclKind one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52160 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index b5dba10..47334f5 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -101,10 +101,17 @@
   return new (Mem) EnumDecl(DC, L, Id, PrevDecl);
 }
 
-RecordDecl *RecordDecl::Create(ASTContext &C, Kind DK, DeclContext *DC,
+RecordDecl *RecordDecl::Create(ASTContext &C, TagKind TK, DeclContext *DC,
                                SourceLocation L, IdentifierInfo *Id,
                                ScopedDecl *PrevDecl) {
   void *Mem = C.getAllocator().Allocate<RecordDecl>();
+  Kind DK;
+  switch (TK) {
+  case TK_enum:   assert(0 && "Enum TagKind passed for Record!");
+  case TK_struct: DK = Struct; break;
+  case TK_union:  DK = Union;  break;
+  case TK_class:  DK = Class;  break;
+  }
   return new (Mem) RecordDecl(DK, DC, L, Id, PrevDecl);
 }