diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-04-15 15:58:59 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-04-15 15:58:59 +0000 |
commit | 0253c83610ae3865818629234472fdfeb742adf2 (patch) | |
tree | 8f6db53244599b9451f8d52df11b68ef199e9120 /clang/lib/Frontend/PCHWriter.cpp | |
parent | f747524819641a32440186256761e8973f6aa84d (diff) | |
download | bcm5719-llvm-0253c83610ae3865818629234472fdfeb742adf2.tar.gz bcm5719-llvm-0253c83610ae3865818629234472fdfeb742adf2.zip |
PCH support for UnaryOperator, SizeOfAlignOfExpr
llvm-svn: 69169
Diffstat (limited to 'clang/lib/Frontend/PCHWriter.cpp')
-rw-r--r-- | clang/lib/Frontend/PCHWriter.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/lib/Frontend/PCHWriter.cpp b/clang/lib/Frontend/PCHWriter.cpp index 1dcf9d651f6..dc23fb9d816 100644 --- a/clang/lib/Frontend/PCHWriter.cpp +++ b/clang/lib/Frontend/PCHWriter.cpp @@ -450,6 +450,8 @@ namespace { void VisitFloatingLiteral(FloatingLiteral *E); void VisitCharacterLiteral(CharacterLiteral *E); void VisitParenExpr(ParenExpr *E); + void VisitUnaryOperator(UnaryOperator *E); + void VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *E); void VisitCastExpr(CastExpr *E); void VisitBinaryOperator(BinaryOperator *E); void VisitImplicitCastExpr(ImplicitCastExpr *E); @@ -509,6 +511,28 @@ void PCHStmtWriter::VisitParenExpr(ParenExpr *E) { Code = pch::EXPR_PAREN; } +void PCHStmtWriter::VisitUnaryOperator(UnaryOperator *E) { + VisitExpr(E); + Writer.WriteSubExpr(E->getSubExpr()); + Record.push_back(E->getOpcode()); // FIXME: stable encoding + Writer.AddSourceLocation(E->getOperatorLoc(), Record); + Code = pch::EXPR_UNARY_OPERATOR; +} + +void PCHStmtWriter::VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *E) { + VisitExpr(E); + Record.push_back(E->isSizeOf()); + if (E->isArgumentType()) + Writer.AddTypeRef(E->getArgumentType(), Record); + else { + Record.push_back(0); + Writer.WriteSubExpr(E->getArgumentExpr()); + } + Writer.AddSourceLocation(E->getOperatorLoc(), Record); + Writer.AddSourceLocation(E->getRParenLoc(), Record); + Code = pch::EXPR_SIZEOF_ALIGN_OF; +} + void PCHStmtWriter::VisitCastExpr(CastExpr *E) { VisitExpr(E); Writer.WriteSubExpr(E->getSubExpr()); |