From: Ted Kremenek Date: Fri, 21 Sep 2012 18:13:23 +0000 (+0000) Subject: Add helper method to BodyFarm for creatinging integral casts. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=69bcb82c59f61a867af3c0de73aa5779d2a6dd7d;p=platform%2Fupstream%2Fllvm.git Add helper method to BodyFarm for creatinging integral casts. llvm-svn: 164396 --- diff --git a/clang/lib/Analysis/BodyFarm.cpp b/clang/lib/Analysis/BodyFarm.cpp index fc874e0..f7fbcc9 100644 --- a/clang/lib/Analysis/BodyFarm.cpp +++ b/clang/lib/Analysis/BodyFarm.cpp @@ -46,8 +46,12 @@ class ASTMaker { public: ASTMaker(ASTContext &C) : C(C) {} + /// Create a new DeclRefExpr for the referenced variable. DeclRefExpr *makeDeclRefExpr(const VarDecl *D); + /// Create an implicit cast for an integer conversion. + ImplicitCastExpr *makeIntegralCast(const Expr *Arg, QualType Ty); + private: ASTContext &C; }; @@ -66,6 +70,11 @@ DeclRefExpr *ASTMaker::makeDeclRefExpr(const VarDecl *D) { return DR; } +ImplicitCastExpr *ASTMaker::makeIntegralCast(const Expr *Arg, QualType Ty) { + return ImplicitCastExpr::Create(C, Ty, CK_IntegralCast, + const_cast(Arg), 0, VK_RValue); +} + //===----------------------------------------------------------------------===// // Creation functions for faux ASTs. //===----------------------------------------------------------------------===// @@ -117,8 +126,7 @@ static Stmt *create_dispatch_once(ASTContext &C, const FunctionDecl *D) { IntegerLiteral *IL = IntegerLiteral::Create(C, llvm::APInt(C.getTypeSize(C.IntTy), (uint64_t) 1), C.IntTy, SourceLocation()); - ICE = ImplicitCastExpr::Create(C, PredicateTy, CK_IntegralCast, IL, 0, - VK_RValue); + ICE = M.makeIntegralCast(IL, PredicateTy); DR = M.makeDeclRefExpr(Predicate); ImplicitCastExpr *LValToRval = ImplicitCastExpr::Create(C, PredicateQPtrTy, CK_LValueToRValue, DR,