diff options
author | Roman Divacky <rdivacky@FreeBSD.org> | 2009-10-15 07:44:25 +0000 |
---|---|---|
committer | Roman Divacky <rdivacky@FreeBSD.org> | 2009-10-15 07:44:25 +0000 |
commit | 98781354c33bdc945ab6ea8c410d36c664ce1f5e (patch) | |
tree | badd8f913c2a7db8d5fbe7d83c862e35e403fd41 /lib/Sema/SemaExpr.cpp | |
parent | 4c8b24812ddcd1dedaca343a6d4e76f91f398981 (diff) | |
download | src-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.cpp | 17 |
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(); |