Lines Matching refs:RefVal
75 class RefVal { class
136 RefVal(Kind k, RetEffect::ObjKind o, unsigned cnt, unsigned acnt, QualType t, in RefVal() function in __anon2c14ddf20111::RefVal
198 static RefVal makeOwned(RetEffect::ObjKind o, QualType t, in makeOwned()
200 return RefVal(Owned, o, Count, 0, t, IvarAccessHistory::None); in makeOwned()
207 static RefVal makeNotOwned(RetEffect::ObjKind o, QualType t, in makeNotOwned()
209 return RefVal(NotOwned, o, Count, 0, t, IvarAccessHistory::None); in makeNotOwned()
212 RefVal operator-(size_t i) const { in operator -()
213 return RefVal(getKind(), getObjKind(), getCount() - i, in operator -()
217 RefVal operator+(size_t i) const { in operator +()
218 return RefVal(getKind(), getObjKind(), getCount() + i, in operator +()
222 RefVal operator^(Kind k) const { in operator ^()
223 return RefVal(k, getObjKind(), getCount(), getAutoreleaseCount(), in operator ^()
227 RefVal autorelease() const { in autorelease()
228 return RefVal(getKind(), getObjKind(), getCount(), getAutoreleaseCount()+1, in autorelease()
232 RefVal withIvarAccess() const { in withIvarAccess()
234 return RefVal(getKind(), getObjKind(), getCount(), getAutoreleaseCount(), in withIvarAccess()
238 RefVal releaseViaIvar() const { in releaseViaIvar()
240 return RefVal(getKind(), getObjKind(), getCount(), getAutoreleaseCount(), in releaseViaIvar()
246 bool hasSameState(const RefVal &X) const { in hasSameState()
251 bool operator==(const RefVal& X) const { in operator ==()
267 void RefVal::print(raw_ostream &Out) const { in print()
333 case RefVal::ErrorOverAutorelease: in print()
337 case RefVal::ErrorReturnedNotOwned: in print()
362 REGISTER_MAP_WITH_PROGRAMSTATE(RefBindings, SymbolRef, RefVal) in REGISTER_MAP_WITH_PROGRAMSTATE()
364 static inline const RefVal *getRefBinding(ProgramStateRef State, in REGISTER_MAP_WITH_PROGRAMSTATE()
370 SymbolRef Sym, RefVal Val) { in setRefBinding()
1508 if (const RefVal *T = getRefBinding(State, Sym)) in getInstanceMethodSummary()
1903 const RefVal* CurrT = getRefBinding(CurrSt, Sym); in VisitNode()
1906 const RefVal &CurrV = *CurrT; in VisitNode()
1907 const RefVal *PrevT = getRefBinding(PrevSt, Sym); in VisitNode()
2046 RefVal PrevV = *PrevT; in VisitNode()
2055 if (CurrV.getKind() == RefVal::Released) { in VisitNode()
2079 if (CurrV.getKind() == RefVal::Released) { in VisitNode()
2100 case RefVal::Owned: in VisitNode()
2101 case RefVal::NotOwned: in VisitNode()
2120 if (PrevV.getKind() == RefVal::Released) { in VisitNode()
2128 case RefVal::Released: in VisitNode()
2130 RefVal::IvarAccessHistory::ReleasedAfterDirectAccess && in VisitNode()
2137 case RefVal::ReturnedOwned: in VisitNode()
2146 case RefVal::ReturnedNotOwned: in VisitNode()
2342 const RefVal* RV = getRefBinding(EndN->getState(), Sym); in getEndPath()
2345 if (RV->getKind() == RefVal::ErrorLeakReturned) { in getEndPath()
2374 else if (RV->getKind() == RefVal::ErrorGCLeakReturned) { in getEndPath()
2648 ExplodedNode *Pred, RetEffect RE, RefVal X,
2655 RefVal V, ArgEffect E, RefVal::Kind &hasErr,
2659 RefVal::Kind ErrorKind, SymbolRef Sym,
2667 SymbolRef sid, RefVal V,
2673 SymbolRef Sym, RefVal V) const;
2764 const RefVal* T = getRefBinding(state, Sym); in checkPostStmt()
2768 RefVal::Kind hasErr = (RefVal::Kind) 0; in checkPostStmt()
2786 if (const RefVal* T = getRefBinding(state, sym)) { in processObjCLiterals()
2787 RefVal::Kind hasErr = (RefVal::Kind) 0; in processObjCLiterals()
2802 RefVal::makeNotOwned(RetEffect::ObjC, ResultTy)); in processObjCLiterals()
2829 RefVal::makeNotOwned(RetEffect::ObjC, ResultTy)); in checkPostStmt()
2871 if (const RefVal *RV = getRefBinding(State, Sym)) { in checkPostStmt()
2874 if (RV->getIvarAccessHistory() != RefVal::IvarAccessHistory::None || in checkPostStmt()
2884 RefVal PlusZero = RefVal::makeNotOwned(Kind, Ty); in checkPostStmt()
2994 RefVal::makeNotOwned(RetEffect::CF, PointeeTy)); in updateOutParameter()
3015 RefVal::Kind hasErr = (RefVal::Kind) 0; in checkSummary()
3026 if (const RefVal *T = getRefBinding(state, Sym)) { in checkSummary()
3043 if (const RefVal *T = getRefBinding(state, Sym)) { in checkSummary()
3090 state = setRefBinding(state, Sym, RefVal::makeOwned(RE.getObjKind(), in checkSummary()
3107 state = setRefBinding(state, Sym, RefVal::makeNotOwned(RE.getObjKind(), in checkSummary()
3136 RefVal V, ArgEffect E, RefVal::Kind &hasErr, in updateSymbol()
3162 if (!C.isObjCGCEnabled() && V.getKind() == RefVal::Released) { in updateSymbol()
3163 V = V ^ RefVal::ErrorUseAfterRelease; in updateSymbol()
3183 V = V ^ RefVal::ErrorDeallocGC; in updateSymbol()
3191 case RefVal::Owned: in updateSymbol()
3193 V = V ^ RefVal::Released; in updateSymbol()
3196 case RefVal::NotOwned: in updateSymbol()
3197 V = V ^ RefVal::ErrorDeallocNotOwned; in updateSymbol()
3204 if (V.getKind() == RefVal::Owned) { in updateSymbol()
3205 V = V ^ RefVal::NotOwned; in updateSymbol()
3229 case RefVal::Owned: in updateSymbol()
3230 case RefVal::NotOwned: in updateSymbol()
3233 case RefVal::Released: in updateSymbol()
3236 V = (V ^ RefVal::Owned) + 1; in updateSymbol()
3249 case RefVal::Owned: in updateSymbol()
3254 RefVal::IvarAccessHistory::AccessedDirectly) in updateSymbol()
3255 V = V ^ RefVal::NotOwned; in updateSymbol()
3257 V = V ^ RefVal::Released; in updateSymbol()
3265 case RefVal::NotOwned: in updateSymbol()
3271 RefVal::IvarAccessHistory::AccessedDirectly) { in updateSymbol()
3276 V = V.releaseViaIvar() ^ RefVal::Released; in updateSymbol()
3278 V = V ^ RefVal::ErrorReleaseNotOwned; in updateSymbol()
3283 case RefVal::Released: in updateSymbol()
3286 V = V ^ RefVal::ErrorUseAfterRelease; in updateSymbol()
3297 RefVal::Kind ErrorKind, in processNonLeakError()
3306 if (const RefVal *RV = getRefBinding(St, Sym)) in processNonLeakError()
3307 if (RV->getIvarAccessHistory() != RefVal::IvarAccessHistory::None) in processNonLeakError()
3318 case RefVal::ErrorUseAfterRelease: in processNonLeakError()
3323 case RefVal::ErrorReleaseNotOwned: in processNonLeakError()
3328 case RefVal::ErrorDeallocGC: in processNonLeakError()
3333 case RefVal::ErrorDeallocNotOwned: in processNonLeakError()
3411 const RefVal *Binding = nullptr; in evalCall()
3454 const RefVal *T = getRefBinding(state, Sym); in checkPreStmt()
3459 RefVal X = *T; in checkPreStmt()
3462 case RefVal::Owned: { in checkPreStmt()
3466 X = X ^ RefVal::ReturnedOwned; in checkPreStmt()
3470 case RefVal::NotOwned: { in checkPreStmt()
3474 X = X ^ RefVal::ReturnedOwned; in checkPreStmt()
3477 X = X ^ RefVal::ReturnedNotOwned; in checkPreStmt()
3533 RetEffect RE, RefVal X, in checkReturnWithRetEffect()
3542 if (X.getIvarAccessHistory() != RefVal::IvarAccessHistory::None) in checkReturnWithRetEffect()
3555 X = X ^ RefVal::ErrorGCLeakReturned; in checkReturnWithRetEffect()
3562 X = X ^ RefVal::ErrorLeakReturned; in checkReturnWithRetEffect()
3583 RefVal::IvarAccessHistory::AccessedDirectly) { in checkReturnWithRetEffect()
3587 X.releaseViaIvar() ^ RefVal::ReturnedOwned); in checkReturnWithRetEffect()
3591 state = setRefBinding(state, Sym, X ^ RefVal::ErrorReturnedNotOwned); in checkReturnWithRetEffect()
3739 SymbolRef Sym, RefVal V) const { in handleAutoreleaseCounts()
3751 if (V.getKind() == RefVal::ReturnedOwned) in handleAutoreleaseCounts()
3757 V.getIvarAccessHistory() == RefVal::IvarAccessHistory::AccessedDirectly) { in handleAutoreleaseCounts()
3765 if (V.getKind() == RefVal::ReturnedOwned) in handleAutoreleaseCounts()
3766 V = V ^ RefVal::ReturnedNotOwned; in handleAutoreleaseCounts()
3768 V = V ^ RefVal::NotOwned; in handleAutoreleaseCounts()
3782 if (V.getIvarAccessHistory() != RefVal::IvarAccessHistory::None) in handleAutoreleaseCounts()
3787 V = V ^ RefVal::ErrorOverAutorelease; in handleAutoreleaseCounts()
3815 SymbolRef sid, RefVal V, in handleSymbolDeath()
3825 if (V.getIvarAccessHistory() != RefVal::IvarAccessHistory::None) in handleSymbolDeath()
3838 return setRefBinding(state, sid, V ^ RefVal::ErrorLeak); in handleSymbolDeath()
3928 if (const RefVal *T = B.lookup(Sym)){ in checkDeadSymbols()