diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-11-07 17:11:58 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-11-07 17:11:58 +0000 |
commit | 1ba485e582edfc8636afc25a6d7453c869530688 (patch) | |
tree | 9124eb41360c7cebb0afe32bf9c18fc823bb786b | |
parent | 96f22423c52c22d263b4e5f7ee762122b607459e (diff) |
Implemented serialiation of PreDefinedExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43823 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | AST/StmtSerialization.cpp | 18 | ||||
-rw-r--r-- | include/clang/AST/Expr.h | 3 |
2 files changed, 20 insertions, 1 deletions
diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp index 4595acc226..2d6376c4a9 100644 --- a/AST/StmtSerialization.cpp +++ b/AST/StmtSerialization.cpp @@ -82,6 +82,9 @@ Stmt* Stmt::Materialize(llvm::Deserializer& D) { case ParenExprClass: return ParenExpr::directMaterialize(D); + case PreDefinedExprClass: + return PreDefinedExpr::directMaterialize(D); + case ReturnStmtClass: return ReturnStmt::directMaterialize(D); @@ -333,7 +336,20 @@ ParenExpr* ParenExpr::directMaterialize(llvm::Deserializer& D) { SourceLocation R = SourceLocation::ReadVal(D); Expr* val = D.ReadOwnedPtr<Expr>(); return new ParenExpr(L,R,val); -} +} + +void PreDefinedExpr::directEmit(llvm::Serializer& S) const { + S.Emit(Loc); + S.EmitInt(getIdentType()); + S.Emit(getType()); +} + +PreDefinedExpr* PreDefinedExpr::directMaterialize(llvm::Deserializer& D) { + SourceLocation Loc = SourceLocation::ReadVal(D); + IdentType it = static_cast<IdentType>(D.ReadInt()); + QualType Q = QualType::ReadVal(D); + return new PreDefinedExpr(Loc,Q,it); +} void ReturnStmt::directEmit(llvm::Serializer& S) const { S.Emit(RetLoc); diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index 6a06e5702a..9b04f26b5d 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -175,6 +175,9 @@ public: // Iterators virtual child_iterator child_begin(); virtual child_iterator child_end(); + + virtual void directEmit(llvm::Serializer& S) const; + static PreDefinedExpr* directMaterialize(llvm::Deserializer& D); }; class IntegerLiteral : public Expr { |