summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp
diff options
context:
space:
mode:
authorJordy Rose <jediknil@belkadan.com>2011-08-28 05:16:28 +0000
committerJordy Rose <jediknil@belkadan.com>2011-08-28 05:16:28 +0000
commitd188d66e69bbc67114d5b2487c91a19038e078c7 (patch)
tree5adb37c6738b121bbbd25ffa4426ea3476dc2972 /clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp
parent7bfd86d0468d276e2ed97635e910418986b8bf73 (diff)
downloadbcm5719-llvm-d188d66e69bbc67114d5b2487c91a19038e078c7.tar.gz
bcm5719-llvm-d188d66e69bbc67114d5b2487c91a19038e078c7.zip
[analyzer] Migrate argument invalidation from CFRefCount to ExprEngine.
This is a common path for function and C++ method calls, Objective-C messages and property accesses, and C++ construct-exprs. As support, add message receiver accessors to ObjCMessage and CallOrObjCMessage. llvm-svn: 138718
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp
index 6cfe8cdc93e..a80b2bfb7e0 100644
--- a/clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp
@@ -273,7 +273,12 @@ void ExprEngine::evalObjCMessage(ExplodedNodeSet &Dst, const ObjCMessage &msg,
// Bind the return value.
state = state->BindExpr(currentStmt, ReturnValue);
+ // Invalidate the arguments (and the receiver)
+ const LocationContext *LC = Pred->getLocationContext();
+ state = invalidateArguments(state, CallOrObjCMessage(msg, state), LC);
+ Builder->MakeNode(Dst, msg.getOriginExpr(), Pred, state);
+
// Now we can handle the other aspects of the message.
- getTF().evalObjCMessage(Dst, *this, *Builder, msg, Pred, state);
+ //getTF().evalObjCMessage(Dst, *this, *Builder, msg, Pred, state);
}
OpenPOWER on IntegriCloud