aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2012-09-21 18:33:54 +0000
committerTed Kremenek <kremenek@apple.com>2012-09-21 18:33:54 +0000
commitb80e5bb7c7c47e06f2ff9c2f9d4b6b138db180e2 (patch)
tree4c0903bfcb3feaca339469ea03859fc52b6288d7 /lib/Analysis
parent0b5c5e487bbbdeb2a7688e6c753d3b2a7c337604 (diff)
Create helper method in BodyFarm for creating simple assignments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164400 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis')
-rw-r--r--lib/Analysis/BodyFarm.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/Analysis/BodyFarm.cpp b/lib/Analysis/BodyFarm.cpp
index 2faacd4ea3..54c8ab4430 100644
--- a/lib/Analysis/BodyFarm.cpp
+++ b/lib/Analysis/BodyFarm.cpp
@@ -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;