aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaExpr.cpp
diff options
context:
space:
mode:
authorRoman Divacky <rdivacky@FreeBSD.org>2009-10-15 07:44:25 +0000
committerRoman Divacky <rdivacky@FreeBSD.org>2009-10-15 07:44:25 +0000
commit98781354c33bdc945ab6ea8c410d36c664ce1f5e (patch)
treebadd8f913c2a7db8d5fbe7d83c862e35e403fd41 /lib/Sema/SemaExpr.cpp
parent4c8b24812ddcd1dedaca343a6d4e76f91f398981 (diff)
downloadsrc-98781354c33bdc945ab6ea8c410d36c664ce1f5e.tar.gz
src-98781354c33bdc945ab6ea8c410d36c664ce1f5e.zip
Update clang to 84175.vendor/clang/clang-r84175
Notes
Notes: svn path=/vendor/clang/dist/; revision=198112 svn path=/vendor/clang/clang-84175/; revision=198129; tag=vendor/clang/clang-r84175
Diffstat (limited to 'lib/Sema/SemaExpr.cpp')
-rw-r--r--lib/Sema/SemaExpr.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index d8e49c7d6941..a946500660e8 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -2917,15 +2917,18 @@ Sema::ActOnCallExpr(Scope *S, ExprArg fn, SourceLocation LParenLoc,
if (BO->getOpcode() == BinaryOperator::PtrMemD ||
BO->getOpcode() == BinaryOperator::PtrMemI) {
const FunctionProtoType *FPT = cast<FunctionProtoType>(BO->getType());
- QualType ReturnTy = FPT->getResultType();
+ QualType ResultTy = FPT->getResultType().getNonReferenceType();
- CXXMemberCallExpr *CE =
- new (Context) CXXMemberCallExpr(Context, BO, Args, NumArgs,
- ReturnTy.getNonReferenceType(),
- RParenLoc);
-
- ExprOwningPtr<CXXMemberCallExpr> TheCall(this, CE);
+ ExprOwningPtr<CXXMemberCallExpr>
+ TheCall(this, new (Context) CXXMemberCallExpr(Context, BO, Args,
+ NumArgs, ResultTy,
+ RParenLoc));
+ if (CheckCallReturnType(FPT->getResultType(),
+ BO->getRHS()->getSourceRange().getBegin(),
+ TheCall.get(), 0))
+ return ExprError();
+
if (ConvertArgumentsForCall(&*TheCall, BO, 0, FPT, Args, NumArgs,
RParenLoc))
return ExprError();