#include "PtrState.h"
#include "DependencyAnalysis.h"
#include "ObjCARC.h"
#include "llvm/Analysis/ObjCARCAnalysisUtils.h"
#include "llvm/Analysis/ObjCARCInstKind.h"
#include "llvm/Analysis/ObjCARCUtil.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <iterator>
#include <utility>
usingnamespacellvm;
usingnamespacellvm::objcarc;
#define DEBUG_TYPE …
raw_ostream &llvm::objcarc::operator<<(raw_ostream &OS, const Sequence S) { … }
static Sequence MergeSeqs(Sequence A, Sequence B, bool TopDown) { … }
void RRInfo::clear() { … }
bool RRInfo::Merge(const RRInfo &Other) { … }
void PtrState::SetKnownPositiveRefCount() { … }
void PtrState::ClearKnownPositiveRefCount() { … }
void PtrState::SetSeq(Sequence NewSeq) { … }
void PtrState::ResetSequenceProgress(Sequence NewSeq) { … }
void PtrState::Merge(const PtrState &Other, bool TopDown) { … }
bool BottomUpPtrState::InitBottomUp(ARCMDKindCache &Cache, Instruction *I) { … }
bool BottomUpPtrState::MatchWithRetain() { … }
bool BottomUpPtrState::HandlePotentialAlterRefCount(Instruction *Inst,
const Value *Ptr,
ProvenanceAnalysis &PA,
ARCInstKind Class) { … }
void BottomUpPtrState::HandlePotentialUse(BasicBlock *BB, Instruction *Inst,
const Value *Ptr,
ProvenanceAnalysis &PA,
ARCInstKind Class) { … }
bool TopDownPtrState::InitTopDown(ARCInstKind Kind, Instruction *I) { … }
bool TopDownPtrState::MatchWithRelease(ARCMDKindCache &Cache,
Instruction *Release) { … }
bool TopDownPtrState::HandlePotentialAlterRefCount(
Instruction *Inst, const Value *Ptr, ProvenanceAnalysis &PA,
ARCInstKind Class, const BundledRetainClaimRVs &BundledRVs) { … }
void TopDownPtrState::HandlePotentialUse(Instruction *Inst, const Value *Ptr,
ProvenanceAnalysis &PA,
ARCInstKind Class) { … }