diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-04-11 22:22:05 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-04-11 22:22:05 +0000 |
commit | 8ef59e5c03c937056cd0282fe9747be2978a973e (patch) | |
tree | b9f9cf1866a36f33f7a9bb0a42d935582b4c4d2a /clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp | |
parent | 0f85789800846dc3beeab75bd7e8d3af0f26a362 (diff) | |
download | bcm5719-llvm-8ef59e5c03c937056cd0282fe9747be2978a973e.tar.gz bcm5719-llvm-8ef59e5c03c937056cd0282fe9747be2978a973e.zip |
C++ static analysis: also invalidate fields of objects that are the callees in C++ method calls.
llvm-svn: 129308
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp b/clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp index c44d36ae49f..c005819c9c9 100644 --- a/clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp +++ b/clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp @@ -111,7 +111,7 @@ const Expr *ObjCMessage::getArgExpr(unsigned i) const { QualType CallOrObjCMessage::getResultType(ASTContext &ctx) const { QualType resultTy; bool isLVal = false; - + if (CallE) { isLVal = CallE->isLValue(); const Expr *Callee = CallE->getCallee(); @@ -140,3 +140,10 @@ SVal CallOrObjCMessage::getArgSValAsScalarOrLoc(unsigned i) const { return Msg.getArgSVal(i, State); return UnknownVal(); } + +SVal CallOrObjCMessage::getCXXCallee() const { + assert(isCXXCall()); + const Expr *callee = + cast<CXXMemberCallExpr>(CallE)->getImplicitObjectArgument(); + return State->getSVal(callee); +} |