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 168 of file PtrState.h.
|
default |
bool BottomUpPtrState::HandlePotentialAlterRefCount | ( | Instruction * | Inst, |
const Value * | Ptr, | ||
ProvenanceAnalysis & | PA, | ||
ARCInstKind | Class | ||
) |
Definition at line 226 of file PtrState.cpp.
References llvm::objcarc::CanDecrementRefCount(), 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().
void BottomUpPtrState::HandlePotentialUse | ( | BasicBlock * | BB, |
Instruction * | Inst, | ||
const Value * | Ptr, | ||
ProvenanceAnalysis & | PA, | ||
ARCInstKind | Class | ||
) |
Definition at line 253 of file PtrState.cpp.
References assert(), llvm::objcarc::Call, llvm::objcarc::CanUse(), llvm::dbgs(), llvm::BasicBlock::end(), llvm::objcarc::GetBasicARCInstKind(), llvm::BasicBlock::getFirstInsertionPt(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::objcarc::getreturnRVOperand(), llvm::objcarc::PtrState::GetSeq(), llvm::objcarc::hasAttachedCallOpBundle(), llvm::objcarc::PtrState::HasReverseInsertPts(), llvm::objcarc::PtrState::InsertReverseInsertPt(), 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(), llvm::objcarc::PtrState::SetSeq(), and llvm::skipDebugIntrinsics().
bool BottomUpPtrState::InitBottomUp | ( | ARCMDKindCache & | Cache, |
Instruction * | I | ||
) |
(Re-)Initialize this bottom up pointer returning true if we detected a pointer with nested releases.
Definition at line 174 of file PtrState.cpp.
References llvm::dbgs(), llvm::objcarc::ARCMDKindCache::get(), llvm::objcarc::PtrState::GetSeq(), llvm::objcarc::PtrState::HasKnownPositiveRefCount(), I, llvm::objcarc::ImpreciseRelease, llvm::objcarc::PtrState::InsertCall(), llvm::objcarc::PtrState::InsertReverseInsertPt(), LLVM_DEBUG, llvm::objcarc::PtrState::ResetSequenceProgress(), llvm::objcarc::S_MovableRelease, llvm::objcarc::S_Stop, llvm::objcarc::PtrState::SetKnownPositiveRefCount(), llvm::objcarc::PtrState::SetKnownSafe(), llvm::objcarc::PtrState::SetReleaseMetadata(), and llvm::objcarc::PtrState::SetTailCallRelease().
bool BottomUpPtrState::MatchWithRetain | ( | ) |
Return true if this set of releases can be paired with a release.
Modifies state appropriately to reflect that the matching occurred if it is successful.
It is assumed that one has already checked that the RCIdentity of the retain and the RCIdentity of this ptr state are the same.
Definition at line 203 of file PtrState.cpp.
References llvm::objcarc::PtrState::ClearReverseInsertPts(), llvm::objcarc::PtrState::GetSeq(), llvm::objcarc::PtrState::IsTrackingImpreciseReleases(), 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::SetKnownPositiveRefCount().