On Oct 10, 2011, at 7:20 PM, Eli Friedman wrote: > Author: efriedma > Date: Mon Oct 10 21:20:01 2011 > New Revision: 141632 > > URL: http://llvm.org/viewvc/llvm-project?rev=141632&view=rev > Log: > Initial implementation of __atomic_* (everything except > __atomic_is_lock_free).
Cool. > Modified: cfe/trunk/lib/AST/StmtProfile.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtProfile.cpp?rev=141632&r1=141631&r2=141632&view=diff > ============================================================================== > --- cfe/trunk/lib/AST/StmtProfile.cpp (original) > +++ cfe/trunk/lib/AST/StmtProfile.cpp Mon Oct 10 21:20:01 2011 > @@ -468,6 +468,10 @@ > } > } > > +void StmtProfiler::VisitAtomicExpr(const AtomicExpr *S) { > + VisitExpr(S); > +} You should also add the AtomicOp to the profile. > > Modified: cfe/trunk/lib/Sema/TreeTransform.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/TreeTransform.h?rev=141632&r1=141631&r2=141632&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/TreeTransform.h (original) > +++ cfe/trunk/lib/Sema/TreeTransform.h Mon Oct 10 21:20:01 2011 > @@ -8099,6 +8099,13 @@ > TreeTransform<Derived>::TransformAsTypeExpr(AsTypeExpr *E) { > llvm_unreachable("Cannot transform asType expressions yet"); > } > + > +template<typename Derived> > +ExprResult > +TreeTransform<Derived>::TransformAtomicExpr(AtomicExpr *E) { > + assert(false && "Cannot transform atomic expressions yet"); > + return SemaRef.Owned(E); > +} Will this be filled in prior to our 3.0 branching? > //===----------------------------------------------------------------------===// > // Type reconstruction > > Modified: cfe/trunk/lib/Serialization/ASTReaderStmt.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReaderStmt.cpp?rev=141632&r1=141631&r2=141632&view=diff > ============================================================================== > --- cfe/trunk/lib/Serialization/ASTReaderStmt.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTReaderStmt.cpp Mon Oct 10 21:20:01 2011 > @@ -774,6 +774,25 @@ > E->RParenLoc = ReadSourceLocation(Record, Idx); > } > > +void ASTStmtReader::VisitAtomicExpr(AtomicExpr *E) { > + VisitExpr(E); > + E->setOp(AtomicExpr::AtomicOp(Record[Idx++])); > + E->setPtr(Reader.ReadSubExpr()); > + E->setOrder(Reader.ReadSubExpr()); > + E->setNumSubExprs(2); > + if (E->getOp() != AtomicExpr::Load) { > + E->setVal1(Reader.ReadSubExpr()); > + E->setNumSubExprs(3); > + } > + if (E->isCmpXChg()) { > + E->setOrderFail(Reader.ReadSubExpr()); > + E->setVal2(Reader.ReadSubExpr()); > + E->setNumSubExprs(5); > + } > + E->setBuiltinLoc(ReadSourceLocation(Record, Idx)); > + E->setRParenLoc(ReadSourceLocation(Record, Idx)); > +} > + > //===----------------------------------------------------------------------===// > // Objective-C Expressions and Statements > > @@ -2010,6 +2029,10 @@ > case EXPR_ASTYPE: > S = new (Context) AsTypeExpr(Empty); > break; > + > + case EXPR_ATOMIC: > + S = new (Context) AtomicExpr(Empty); > + break; > } > > // We hit a STMT_STOP, so we're done with this expression. > > Modified: cfe/trunk/lib/Serialization/ASTWriterStmt.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriterStmt.cpp?rev=141632&r1=141631&r2=141632&view=diff > ============================================================================== > --- cfe/trunk/lib/Serialization/ASTWriterStmt.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTWriterStmt.cpp Mon Oct 10 21:20:01 2011 > @@ -736,6 +736,21 @@ > 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. > //===----------------------------------------------------------------------===// Test for PCH reading/writing? - Doug _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
