aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/Expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/AST/Expr.cpp')
-rw-r--r--lib/AST/Expr.cpp9
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp
index 6a4b6b0493..14b7b51ebb 100644
--- a/lib/AST/Expr.cpp
+++ b/lib/AST/Expr.cpp
@@ -139,7 +139,7 @@ void CallExpr::setNumArgs(unsigned NumArgs) {
this->NumArgs = NumArgs;
}
-bool CallExpr::isBuiltinConstantExpr() const {
+bool CallExpr::isBuiltinConstantExpr(ASTContext &Ctx) const {
// All simple function calls (e.g. func()) are implicitly cast to pointer to
// function. As a result, we try and obtain the DeclRefExpr from the
// ImplicitCastExpr.
@@ -159,10 +159,7 @@ bool CallExpr::isBuiltinConstantExpr() const {
if (!builtinID)
return false;
- // We have a builtin that is a constant expression
- return builtinID == Builtin::BI__builtin___CFStringMakeConstantString ||
- builtinID == Builtin::BI__builtin_classify_type ||
- builtinID == Builtin::BI__builtin_huge_valf;
+ return Ctx.BuiltinInfo.isConstantExpr(builtinID);
}
bool CallExpr::isBuiltinClassifyType(llvm::APSInt &Result) const {
@@ -585,7 +582,7 @@ bool Expr::isConstantExpr(ASTContext &Ctx, SourceLocation *Loc) const {
return true;
case CallExprClass: {
const CallExpr *CE = cast<CallExpr>(this);
- if (CE->isBuiltinConstantExpr())
+ if (CE->isBuiltinConstantExpr(Ctx))
return true;
if (Loc) *Loc = getLocStart();
return false;