From: Anders Carlsson Date: Fri, 5 Dec 2008 05:18:05 +0000 (+0000) Subject: Handle __builtin___CFStringMakeConstantString in Expr::Evaluate. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b3fee0f06422074f5c62144b727434562815c691;p=clang Handle __builtin___CFStringMakeConstantString in Expr::Evaluate. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60581 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/ExprConstant.cpp b/lib/AST/ExprConstant.cpp index 9eeaa868a5..28440f40f5 100644 --- a/lib/AST/ExprConstant.cpp +++ b/lib/AST/ExprConstant.cpp @@ -207,6 +207,7 @@ public: APValue VisitBinaryOperator(const BinaryOperator *E); APValue VisitCastExpr(const CastExpr* E); + APValue VisitCallExpr(CallExpr *E); APValue VisitUnaryOperator(const UnaryOperator *E); APValue VisitObjCStringLiteral(ObjCStringLiteral *E) { return APValue(E, 0); } @@ -266,7 +267,6 @@ APValue PointerExprEvaluator::VisitUnaryOperator(const UnaryOperator *E) { return APValue(); } - APValue PointerExprEvaluator::VisitCastExpr(const CastExpr* E) { const Expr* SubExpr = E->getSubExpr(); @@ -299,6 +299,15 @@ APValue PointerExprEvaluator::VisitCastExpr(const CastExpr* E) { return APValue(); } +APValue PointerExprEvaluator::VisitCallExpr(CallExpr *E) +{ + switch (E->isBuiltinCall()) { + default: return APValue(); + case Builtin::BI__builtin___CFStringMakeConstantString: + return APValue(E, 0); + } +} + APValue PointerExprEvaluator::VisitConditionalOperator(ConditionalOperator *E) { bool BoolResult; if (!HandleConversionToBool(E->getCond(), BoolResult, Info))