class AliasSet

Declaration

class AliasSet : public ilist_node { /* full declaration omitted */ };

Description

An intrusive list node. A base class to enable membership in intrusive lists, including \a simple_ilist, \a iplist, and \a ilist. The first template parameter is the\a value_type for the list. An ilist node can be configured with compile-time options to change behaviour and/or add API. By default, an \a ilist_node knows whether it is the list sentinel (an instance of \a ilist_sentinel) if and only if LLVM_ENABLE_ABI_BREAKING_CHECKS. The function \a isKnownSentinel() always returns \c false tracking is off. Sentinel tracking steals a bit from the "prev" link, which adds a mask operation when decrementing an iterator, but enables bug-finding assertions in \a ilist_iterator. To turn sentinel tracking on all the time, pass in the ilist_sentinel_tracking <true > template parameter. This also enables the \a isSentinel() function. The same option must be passed to the intrusive list. (ilist_sentinel_tracking <false > turns sentinel tracking off all the time.) A type can inherit from ilist_node multiple times by passing in different\a ilist_tag options. This allows a single instance to be inserted into multiple lists simultaneously, where each list is given the same tag. struct A {}; struct B {}; struct N : ilist_node <N , ilist_tag <A >>, ilist_node <N , ilist_tag <B >> {}; void foo() { simple_ilist <N , ilist_tag <A >> ListA; simple_ilist <N , ilist_tag <B >> ListB; N N1; ListA.push_back(N1); ListB.push_back(N1); }\endexample See \a is_valid_option for steps on adding a new option.

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:46

Inherits from: ilist_node

Member Variables

private llvm::AliasSet::PointerRec* PtrList = nullptr
private llvm::AliasSet::PointerRec** PtrListEnd
private llvm::AliasSet* Forward = nullptr
private std::vector<WeakVH> UnknownInsts
All instructions without a specific address in this alias set. In rare cases this vector can have a null'ed out WeakVH instances (can happen if some other loop pass deletes an instruction in this list).
private unsigned int RefCount
Number of nodes pointing to this AliasSet plus the number of AliasSets forwarding to it.
private unsigned int AliasAny
private unsigned int Access
private unsigned int Alias
private unsigned int SetSize = 0

Method Overview

  • public AliasSet(const llvm::AliasSet &)
  • private AliasSet()
  • private void addPointer(llvm::AliasSetTracker & AST, llvm::AliasSet::PointerRec & Entry, llvm::LocationSize Size, const llvm::AAMDNodes & AAInfo, bool KnownMustAlias = false, bool SkipSizeUpdate = false)
  • private void addRef()
  • private void addUnknownInst(llvm::Instruction * I, llvm::AAResults & AA)
  • public llvm::AliasResult aliasesPointer(const llvm::Value * Ptr, llvm::LocationSize Size, const llvm::AAMDNodes & AAInfo, llvm::AAResults & AA) const
  • public bool aliasesUnknownInst(const llvm::Instruction * Inst, llvm::AAResults & AA) const
  • public llvm::AliasSet::iterator begin() const
  • private void dropRef(llvm::AliasSetTracker & AST)
  • public void dump() const
  • public bool empty() const
  • public llvm::AliasSet::iterator end() const
  • private llvm::AliasSet * getForwardedTarget(llvm::AliasSetTracker & AST)
  • private llvm::AliasSet::PointerRec * getSomePointer() const
  • private llvm::Instruction * getUnknownInst(unsigned int i) const
  • public bool isForwardingAliasSet() const
  • public bool isMayAlias() const
  • public bool isMod() const
  • public bool isMustAlias() const
  • public bool isRef() const
  • public void mergeSetIn(llvm::AliasSet & AS, llvm::AliasSetTracker & AST)
  • public void print(llvm::raw_ostream & OS) const
  • private void removeFromTracker(llvm::AliasSetTracker & AST)
  • private void removeUnknownInst(llvm::AliasSetTracker & AST, llvm::Instruction * I)
  • public unsigned int size()

Methods

AliasSet(const llvm::AliasSet&)

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:197

Parameters

const llvm::AliasSet&

AliasSet()

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:267

void addPointer(llvm::AliasSetTracker& AST,
                llvm::AliasSet::PointerRec& Entry,
                llvm::LocationSize Size,
                const llvm::AAMDNodes& AAInfo,
                bool KnownMustAlias = false,
                bool SkipSizeUpdate = false)

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:292

Parameters

llvm::AliasSetTracker& AST
llvm::AliasSet::PointerRec& Entry
llvm::LocationSize Size
const llvm::AAMDNodes& AAInfo
bool KnownMustAlias = false
bool SkipSizeUpdate = false

void addRef()

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:183

void addUnknownInst(llvm::Instruction* I,
                    llvm::AAResults& AA)

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:295

Parameters

llvm::Instruction* I
llvm::AAResults& AA

llvm::AliasResult aliasesPointer(
    const llvm::Value* Ptr,
    llvm::LocationSize Size,
    const llvm::AAMDNodes& AAInfo,
    llvm::AAResults& AA) const

Description

If the specified pointer "may" (or must) alias one of the members in the set return the appropriate AliasResult. Otherwise return NoAlias.

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:312

Parameters

const llvm::Value* Ptr
llvm::LocationSize Size
const llvm::AAMDNodes& AAInfo
llvm::AAResults& AA

bool aliasesUnknownInst(
    const llvm::Instruction* Inst,
    llvm::AAResults& AA) const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:314

Parameters

const llvm::Instruction* Inst
llvm::AAResults& AA

llvm::AliasSet::iterator begin() const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:216

void dropRef(llvm::AliasSetTracker& AST)

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:185

Parameters

llvm::AliasSetTracker& AST

void dump() const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:225

bool empty() const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:218

llvm::AliasSet::iterator end() const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:217

llvm::AliasSet* getForwardedTarget(
    llvm::AliasSetTracker& AST)

Description

Return the real alias set this represents. If this has been merged with another set and is forwarding, return the ultimate destination set. This also implements the union-find collapsing as well.

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:278

Parameters

llvm::AliasSetTracker& AST

llvm::AliasSet::PointerRec* getSomePointer() const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:271

llvm::Instruction* getUnknownInst(
    unsigned int i) const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:191

Parameters

unsigned int i

bool isForwardingAliasSet() const

Description

Return true if this alias set should be ignored as part of the AliasSetTracker object.

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:208

bool isMayAlias() const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:204

bool isMod() const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:202

bool isMustAlias() const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:203

bool isRef() const

Description

Accessors...

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:201

void mergeSetIn(llvm::AliasSet& AS,
                llvm::AliasSetTracker& AST)

Description

Merge the specified alias set into this alias set.

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:211

Parameters

llvm::AliasSet& AS
llvm::AliasSetTracker& AST

void print(llvm::raw_ostream& OS) const

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:224

Parameters

llvm::raw_ostream& OS

void removeFromTracker(llvm::AliasSetTracker& AST)

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:290

Parameters

llvm::AliasSetTracker& AST

void removeUnknownInst(llvm::AliasSetTracker& AST,
                       llvm::Instruction* I)

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:297

Parameters

llvm::AliasSetTracker& AST
llvm::Instruction* I

unsigned int size()

Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:222