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