summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGExpr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/CodeGen/CGExpr.cpp')
-rw-r--r--clang/lib/CodeGen/CGExpr.cpp14
1 files changed, 3 insertions, 11 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index cbe19825f9b..753af76bf24 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -69,17 +69,9 @@ llvm::Value *CodeGenFunction::EvaluateExprAsBool(const Expr *E) {
if (E->getType()->isMemberFunctionPointerType()) {
LValue LV = EmitAggExprToLValue(E);
- // Get the pointer.
- llvm::Value *FuncPtr = Builder.CreateStructGEP(LV.getAddress(), 0,
- "src.ptr");
- FuncPtr = Builder.CreateLoad(FuncPtr);
-
- llvm::Value *IsNotNull =
- Builder.CreateICmpNE(FuncPtr,
- llvm::Constant::getNullValue(FuncPtr->getType()),
- "tobool");
-
- return IsNotNull;
+ return CGM.getCXXABI().EmitMemberFunctionPointerIsNotNull(CGF,
+ LV.getAddress(),
+ E->getType()->getAs<MemberPointerType>());
}
if (!E->getType()->isAnyComplexType())
return EmitScalarConversion(EmitScalarExpr(E), E->getType(), BoolTy);
OpenPOWER on IntegriCloud