diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-04-10 22:49:28 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-04-10 22:49:28 +0000 |
commit | e1b2abc2ed3f2c98985b06b4ad01c977bd584020 (patch) | |
tree | 00c5639500ef04b3f6555f66d8e790513d935632 /lib/Serialization/ASTWriterStmt.cpp | |
parent | edec2ee3bcde5ade31a76e329dcc4ac0fa7c7d11 (diff) |
AtomicExpr: make ASTStmtReader a friend and remove setters. Also fix saving
of an uninitialized Stmt* in serialization of __atomic_init and add a test of
atomics serialization.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154448 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Serialization/ASTWriterStmt.cpp')
-rw-r--r-- | lib/Serialization/ASTWriterStmt.cpp | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/lib/Serialization/ASTWriterStmt.cpp b/lib/Serialization/ASTWriterStmt.cpp index eac7e1fb73..827caa026a 100644 --- a/lib/Serialization/ASTWriterStmt.cpp +++ b/lib/Serialization/ASTWriterStmt.cpp @@ -751,14 +751,8 @@ void ASTStmtWriter::VisitPseudoObjectExpr(PseudoObjectExpr *E) { void ASTStmtWriter::VisitAtomicExpr(AtomicExpr *E) { VisitExpr(E); Record.push_back(E->getOp()); - Writer.AddStmt(E->getPtr()); - Writer.AddStmt(E->getOrder()); - if (E->getOp() != AtomicExpr::Load) - Writer.AddStmt(E->getVal1()); - if (E->isCmpXChg()) { - Writer.AddStmt(E->getOrderFail()); - Writer.AddStmt(E->getVal2()); - } + for (unsigned I = 0, N = E->getNumSubExprs(); I != N; ++I) + Writer.AddStmt(E->getSubExprs()[I]); Writer.AddSourceLocation(E->getBuiltinLoc(), Record); Writer.AddSourceLocation(E->getRParenLoc(), Record); Code = serialization::EXPR_ATOMIC; |