Implemented serialization for IdentifierInfo and IdentifierTable.
Updated serialization test code in the driver to test serialization of
these types.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43266 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Basic/TokenKinds.cpp b/Basic/TokenKinds.cpp
index 772925b..f1c1e9f 100644
--- a/Basic/TokenKinds.cpp
+++ b/Basic/TokenKinds.cpp
@@ -12,6 +12,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "clang/Basic/TokenKinds.h"
+#include "llvm/Bitcode/Serialization.h"
 #include <cassert>
 using namespace clang;
 
@@ -26,3 +27,37 @@
   assert(Kind < tok::NUM_TOKENS);
   return TokNames[Kind];
 }
+
+// Serialization traits for TokenKind, PPKeywordKind, and ObjCKeywordKind
+
+void llvm::SerializeTrait<tok::TokenKind>::Serialize(llvm::Serializer& S,
+                                                     tok::TokenKind X) {
+  S.EmitEnum(X,0,tok::NUM_TOKENS-1);
+}
+
+void llvm::SerializeTrait<tok::TokenKind>::Deserialize(llvm::Deserializer& D,
+                                                       tok::TokenKind& X) {
+  X = D.ReadEnum<tok::TokenKind>(0,tok::NUM_TOKENS-1);
+}
+
+void llvm::SerializeTrait<tok::PPKeywordKind>::Serialize(llvm::Serializer& S,
+                                                       tok::PPKeywordKind X) {
+  S.EmitEnum(X,0,tok::NUM_PP_KEYWORDS-1);
+}
+
+void llvm::SerializeTrait<tok::PPKeywordKind>::Deserialize(llvm::Deserializer& D,
+                                                      tok::PPKeywordKind& X) {
+  X = D.ReadEnum<tok::PPKeywordKind>(0,tok::NUM_PP_KEYWORDS-1);
+}
+
+void
+llvm::SerializeTrait<tok::ObjCKeywordKind>::Serialize(llvm::Serializer& S,
+                                                      tok::ObjCKeywordKind X) {
+  S.EmitEnum(X,0,tok::NUM_OBJC_KEYWORDS-1);
+}
+
+void
+llvm::SerializeTrait<tok::ObjCKeywordKind>::Deserialize(llvm::Deserializer& D,
+                                                     tok::ObjCKeywordKind& X) {
+  X = D.ReadEnum<tok::ObjCKeywordKind>(0,tok::NUM_OBJC_KEYWORDS-1);
+}
\ No newline at end of file