class RetainSummaryManager
Declaration
class RetainSummaryManager { /* full declaration omitted */ };
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:449
Member Variables
- private clang::ASTContext& Ctx
- Ctx - The ASTContext object for the analyzed ASTs.
- private const bool ARCEnabled
- Records whether or not the analyzed code runs in ARC mode.
- private const bool TrackObjCAndCFObjects
- Track Objective-C and CoreFoundation objects.
- private const bool TrackOSObjects
- Track sublcasses of OSObject.
- private clang::ento::RetainSummaryManager::FuncSummariesTy FuncSummaries
- FuncSummaries - A map from FunctionDecls to summaries.
- private clang::ento::RetainSummaryManager:: ObjCMethodSummariesTy ObjCClassMethodSummaries
- ObjCClassMethodSummaries - A map from selectors (for instance methods) to summaries.
- private clang::ento::RetainSummaryManager:: ObjCMethodSummariesTy ObjCMethodSummaries
- ObjCMethodSummaries - A map from selectors to summaries.
- private llvm::BumpPtrAllocator BPAlloc
- BPAlloc - A BumpPtrAllocator used for allocating summaries, ArgEffects, and all other data used by the checker.
- private ArgEffects::Factory AF
- AF - A factory for ArgEffects objects.
- private clang::ento::RetEffect ObjCAllocRetE
- ObjCAllocRetE - Default return effect for methods returning Objective-C objects.
- private clang::ento::RetEffect ObjCInitRetE
- ObjCInitRetE - Default return effect for init methods returning Objective-C objects.
- private llvm::FoldingSet<CachedSummaryNode> SimpleSummaries
- SimpleSummaries - Used for uniquing summaries that don't have special effects.
Method Overview
- private void InitializeClassMethodSummaries()
- private void InitializeMethodSummaries()
- public RetainSummaryManager(clang::ASTContext & ctx, bool trackObjCAndCFObjects, bool trackOSObjects)
- private void addClassMethSummary(const char * Cls, const char * name, const clang::ento::RetainSummary * Summ, bool isNullary = true)
- private template <typename... Keywords>void addClsMethSummary(clang::IdentifierInfo * II, const clang::ento::RetainSummary * Summ, Keywords *... Kws)
- private template <typename... Keywords>void addClsMethSummary(const char * Cls, const clang::ento::RetainSummary * Summ, Keywords *... Kws)
- private void addInstMethSummary(const char * Cls, const char * nullaryName, const clang::ento::RetainSummary * Summ)
- private template <typename... Keywords>void addInstMethSummary(const char * Cls, const clang::ento::RetainSummary * Summ, Keywords *... Kws)
- private template <typename... Keywords>void addMethodSummary(clang::IdentifierInfo * ClsII, clang::ento::RetainSummaryManager::ObjCMethodSummariesTy & Summaries, const clang::ento::RetainSummary * Summ, Keywords *... Kws)
- private void addNSObjectClsMethSummary(clang::Selector S, const clang::ento::RetainSummary * Summ)
- private void addNSObjectMethSummary(clang::Selector S, const clang::ento::RetainSummary * Summ)
- private bool applyParamAnnotationEffect(const clang::ParmVarDecl * pd, unsigned int parm_idx, const clang::NamedDecl * FD, clang::ento::RetainSummaryTemplate & Template)
- public Optional<clang::ento::RetainSummaryManager::BehaviorSummary> canEval(const clang::CallExpr * CE, const clang::FunctionDecl * FD, bool & hasTrustedImplementationAnnotation)
- private const clang::ento::RetainSummary * generateSummary(const clang::FunctionDecl * FD, bool & AllowAnnotations)
- private const clang::ento::RetainSummary * getCFCreateGetRuleSummary(const clang::FunctionDecl * FD)
- private const clang::ento::RetainSummary * getCFSummaryCreateRule(const clang::FunctionDecl * FD)
- private const clang::ento::RetainSummary * getCFSummaryGetRule(const clang::FunctionDecl * FD)
- private const clang::ento::RetainSummary * getClassMethodSummary(const clang::ObjCMessageExpr * ME)
- private const clang::ento::RetainSummary * getDefaultSummary()
- private const clang::ento::RetainSummary * getDoNothingSummary()
- private const clang::ento::RetainSummary * getFunctionSummary(const clang::FunctionDecl * FD)
- private const clang::ento::RetainSummary * getInstanceMethodSummary(const clang::ObjCMessageExpr * ME, clang::QualType ReceiverType)
- private const clang::ento::RetainSummary * getMethodSummary(const clang::ObjCMethodDecl * MD)
- private const clang::ento::RetainSummary * getMethodSummary(clang::Selector S, const clang::ObjCInterfaceDecl * ID, const clang::ObjCMethodDecl * MD, clang::QualType RetTy, clang::ento::RetainSummaryManager::ObjCMethodSummariesTy & CachedSummaries)
- private const clang::ento::RetainSummary * getOSSummaryCreateRule(const clang::FunctionDecl * FD)
- private const clang::ento::RetainSummary * getOSSummaryFreeRule(const clang::FunctionDecl * FD)
- private const clang::ento::RetainSummary * getOSSummaryGetRule(const clang::FunctionDecl * FD)
- private const clang::ento::RetainSummary * getOSSummaryReleaseRule(const clang::FunctionDecl * FD)
- private const clang::ento::RetainSummary * getOSSummaryRetainRule(const clang::FunctionDecl * FD)
- public clang::ento::RetEffect getObjAllocRetEffect() const
- private const clang::ento::RetainSummary * getPersistentStopSummary()
- private const clang::ento::RetainSummary * getPersistentSummary(clang::ento::RetEffect RetEff, clang::ento::ArgEffects ScratchArgs, clang::ento::ArgEffect ReceiverEff = clang::ento::ArgEffect(DoNothing), clang::ento::ArgEffect DefaultEff = clang::ento::ArgEffect(MayEscape), clang::ento::ArgEffect ThisEff = clang::ento::ArgEffect(DoNothing))
- private const clang::ento::RetainSummary * getPersistentSummary(const clang::ento::RetainSummary & OldSumm)
- private Optional<clang::ento::RetEffect> getRetEffectFromAnnotations(clang::QualType RetTy, const clang::Decl * D)
- private const clang::ento::RetainSummary * getStandardMethodSummary(const clang::ObjCMethodDecl * MD, clang::Selector S, clang::QualType RetTy)
- public const clang::ento::RetainSummary * getSummary(clang::AnyCall C, bool HasNonZeroCallbackArg = false, bool IsReceiverUnconsumedSelf = false, clang::QualType ReceiverType = {})
- private const clang::ento::RetainSummary * getSummaryForOSObject(const clang::FunctionDecl * FD, llvm::StringRef FName, clang::QualType RetTy)
- private const clang::ento::RetainSummary * getSummaryForObjCOrCFObject(const clang::FunctionDecl * FD, llvm::StringRef FName, clang::QualType RetTy, const clang::FunctionType * FT, bool & AllowAnnotations)
- private const clang::ento::RetainSummary * getUnarySummary(const clang::FunctionType * FT, clang::ento::ArgEffectKind AE)
- private template <class T1, class T2, class... Others>Optional<clang::ento::ObjKind> hasAnyEnabledAttrOf(const clang::Decl * D, clang::QualType QT)
- private template <class T>Optional<clang::ento::ObjKind> hasAnyEnabledAttrOf(const clang::Decl * D, clang::QualType QT)
- public static bool isKnownSmartPointer(clang::QualType QT)
- public bool isTrustedReferenceCountImplementation(const clang::Decl * FD)
- private void updateSummaryForArgumentTypes(const clang::AnyCall & C, const clang::ento::RetainSummary *& RS)
- private const clang::ento::RetainSummary * updateSummaryForNonZeroCallbackArg(const clang::ento::RetainSummary * S, clang::AnyCall & C)
- private void updateSummaryForReceiverUnconsumedSelf(const clang::ento::RetainSummary *& S)
- private void updateSummaryFromAnnotations(const clang::ento::RetainSummary *& Summ, const clang::FunctionDecl * FD)
- private void updateSummaryFromAnnotations(const clang::ento::RetainSummary *& Summ, const clang::ObjCMethodDecl * MD)
Methods
¶void InitializeClassMethodSummaries()
void InitializeClassMethodSummaries()
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:549
¶void InitializeMethodSummaries()
void InitializeMethodSummaries()
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:550
¶RetainSummaryManager(clang::ASTContext& ctx,
bool trackObjCAndCFObjects,
bool trackOSObjects)
RetainSummaryManager(clang::ASTContext& ctx,
bool trackObjCAndCFObjects,
bool trackOSObjects)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:624
Parameters
- clang::ASTContext& ctx
- bool trackObjCAndCFObjects
- bool trackOSObjects
¶void addClassMethSummary(
const char* Cls,
const char* name,
const clang::ento::RetainSummary* Summ,
bool isNullary = true)
void addClassMethSummary(
const char* Cls,
const char* name,
const clang::ento::RetainSummary* Summ,
bool isNullary = true)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:560
Parameters
- const char* Cls
- const char* name
- const clang::ento::RetainSummary* Summ
- bool isNullary = true
¶template <typename... Keywords>
void addClsMethSummary(
clang::IdentifierInfo* II,
const clang::ento::RetainSummary* Summ,
Keywords*... Kws)
template <typename... Keywords>
void addClsMethSummary(
clang::IdentifierInfo* II,
const clang::ento::RetainSummary* Summ,
Keywords*... Kws)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:596
Templates
- Keywords
Parameters
- clang::IdentifierInfo* II
- const clang::ento::RetainSummary* Summ
- Keywords*... Kws
¶template <typename... Keywords>
void addClsMethSummary(
const char* Cls,
const clang::ento::RetainSummary* Summ,
Keywords*... Kws)
template <typename... Keywords>
void addClsMethSummary(
const char* Cls,
const clang::ento::RetainSummary* Summ,
Keywords*... Kws)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:589
Templates
- Keywords
Parameters
- const char* Cls
- const clang::ento::RetainSummary* Summ
- Keywords*... Kws
¶void addInstMethSummary(
const char* Cls,
const char* nullaryName,
const clang::ento::RetainSummary* Summ)
void addInstMethSummary(
const char* Cls,
const char* nullaryName,
const clang::ento::RetainSummary* Summ)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:568
Parameters
- const char* Cls
- const char* nullaryName
- const clang::ento::RetainSummary* Summ
¶template <typename... Keywords>
void addInstMethSummary(
const char* Cls,
const clang::ento::RetainSummary* Summ,
Keywords*... Kws)
template <typename... Keywords>
void addInstMethSummary(
const char* Cls,
const clang::ento::RetainSummary* Summ,
Keywords*... Kws)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:583
Templates
- Keywords
Parameters
- const char* Cls
- const clang::ento::RetainSummary* Summ
- Keywords*... Kws
¶template <typename... Keywords>
void addMethodSummary(
clang::IdentifierInfo* ClsII,
clang::ento::RetainSummaryManager::
ObjCMethodSummariesTy& Summaries,
const clang::ento::RetainSummary* Summ,
Keywords*... Kws)
template <typename... Keywords>
void addMethodSummary(
clang::IdentifierInfo* ClsII,
clang::ento::RetainSummaryManager::
ObjCMethodSummariesTy& Summaries,
const clang::ento::RetainSummary* Summ,
Keywords*... Kws)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:576
Templates
- Keywords
Parameters
- clang::IdentifierInfo* ClsII
- clang::ento::RetainSummaryManager:: ObjCMethodSummariesTy& Summaries
- const clang::ento::RetainSummary* Summ
- Keywords*... Kws
¶void addNSObjectClsMethSummary(
clang::Selector S,
const clang::ento::RetainSummary* Summ)
void addNSObjectClsMethSummary(
clang::Selector S,
const clang::ento::RetainSummary* Summ)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:552
Parameters
- clang::Selector S
- const clang::ento::RetainSummary* Summ
¶void addNSObjectMethSummary(
clang::Selector S,
const clang::ento::RetainSummary* Summ)
void addNSObjectMethSummary(
clang::Selector S,
const clang::ento::RetainSummary* Summ)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:556
Parameters
- clang::Selector S
- const clang::ento::RetainSummary* Summ
¶bool applyParamAnnotationEffect(
const clang::ParmVarDecl* pd,
unsigned int parm_idx,
const clang::NamedDecl* FD,
clang::ento::RetainSummaryTemplate& Template)
bool applyParamAnnotationEffect(
const clang::ParmVarDecl* pd,
unsigned int parm_idx,
const clang::NamedDecl* FD,
clang::ento::RetainSummaryTemplate& Template)
Description
Apply the annotation of @c pd in function @c FD to the resulting summary stored in out-parameter @c Template.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:619
Parameters
- const clang::ParmVarDecl* pd
- unsigned int parm_idx
- const clang::NamedDecl* FD
- clang::ento::RetainSummaryTemplate& Template
Returns
whether an annotation was applied.
¶Optional<clang::ento::RetainSummaryManager::
BehaviorSummary>
canEval(const clang::CallExpr* CE,
const clang::FunctionDecl* FD,
bool& hasTrustedImplementationAnnotation)
Optional<clang::ento::RetainSummaryManager::
BehaviorSummary>
canEval(const clang::CallExpr* CE,
const clang::FunctionDecl* FD,
bool& hasTrustedImplementationAnnotation)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:651
Parameters
- const clang::CallExpr* CE
- const clang::FunctionDecl* FD
- bool& hasTrustedImplementationAnnotation
¶const clang::ento::RetainSummary* generateSummary(
const clang::FunctionDecl* FD,
bool& AllowAnnotations)
const clang::ento::RetainSummary* generateSummary(
const clang::FunctionDecl* FD,
bool& AllowAnnotations)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:601
Parameters
- const clang::FunctionDecl* FD
- bool& AllowAnnotations
¶const clang::ento::RetainSummary*
getCFCreateGetRuleSummary(
const clang::FunctionDecl* FD)
const clang::ento::RetainSummary*
getCFCreateGetRuleSummary(
const clang::FunctionDecl* FD)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:518
Parameters
- const clang::FunctionDecl* FD
¶const clang::ento::RetainSummary*
getCFSummaryCreateRule(
const clang::FunctionDecl* FD)
const clang::ento::RetainSummary*
getCFSummaryCreateRule(
const clang::FunctionDecl* FD)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:516
Parameters
- const clang::FunctionDecl* FD
¶const clang::ento::RetainSummary*
getCFSummaryGetRule(const clang::FunctionDecl* FD)
const clang::ento::RetainSummary*
getCFSummaryGetRule(const clang::FunctionDecl* FD)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:517
Parameters
- const clang::FunctionDecl* FD
¶const clang::ento::RetainSummary*
getClassMethodSummary(
const clang::ObjCMessageExpr* ME)
const clang::ento::RetainSummary*
getClassMethodSummary(
const clang::ObjCMessageExpr* ME)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:683
Parameters
- const clang::ObjCMessageExpr* ME
¶const clang::ento::RetainSummary*
getDefaultSummary()
const clang::ento::RetainSummary*
getDefaultSummary()
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:537
¶const clang::ento::RetainSummary*
getDoNothingSummary()
const clang::ento::RetainSummary*
getDoNothingSummary()
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:531
¶const clang::ento::RetainSummary*
getFunctionSummary(const clang::FunctionDecl* FD)
const clang::ento::RetainSummary*
getFunctionSummary(const clang::FunctionDecl* FD)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:673
Parameters
- const clang::FunctionDecl* FD
¶const clang::ento::RetainSummary*
getInstanceMethodSummary(
const clang::ObjCMessageExpr* ME,
clang::QualType ReceiverType)
const clang::ento::RetainSummary*
getInstanceMethodSummary(
const clang::ObjCMessageExpr* ME,
clang::QualType ReceiverType)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:681
Parameters
- const clang::ObjCMessageExpr* ME
- clang::QualType ReceiverType
¶const clang::ento::RetainSummary*
getMethodSummary(const clang::ObjCMethodDecl* MD)
const clang::ento::RetainSummary*
getMethodSummary(const clang::ObjCMethodDecl* MD)
Description
getMethodSummary - This version of getMethodSummary is used to query the summary for the current method being analyzed.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:671
Parameters
- const clang::ObjCMethodDecl* MD
¶const clang::ento::RetainSummary*
getMethodSummary(
clang::Selector S,
const clang::ObjCInterfaceDecl* ID,
const clang::ObjCMethodDecl* MD,
clang::QualType RetTy,
clang::ento::RetainSummaryManager::
ObjCMethodSummariesTy& CachedSummaries)
const clang::ento::RetainSummary*
getMethodSummary(
clang::Selector S,
const clang::ObjCInterfaceDecl* ID,
const clang::ObjCMethodDecl* MD,
clang::QualType RetTy,
clang::ento::RetainSummaryManager::
ObjCMethodSummariesTy& CachedSummaries)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:675
Parameters
- clang::Selector S
- const clang::ObjCInterfaceDecl* ID
- const clang::ObjCMethodDecl* MD
- clang::QualType RetTy
- clang::ento::RetainSummaryManager:: ObjCMethodSummariesTy& CachedSummaries
¶const clang::ento::RetainSummary*
getOSSummaryCreateRule(
const clang::FunctionDecl* FD)
const clang::ento::RetainSummary*
getOSSummaryCreateRule(
const clang::FunctionDecl* FD)
Description
Create an OS object at +1.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:499
Parameters
- const clang::FunctionDecl* FD
¶const clang::ento::RetainSummary*
getOSSummaryFreeRule(
const clang::FunctionDecl* FD)
const clang::ento::RetainSummary*
getOSSummaryFreeRule(
const clang::FunctionDecl* FD)
Description
Free the OS object.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:511
Parameters
- const clang::FunctionDecl* FD
¶const clang::ento::RetainSummary*
getOSSummaryGetRule(const clang::FunctionDecl* FD)
const clang::ento::RetainSummary*
getOSSummaryGetRule(const clang::FunctionDecl* FD)
Description
Get an OS object at +0.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:502
Parameters
- const clang::FunctionDecl* FD
¶const clang::ento::RetainSummary*
getOSSummaryReleaseRule(
const clang::FunctionDecl* FD)
const clang::ento::RetainSummary*
getOSSummaryReleaseRule(
const clang::FunctionDecl* FD)
Description
Decrement the reference count on OS object.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:508
Parameters
- const clang::FunctionDecl* FD
¶const clang::ento::RetainSummary*
getOSSummaryRetainRule(
const clang::FunctionDecl* FD)
const clang::ento::RetainSummary*
getOSSummaryRetainRule(
const clang::FunctionDecl* FD)
Description
Increment the reference count on OS object.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:505
Parameters
- const clang::FunctionDecl* FD
¶clang::ento::RetEffect getObjAllocRetEffect()
const
clang::ento::RetEffect getObjAllocRetEffect()
const
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:665
¶const clang::ento::RetainSummary*
getPersistentStopSummary()
const clang::ento::RetainSummary*
getPersistentStopSummary()
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:543
¶const clang::ento::RetainSummary*
getPersistentSummary(
clang::ento::RetEffect RetEff,
clang::ento::ArgEffects ScratchArgs,
clang::ento::ArgEffect ReceiverEff =
clang::ento::ArgEffect(DoNothing),
clang::ento::ArgEffect DefaultEff =
clang::ento::ArgEffect(MayEscape),
clang::ento::ArgEffect ThisEff =
clang::ento::ArgEffect(DoNothing))
const clang::ento::RetainSummary*
getPersistentSummary(
clang::ento::RetEffect RetEff,
clang::ento::ArgEffects ScratchArgs,
clang::ento::ArgEffect ReceiverEff =
clang::ento::ArgEffect(DoNothing),
clang::ento::ArgEffect DefaultEff =
clang::ento::ArgEffect(MayEscape),
clang::ento::ArgEffect ThisEff =
clang::ento::ArgEffect(DoNothing))
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:523
Parameters
- clang::ento::RetEffect RetEff
- clang::ento::ArgEffects ScratchArgs
- clang::ento::ArgEffect ReceiverEff = clang::ento::ArgEffect(DoNothing)
- clang::ento::ArgEffect DefaultEff = clang::ento::ArgEffect(MayEscape)
- clang::ento::ArgEffect ThisEff = clang::ento::ArgEffect(DoNothing)
¶const clang::ento::RetainSummary*
getPersistentSummary(
const clang::ento::RetainSummary& OldSumm)
const clang::ento::RetainSummary*
getPersistentSummary(
const clang::ento::RetainSummary& OldSumm)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:520
Parameters
- const clang::ento::RetainSummary& OldSumm
¶Optional<clang::ento::RetEffect>
getRetEffectFromAnnotations(clang::QualType RetTy,
const clang::Decl* D)
Optional<clang::ento::RetEffect>
getRetEffectFromAnnotations(clang::QualType RetTy,
const clang::Decl* D)
Description
Determine if there is a special return effect for this function or method.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:689
Parameters
- clang::QualType RetTy
- const clang::Decl* D
¶const clang::ento::RetainSummary*
getStandardMethodSummary(
const clang::ObjCMethodDecl* MD,
clang::Selector S,
clang::QualType RetTy)
const clang::ento::RetainSummary*
getStandardMethodSummary(
const clang::ObjCMethodDecl* MD,
clang::Selector S,
clang::QualType RetTy)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:685
Parameters
- const clang::ObjCMethodDecl* MD
- clang::Selector S
- clang::QualType RetTy
¶const clang::ento::RetainSummary* getSummary(
clang::AnyCall C,
bool HasNonZeroCallbackArg = false,
bool IsReceiverUnconsumedSelf = false,
clang::QualType ReceiverType = {})
const clang::ento::RetainSummary* getSummary(
clang::AnyCall C,
bool HasNonZeroCallbackArg = false,
bool IsReceiverUnconsumedSelf = false,
clang::QualType ReceiverType = {})
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:660
Parameters
- clang::AnyCall C
- bool HasNonZeroCallbackArg = false
- bool IsReceiverUnconsumedSelf = false
- clang::QualType ReceiverType = {}
¶const clang::ento::RetainSummary*
getSummaryForOSObject(
const clang::FunctionDecl* FD,
llvm::StringRef FName,
clang::QualType RetTy)
const clang::ento::RetainSummary*
getSummaryForOSObject(
const clang::FunctionDecl* FD,
llvm::StringRef FName,
clang::QualType RetTy)
Description
Return a summary for OSObject, or nullptr if not found.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:605
Parameters
- const clang::FunctionDecl* FD
- llvm::StringRef FName
- clang::QualType RetTy
¶const clang::ento::RetainSummary*
getSummaryForObjCOrCFObject(
const clang::FunctionDecl* FD,
llvm::StringRef FName,
clang::QualType RetTy,
const clang::FunctionType* FT,
bool& AllowAnnotations)
const clang::ento::RetainSummary*
getSummaryForObjCOrCFObject(
const clang::FunctionDecl* FD,
llvm::StringRef FName,
clang::QualType RetTy,
const clang::FunctionType* FT,
bool& AllowAnnotations)
Description
Return a summary for Objective-C or CF object, or nullptr if not found.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:609
Parameters
- const clang::FunctionDecl* FD
- llvm::StringRef FName
- clang::QualType RetTy
- const clang::FunctionType* FT
- bool& AllowAnnotations
¶const clang::ento::RetainSummary* getUnarySummary(
const clang::FunctionType* FT,
clang::ento::ArgEffectKind AE)
const clang::ento::RetainSummary* getUnarySummary(
const clang::FunctionType* FT,
clang::ento::ArgEffectKind AE)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:513
Parameters
- const clang::FunctionType* FT
- clang::ento::ArgEffectKind AE
¶template <class T1, class T2, class... Others>
Optional<clang::ento::ObjKind>
hasAnyEnabledAttrOf(const clang::Decl* D,
clang::QualType QT)
template <class T1, class T2, class... Others>
Optional<clang::ento::ObjKind>
hasAnyEnabledAttrOf(const clang::Decl* D,
clang::QualType QT)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:729
Templates
- T1
- T2
- Others
Parameters
- const clang::Decl* D
- clang::QualType QT
¶template <class T>
Optional<clang::ento::ObjKind>
hasAnyEnabledAttrOf(const clang::Decl* D,
clang::QualType QT)
template <class T>
Optional<clang::ento::ObjKind>
hasAnyEnabledAttrOf(const clang::Decl* D,
clang::QualType QT)
Description
Determine whether a declaration @c D of correspondent type (return type for functions/methods) @c QT has any of the given attributes, provided they pass necessary validation checks AND tracking the given attribute is enabled. Returns the object kind corresponding to the present attribute, or None, if none of the specified attributes are present. Crashes if passed an attribute which is not explicitly handled.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:726
Templates
- T
Parameters
- const clang::Decl* D
- clang::QualType QT
¶static bool isKnownSmartPointer(
clang::QualType QT)
static bool isKnownSmartPointer(
clang::QualType QT)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:656
Parameters
Returns
Whether the type corresponds to a known smart pointer implementation (that is, everything about it is inlineable).
¶bool isTrustedReferenceCountImplementation(
const clang::Decl* FD)
bool isTrustedReferenceCountImplementation(
const clang::Decl* FD)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:658
Parameters
- const clang::Decl* FD
¶void updateSummaryForArgumentTypes(
const clang::AnyCall& C,
const clang::ento::RetainSummary*& RS)
void updateSummaryForArgumentTypes(
const clang::AnyCall& C,
const clang::ento::RetainSummary*& RS)
Description
Set argument types for arguments which are not doing anything.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:716
Parameters
- const clang::AnyCall& C
- const clang::ento::RetainSummary*& RS
¶const clang::ento::RetainSummary*
updateSummaryForNonZeroCallbackArg(
const clang::ento::RetainSummary* S,
clang::AnyCall& C)
const clang::ento::RetainSummary*
updateSummaryForNonZeroCallbackArg(
const clang::ento::RetainSummary* S,
clang::AnyCall& C)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:698
Parameters
- const clang::ento::RetainSummary* S
- clang::AnyCall& C
¶void updateSummaryForReceiverUnconsumedSelf(
const clang::ento::RetainSummary*& S)
void updateSummaryForReceiverUnconsumedSelf(
const clang::ento::RetainSummary*& S)
Description
Special case '[super init];' and '[self init];' Even though calling '[super init]' without assigning the result to self and checking if the parent returns 'nil' is a bad pattern, it is common. Additionally, our Self Init checker already warns about it. To avoid overwhelming the user with messages from both checkers, we model the case of '[super init]' in cases when it is not consumed by another expression as if the call preserves the value of 'self'; essentially, assuming it can never fail and return 'nil'. Note, we don't want to just stop tracking the value since we want the RetainCount checker to report leaks and use-after-free if SelfInit checker is turned off.
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:713
Parameters
- const clang::ento::RetainSummary*& S
¶void updateSummaryFromAnnotations(
const clang::ento::RetainSummary*& Summ,
const clang::FunctionDecl* FD)
void updateSummaryFromAnnotations(
const clang::ento::RetainSummary*& Summ,
const clang::FunctionDecl* FD)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:695
Parameters
- const clang::ento::RetainSummary*& Summ
- const clang::FunctionDecl* FD
¶void updateSummaryFromAnnotations(
const clang::ento::RetainSummary*& Summ,
const clang::ObjCMethodDecl* MD)
void updateSummaryFromAnnotations(
const clang::ento::RetainSummary*& Summ,
const clang::ObjCMethodDecl* MD)
Declared at: clang/include/clang/Analysis/RetainSummaryManager.h:692
Parameters
- const clang::ento::RetainSummary*& Summ
- const clang::ObjCMethodDecl* MD