LLVM 20.0.0git
|
#include "Transforms/ObjCARC/PtrState.h"
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. | |
Definition at line 189 of file PtrState.h.
|
default |
bool TopDownPtrState::HandlePotentialAlterRefCount | ( | Instruction * | Inst, |
const Value * | Ptr, | ||
ProvenanceAnalysis & | PA, | ||
ARCInstKind | Class, | ||
const BundledRetainClaimRVs & | BundledRVs | ||
) |
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, Ptr, 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().
void TopDownPtrState::HandlePotentialUse | ( | Instruction * | Inst, |
const Value * | Ptr, | ||
ProvenanceAnalysis & | PA, | ||
ARCInstKind | Class | ||
) |
Definition at line 416 of file PtrState.cpp.
References llvm::objcarc::CanUse(), llvm::dbgs(), llvm::objcarc::PtrState::GetSeq(), LLVM_DEBUG, llvm_unreachable, Ptr, 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().
bool TopDownPtrState::InitTopDown | ( | ARCInstKind | Kind, |
Instruction * | I | ||
) |
(Re-)Initialize this bottom up pointer returning true if we detected a pointer with nested releases.
Definition at line 324 of file PtrState.cpp.
References llvm::objcarc::PtrState::GetSeq(), llvm::objcarc::PtrState::HasKnownPositiveRefCount(), I, llvm::objcarc::PtrState::InsertCall(), llvm::objcarc::PtrState::ResetSequenceProgress(), llvm::objcarc::RetainRV, llvm::objcarc::S_Retain, llvm::objcarc::PtrState::SetKnownPositiveRefCount(), and llvm::objcarc::PtrState::SetKnownSafe().
bool TopDownPtrState::MatchWithRelease | ( | ARCMDKindCache & | Cache, |
Instruction * | Release | ||
) |
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::objcarc::PtrState::ClearKnownPositiveRefCount(), llvm::objcarc::PtrState::ClearReverseInsertPts(), llvm::objcarc::ARCMDKindCache::get(), 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().