diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-10-11 02:20:01 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-10-11 02:20:01 +0000 |
commit | df14b3a8377fd020857ea6301d572d76c5a21221 (patch) | |
tree | 46eb29fa0be24fdcce2916d35e6e4c0b1e59e63c /clang/lib/Serialization/ASTWriterStmt.cpp | |
parent | 8782734bccd44f0bdce89b78606082fae9aabd74 (diff) | |
download | bcm5719-llvm-df14b3a8377fd020857ea6301d572d76c5a21221.tar.gz bcm5719-llvm-df14b3a8377fd020857ea6301d572d76c5a21221.zip |
Initial implementation of __atomic_* (everything except __atomic_is_lock_free).
llvm-svn: 141632
Diffstat (limited to 'clang/lib/Serialization/ASTWriterStmt.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTWriterStmt.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp index fb5617551e9..7e2d45c5e7f 100644 --- a/clang/lib/Serialization/ASTWriterStmt.cpp +++ b/clang/lib/Serialization/ASTWriterStmt.cpp @@ -736,6 +736,21 @@ void ASTStmtWriter::VisitGenericSelectionExpr(GenericSelectionExpr *E) { Code = serialization::EXPR_GENERIC_SELECTION; } +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()); + } + Writer.AddSourceLocation(E->getBuiltinLoc(), Record); + Writer.AddSourceLocation(E->getRParenLoc(), Record); +} + //===----------------------------------------------------------------------===// // Objective-C Expressions and Statements. //===----------------------------------------------------------------------===// |