summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaChecking.cpp
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2015-04-23 16:14:19 +0000
committerAaron Ballman <aaron@aaronballman.com>2015-04-23 16:14:19 +0000
commitb673c65cb2e98fb10fca106165a3df31d08be8b9 (patch)
treee56ee01492b2532b82920ea6dfb0b399594f09e8 /clang/lib/Sema/SemaChecking.cpp
parent1710cc994ecd3b422a54a35117b089adff4d42c1 (diff)
downloadbcm5719-llvm-b673c65cb2e98fb10fca106165a3df31d08be8b9.tar.gz
bcm5719-llvm-b673c65cb2e98fb10fca106165a3df31d08be8b9.zip
Extend format specifier checking to include field function pointers in addition to variable function pointers. Addresses PR21082.
llvm-svn: 235606
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r--clang/lib/Sema/SemaChecking.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index 05eaaec5792..fd91c77bf12 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -1289,11 +1289,14 @@ bool Sema::CheckObjCMethodCall(ObjCMethodDecl *Method, SourceLocation lbrac,
bool Sema::CheckPointerCall(NamedDecl *NDecl, CallExpr *TheCall,
const FunctionProtoType *Proto) {
- const VarDecl *V = dyn_cast<VarDecl>(NDecl);
- if (!V)
+ QualType Ty;
+ if (const auto *V = dyn_cast<VarDecl>(NDecl))
+ Ty = V->getType();
+ else if (const auto *F = dyn_cast<FieldDecl>(NDecl))
+ Ty = F->getType();
+ else
return false;
- QualType Ty = V->getType();
if (!Ty->isBlockPointerType() && !Ty->isFunctionPointerType())
return false;
OpenPOWER on IntegriCloud