diff options
author | Francois Pichet <pichet2000@gmail.com> | 2010-12-07 00:08:36 +0000 |
---|---|---|
committer | Francois Pichet <pichet2000@gmail.com> | 2010-12-07 00:08:36 +0000 |
commit | 6ad6f2848d7652ab2991286eb48be440d3493b28 (patch) | |
tree | 3a11fabb88a3184176e7c1cd8aa5658c8b4633b3 /lib/Serialization/ASTWriterStmt.cpp | |
parent | 1fd9e0def66fbd50e99be5ff87c9fd1c91c428ab (diff) |
Type traits intrinsic implementation: __is_base_of(T, U)
New AST node introduced: BinaryTypeTraitExpr; to be reused for more intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121074 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Serialization/ASTWriterStmt.cpp')
-rw-r--r-- | lib/Serialization/ASTWriterStmt.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Serialization/ASTWriterStmt.cpp b/lib/Serialization/ASTWriterStmt.cpp index 80f9a2980c..5e00b86cf3 100644 --- a/lib/Serialization/ASTWriterStmt.cpp +++ b/lib/Serialization/ASTWriterStmt.cpp @@ -149,6 +149,7 @@ namespace clang { void VisitUnresolvedLookupExpr(UnresolvedLookupExpr *E); void VisitUnaryTypeTraitExpr(UnaryTypeTraitExpr *E); + void VisitBinaryTypeTraitExpr(BinaryTypeTraitExpr *E); void VisitCXXNoexceptExpr(CXXNoexceptExpr *E); void VisitOpaqueValueExpr(OpaqueValueExpr *E); @@ -1285,6 +1286,16 @@ void ASTStmtWriter::VisitUnaryTypeTraitExpr(UnaryTypeTraitExpr *E) { Code = serialization::EXPR_CXX_UNARY_TYPE_TRAIT; } +void ASTStmtWriter::VisitBinaryTypeTraitExpr(BinaryTypeTraitExpr *E) { + VisitExpr(E); + Record.push_back(E->getTrait()); + Record.push_back(E->getValue()); + Writer.AddSourceRange(E->getSourceRange(), Record); + Writer.AddTypeSourceInfo(E->getLhsTypeSourceInfo(), Record); + Writer.AddTypeSourceInfo(E->getRhsTypeSourceInfo(), Record); + Code = serialization::EXPR_CXX_BINARY_TYPE_TRAIT; +} + void ASTStmtWriter::VisitCXXNoexceptExpr(CXXNoexceptExpr *E) { VisitExpr(E); Record.push_back(E->getValue()); |