diff options
author | Anna Zaks <ganna@apple.com> | 2012-08-06 23:25:39 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-08-06 23:25:39 +0000 |
commit | c7ecc43c33a21b82c49664910b19fcc1f555aa51 (patch) | |
tree | e08d07f14729a8c26fe7852b8424d0328811b179 /lib/StaticAnalyzer/Core/CallEvent.cpp | |
parent | 71f55f771794674a410171dbf3cb5dbedf95d033 (diff) |
[analyzer] Add a checker to manage dynamic type propagation.
Instead of sprinkling dynamic type info propagation throughout
ExprEngine, the added checker would add the more precise type
information on known APIs (Ex: ObjC alloc, new) and propagate
the type info in other cases (ex: ObjC init method, casts (the second is
not implemented yet)).
Add handling of ObjC alloc, new and init to the checker.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161357 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Core/CallEvent.cpp')
-rw-r--r-- | lib/StaticAnalyzer/Core/CallEvent.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/StaticAnalyzer/Core/CallEvent.cpp b/lib/StaticAnalyzer/Core/CallEvent.cpp index 05147670c1..396e0f6d8d 100644 --- a/lib/StaticAnalyzer/Core/CallEvent.cpp +++ b/lib/StaticAnalyzer/Core/CallEvent.cpp @@ -583,8 +583,8 @@ SVal ObjCMethodCall::getReceiverSVal() const { if (!isInstanceMessage()) return UnknownVal(); - if (const Expr *Base = getOriginExpr()->getInstanceReceiver()) - return getSVal(Base); + if (const Expr *RecE = getOriginExpr()->getInstanceReceiver()) + return getSVal(RecE); // An instance message with no expression means we are sending to super. // In this case the object reference is the same as 'self'. @@ -676,8 +676,8 @@ const Decl *ObjCMethodCall::getRuntimeDefinition() const { if (!Receiver) return 0; - DynamicTypeInfo TI = getState()->getDynamicTypeInfo(Receiver); - ReceiverT = dyn_cast<ObjCObjectPointerType>(TI.getType().getTypePtr()); + QualType DynType = getState()->getDynamicTypeInfo(Receiver).getType(); + ReceiverT = dyn_cast<ObjCObjectPointerType>(DynType.getTypePtr()); } // Lookup the method implementation. @@ -715,7 +715,6 @@ void ObjCMethodCall::getInitialStackFrameContents( } } - CallEventRef<SimpleCall> CallEventManager::getSimpleCall(const CallExpr *CE, ProgramStateRef State, const LocationContext *LCtx) { |