diff options
author | Jordy Rose <jediknil@belkadan.com> | 2011-08-28 05:16:28 +0000 |
---|---|---|
committer | Jordy Rose <jediknil@belkadan.com> | 2011-08-28 05:16:28 +0000 |
commit | e38dd95dddb8f1b38469c8d0e28aa1c660489324 (patch) | |
tree | f1c3f67e9095321d3ddd5c2bb829fa5afe2cae47 /lib/StaticAnalyzer/Core/ExprEngineObjC.cpp | |
parent | 537716ad8dd10f984b6cfe6985afade1185c5e3c (diff) |
[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.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138718 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Core/ExprEngineObjC.cpp')
-rw-r--r-- | lib/StaticAnalyzer/Core/ExprEngineObjC.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp b/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp index 6cfe8cdc93..a80b2bfb7e 100644 --- a/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp +++ b/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); } |