class ProvenanceAnalysis

Declaration

class ProvenanceAnalysis { /* full declaration omitted */ };

Description

This is similar to BasicAliasAnalysis, and it uses many of the same techniques, except it uses special ObjC-specific reasoning about pointer relationships. In this context ``Provenance'' is defined as the history of an object's ownership. Thus ``Provenance Analysis'' is defined by using the notion of an ``independent provenance source'' of a pointer to determine whether or not two pointers have the same provenance source and thus could potentially be related.

Declared at: llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h:50

Member Variables

private llvm::AAResults* AA
private llvm::objcarc::ProvenanceAnalysis::CachedResultsTy CachedResults
private DenseMap<const llvm::Value*, std::pair<WeakVH, WeakTrackingVH>> UnderlyingObjCPtrCache

Method Overview

  • public ProvenanceAnalysis()
  • public ProvenanceAnalysis(const llvm::objcarc::ProvenanceAnalysis &)
  • public void clear()
  • public llvm::AAResults * getAA() const
  • public bool related(const llvm::Value * A, const llvm::Value * B)
  • private bool relatedCheck(const llvm::Value * A, const llvm::Value * B)
  • private bool relatedPHI(const llvm::PHINode * A, const llvm::Value * B)
  • private bool relatedSelect(const llvm::SelectInst * A, const llvm::Value * B)
  • public void setAA(llvm::AAResults * aa)

Methods

ProvenanceAnalysis()

Declared at: llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h:66

ProvenanceAnalysis(
    const llvm::objcarc::ProvenanceAnalysis&)

Declared at: llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h:67

Parameters

const llvm::objcarc::ProvenanceAnalysis&

void clear()

Declared at: llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h:76

llvm::AAResults* getAA() const

Declared at: llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h:72

bool related(const llvm::Value* A,
             const llvm::Value* B)

Declared at: llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h:74

Parameters

const llvm::Value* A
const llvm::Value* B

bool relatedCheck(const llvm::Value* A,
                  const llvm::Value* B)

Declared at: llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h:61

Parameters

const llvm::Value* A
const llvm::Value* B

bool relatedPHI(const llvm::PHINode* A,
                const llvm::Value* B)

Declared at: llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h:63

Parameters

const llvm::PHINode* A
const llvm::Value* B

bool relatedSelect(const llvm::SelectInst* A,
                   const llvm::Value* B)

Declared at: llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h:62

Parameters

const llvm::SelectInst* A
const llvm::Value* B

void setAA(llvm::AAResults* aa)

Declared at: llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h:70

Parameters

llvm::AAResults* aa