]> granicus.if.org Git - clang/commitdiff
Create helper method in BodyFarm for creating simple assignments.
authorTed Kremenek <kremenek@apple.com>
Fri, 21 Sep 2012 18:33:54 +0000 (18:33 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 21 Sep 2012 18:33:54 +0000 (18:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164400 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/BodyFarm.cpp

index 2faacd4ea3e04b38bf0fb8ce9e5eb692cb699c25..54c8ab4430080f8c757498910a3daba67ec57ec5 100644 (file)
@@ -46,6 +46,9 @@ class ASTMaker {
 public:
   ASTMaker(ASTContext &C) : C(C) {}
   
+  /// Create a new BinaryOperator representing a simple assignment.
+  BinaryOperator *makeAssignment(const Expr *LHS, const Expr *RHS, QualType Ty);
+  
   /// Create a new DeclRefExpr for the referenced variable.
   DeclRefExpr *makeDeclRefExpr(const VarDecl *D);
   
@@ -63,6 +66,13 @@ private:
 };
 }
 
+BinaryOperator *ASTMaker::makeAssignment(const Expr *LHS, const Expr *RHS,
+                                         QualType Ty) {
+ return new (C) BinaryOperator(const_cast<Expr*>(LHS), const_cast<Expr*>(RHS),
+                               BO_Assign, Ty, VK_RValue,
+                               OK_Ordinary, SourceLocation());
+}
+
 DeclRefExpr *ASTMaker::makeDeclRefExpr(const VarDecl *D) {
   DeclRefExpr *DR =
     DeclRefExpr::Create(/* Ctx = */ C,
@@ -145,10 +155,8 @@ static Stmt *create_dispatch_once(ASTContext &C, const FunctionDecl *D) {
   DR = M.makeDeclRefExpr(Predicate);
   ImplicitCastExpr *LValToRval = M.makeLvalueToRvalue(DR, PredicateQPtrTy);
   UnaryOperator *UO = M.makeDereference(LValToRval, PredicateTy);
-  BinaryOperator *B = new (C) BinaryOperator(UO, ICE, BO_Assign,
-                                             PredicateTy, VK_RValue,
-                                             OK_Ordinary,
-                                             SourceLocation());
+  BinaryOperator * B = M.makeAssignment(UO, ICE, PredicateTy);
+
   // (3) Create the compound statement.
   Stmt *Stmts[2];
   Stmts[0] = B;