LLVM: llvm::objcarc::TopDownPtrState Struct Reference (original) (raw)

#include "[Transforms/ObjCARC/PtrState.h](PtrState%5F8h%5Fsource.html)"

Inheritance diagram for llvm::objcarc::TopDownPtrState:

Public Member Functions
TopDownPtrState ()=default
bool InitTopDown (ARCInstKind Kind, Instruction *I)
(Re-)Initialize this bottom up pointer returning true if we detected a pointer with nested releases.
bool MatchWithRelease (ARCMDKindCache &Cache, Instruction *Release)
Return true if this set of retains can be paired with the given release.
void HandlePotentialUse (Instruction *Inst, const Value *Ptr, ProvenanceAnalysis &PA, ARCInstKind Class)
bool HandlePotentialAlterRefCount (Instruction *Inst, const Value *Ptr, ProvenanceAnalysis &PA, ARCInstKind Class, const BundledRetainClaimRVs &BundledRVs)
Public Member Functions inherited from llvm::objcarc::PtrState
bool IsKnownSafe () const
void SetKnownSafe (const bool NewValue)
bool IsTailCallRelease () const
void SetTailCallRelease (const bool NewValue)
bool IsTrackingImpreciseReleases () const
const MDNode * GetReleaseMetadata () const
void SetReleaseMetadata (MDNode *NewValue)
bool IsCFGHazardAfflicted () const
void SetCFGHazardAfflicted (const bool NewValue)
void SetKnownPositiveRefCount ()
void ClearKnownPositiveRefCount ()
bool HasKnownPositiveRefCount () const
void SetSeq (Sequence NewSeq)
Sequence GetSeq () const
void ClearSequenceProgress ()
void ResetSequenceProgress (Sequence NewSeq)
void Merge (const PtrState &Other, bool TopDown)
void InsertCall (Instruction *I)
void InsertReverseInsertPt (Instruction *I)
void ClearReverseInsertPts ()
bool HasReverseInsertPts () const
const RRInfo & GetRRInfo () const
Additional Inherited Members
Protected Member Functions inherited from llvm::objcarc::PtrState
PtrState ()
Protected Attributes inherited from llvm::objcarc::PtrState
bool KnownPositiveRefCount = false
True if the reference count is known to be incremented.
bool Partial = false
True if we've seen an opportunity for partial RR elimination, such as pushing calls into a CFG triangle or into one side of a CFG diamond.
unsigned char Seq: 8
The current position in the sequence.
RRInfo RRI
Unidirectional information about the current sequence.

Detailed Description

Constructor & Destructor Documentation

llvm::objcarc::TopDownPtrState::TopDownPtrState ( ) default

Member Function Documentation

HandlePotentialAlterRefCount()

Definition at line 377 of file PtrState.cpp.

References assert(), llvm::objcarc::CanDecrementRefCount(), llvm::objcarc::PtrState::ClearKnownPositiveRefCount(), llvm::objcarc::BundledRetainClaimRVs::contains(), llvm::dbgs(), llvm::objcarc::PtrState::GetSeq(), llvm::objcarc::PtrState::HasReverseInsertPts(), llvm::objcarc::PtrState::InsertReverseInsertPt(), llvm::objcarc::IntrinsicUser, LLVM_DEBUG, llvm_unreachable, llvm::objcarc::S_CanRelease, llvm::objcarc::S_MovableRelease, llvm::objcarc::S_None, llvm::objcarc::S_Retain, llvm::objcarc::S_Stop, llvm::objcarc::S_Use, llvm::objcarc::PtrState::SetCFGHazardAfflicted(), and llvm::objcarc::PtrState::SetSeq().

HandlePotentialUse()

Definition at line 416 of file PtrState.cpp.

References llvm::objcarc::CanUse(), llvm::dbgs(), llvm::objcarc::PtrState::GetSeq(), LLVM_DEBUG, llvm_unreachable, llvm::objcarc::S_CanRelease, llvm::objcarc::S_MovableRelease, llvm::objcarc::S_None, llvm::objcarc::S_Retain, llvm::objcarc::S_Stop, llvm::objcarc::S_Use, and llvm::objcarc::PtrState::SetSeq().

InitTopDown()

MatchWithRelease()

Return true if this set of retains can be paired with the given release.

Modifies state appropriately to reflect that the matching occurred.

Definition at line 349 of file PtrState.cpp.

References llvm::cast(), llvm::objcarc::PtrState::ClearKnownPositiveRefCount(), llvm::objcarc::PtrState::ClearReverseInsertPts(), llvm::objcarc::PtrState::GetSeq(), llvm::objcarc::ImpreciseRelease, llvm_unreachable, llvm::objcarc::Release, llvm::objcarc::S_CanRelease, llvm::objcarc::S_MovableRelease, llvm::objcarc::S_None, llvm::objcarc::S_Retain, llvm::objcarc::S_Stop, llvm::objcarc::S_Use, llvm::objcarc::PtrState::SetReleaseMetadata(), and llvm::objcarc::PtrState::SetTailCallRelease().


The documentation for this struct was generated from the following files: