diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-04-15 22:40:36 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-04-15 22:40:36 +0000 |
commit | d4ed114e2353e72d4ba920c1776e101c9c28671d (patch) | |
tree | b77112f0cad5953f98d9013e05a9d147ba390118 /clang/lib/Frontend/PCHReader.cpp | |
parent | 7836eefefc6c4c267530d9b3e65e6bad644aa694 (diff) | |
download | bcm5719-llvm-d4ed114e2353e72d4ba920c1776e101c9c28671d.tar.gz bcm5719-llvm-d4ed114e2353e72d4ba920c1776e101c9c28671d.zip |
PCH support for CompoundAssignOperator and ConditionalOperator
llvm-svn: 69237
Diffstat (limited to 'clang/lib/Frontend/PCHReader.cpp')
-rw-r--r-- | clang/lib/Frontend/PCHReader.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/clang/lib/Frontend/PCHReader.cpp b/clang/lib/Frontend/PCHReader.cpp index 042e56626e0..f9290bac73f 100644 --- a/clang/lib/Frontend/PCHReader.cpp +++ b/clang/lib/Frontend/PCHReader.cpp @@ -252,6 +252,8 @@ namespace { unsigned VisitMemberExpr(MemberExpr *E); unsigned VisitCastExpr(CastExpr *E); unsigned VisitBinaryOperator(BinaryOperator *E); + unsigned VisitCompoundAssignOperator(CompoundAssignOperator *E); + unsigned VisitConditionalOperator(ConditionalOperator *E); unsigned VisitImplicitCastExpr(ImplicitCastExpr *E); unsigned VisitExplicitCastExpr(ExplicitCastExpr *E); unsigned VisitCStyleCastExpr(CStyleCastExpr *E); @@ -401,6 +403,21 @@ unsigned PCHStmtReader::VisitBinaryOperator(BinaryOperator *E) { return 2; } +unsigned PCHStmtReader::VisitCompoundAssignOperator(CompoundAssignOperator *E) { + VisitBinaryOperator(E); + E->setComputationLHSType(Reader.GetType(Record[Idx++])); + E->setComputationResultType(Reader.GetType(Record[Idx++])); + return 2; +} + +unsigned PCHStmtReader::VisitConditionalOperator(ConditionalOperator *E) { + VisitExpr(E); + E->setCond(ExprStack[ExprStack.size() - 3]); + E->setLHS(ExprStack[ExprStack.size() - 2]); + E->setRHS(ExprStack[ExprStack.size() - 1]); + return 3; +} + unsigned PCHStmtReader::VisitImplicitCastExpr(ImplicitCastExpr *E) { VisitCastExpr(E); E->setLvalueCast(Record[Idx++]); @@ -1917,6 +1934,14 @@ Expr *PCHReader::ReadExpr() { E = new (Context) BinaryOperator(Empty); break; + case pch::EXPR_COMPOUND_ASSIGN_OPERATOR: + E = new (Context) CompoundAssignOperator(Empty); + break; + + case pch::EXPR_CONDITIONAL_OPERATOR: + E = new (Context) ConditionalOperator(Empty); + break; + case pch::EXPR_IMPLICIT_CAST: E = new (Context) ImplicitCastExpr(Empty); break; |