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&)
AliasSet(const llvm::AliasSet&)
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:197
Parameters
- const llvm::AliasSet&
¶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)
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()
void addRef()
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:183
¶void addUnknownInst(llvm::Instruction* I,
llvm::AAResults& AA)
void addUnknownInst(llvm::Instruction* I,
llvm::AAResults& AA)
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:295
Parameters
¶llvm::AliasResult aliasesPointer(
const llvm::Value* Ptr,
llvm::LocationSize Size,
const llvm::AAMDNodes& AAInfo,
llvm::AAResults& AA) const
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
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
llvm::AliasSet::iterator begin() const
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:216
¶void dropRef(llvm::AliasSetTracker& AST)
void dropRef(llvm::AliasSetTracker& AST)
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:185
Parameters
¶void dump() const
void dump() const
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:225
¶bool empty() const
bool empty() const
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:218
¶llvm::AliasSet::iterator end() const
llvm::AliasSet::iterator end() const
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:217
¶llvm::AliasSet* getForwardedTarget(
llvm::AliasSetTracker& AST)
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::AliasSet::PointerRec* getSomePointer() const
llvm::AliasSet::PointerRec* getSomePointer() const
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:271
¶llvm::Instruction* getUnknownInst(
unsigned int i) const
llvm::Instruction* getUnknownInst(
unsigned int i) const
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:191
Parameters
- unsigned int i
¶bool isForwardingAliasSet() const
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
bool isMayAlias() const
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:204
¶bool isMod() const
bool isMod() const
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:202
¶bool isMustAlias() const
bool isMustAlias() const
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:203
¶bool isRef() const
bool isRef() const
Description
Accessors...
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:201
¶void mergeSetIn(llvm::AliasSet& AS,
llvm::AliasSetTracker& AST)
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
void print(llvm::raw_ostream& OS) const
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:224
Parameters
¶void removeFromTracker(llvm::AliasSetTracker& AST)
void removeFromTracker(llvm::AliasSetTracker& AST)
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:290
Parameters
¶void removeUnknownInst(llvm::AliasSetTracker& AST,
llvm::Instruction* I)
void removeUnknownInst(llvm::AliasSetTracker& AST,
llvm::Instruction* I)
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:297
Parameters
¶unsigned int size()
unsigned int size()
Declared at: llvm/include/llvm/Analysis/AliasSetTracker.h:222