25#ifndef LLVM_LIB_TRANSFORMS_OBJCARC_PROVENANCEANALYSIS_H
26#define LLVM_LIB_TRANSFORMS_OBJCARC_PROVENANCEANALYSIS_H
54 using ValuePairTy = std::pair<const Value *, const Value *>;
55 using CachedResultsTy = DenseMap<ValuePairTy, bool>;
57 CachedResultsTy CachedResults;
59 DenseMap<const Value *, std::pair<WeakVH, WeakTrackingVH>>
60 UnderlyingObjCPtrCache;
62 bool relatedCheck(
const Value *
A,
const Value *
B);
63 bool relatedSelect(
const SelectInst *
A,
const Value *
B);
64 bool relatedPHI(
const PHINode *
A,
const Value *
B);
73 AAResults *
getAA()
const {
return AA; }
75 bool related(
const Value *
A,
const Value *
B);
78 CachedResults.clear();
79 UnderlyingObjCPtrCache.clear();
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
This file defines the DenseMap class.
This header defines various interfaces for pass management in LLVM.
void setAA(AAResults *aa)
ProvenanceAnalysis(const ProvenanceAnalysis &)=delete
ProvenanceAnalysis & operator=(const ProvenanceAnalysis &)=delete
AAResults * getAA() const
ProvenanceAnalysis()=default
This class represents the LLVM 'select' instruction.
LLVM Value Representation.
This is an optimization pass for GlobalISel generic memory operations.