34#ifndef LLVM_ANALYSIS_ALIASANALYSISSUMMARY_H
35#define LLVM_ANALYSIS_ALIASANALYSISSUMMARY_H
120 return LHS.Index ==
RHS.Index &&
LHS.DerefLevel ==
RHS.DerefLevel;
126 return LHS.Index <
RHS.Index ||
127 (
LHS.Index ==
RHS.Index &&
LHS.DerefLevel <
RHS.DerefLevel);
173 return LHS.Offset <
RHS.Offset;
206std::optional<InstantiatedValue>
210 return LHS.Val ==
RHS.Val &&
LHS.DerefLevel ==
RHS.DerefLevel;
216 return std::less<Value *>()(
LHS.Val,
RHS.Val) ||
217 (
LHS.Val ==
RHS.Val &&
LHS.DerefLevel <
RHS.DerefLevel);
235std::optional<InstantiatedRelation>
244std::optional<InstantiatedAttr>
259 std::make_pair(
IV.Val,
IV.DerefLevel));
263 return LHS.Val ==
RHS.Val &&
LHS.DerefLevel ==
RHS.DerefLevel;
This file defines DenseMapInfo traits for DenseMap.
This file defines the SmallVector class.
static const uint32_t IV[8]
Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to callin...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
LLVM Value Representation.
std::optional< InstantiatedValue > instantiateInterfaceValue(InterfaceValue IValue, CallBase &Call)
AliasAttrs getExternallyVisibleAttrs(AliasAttrs Attr)
Given an AliasAttrs, return a new AliasAttrs that only contains attributes meaningful to the caller.
bool hasUnknownOrCallerAttr(AliasAttrs Attr)
AliasAttrs getAttrCaller()
AttrCaller represent whether the said pointer comes from a source not known to the current function b...
int64_t addOffset(int64_t LHS, int64_t RHS)
std::optional< InstantiatedRelation > instantiateExternalRelation(ExternalRelation ERelation, CallBase &Call)
bool hasEscapedAttr(AliasAttrs Attr)
std::bitset< NumAliasAttrs > AliasAttrs
These are attributes that an alias analysis can use to mark certain special properties of a given poi...
bool operator!=(InterfaceValue LHS, InterfaceValue RHS)
AliasAttrs getAttrNone()
Attr represent whether the said pointer comes from an unknown source (such as opaque memory or an int...
bool operator<=(InterfaceValue LHS, InterfaceValue RHS)
std::optional< InstantiatedAttr > instantiateExternalAttribute(ExternalAttribute EAttr, CallBase &Call)
bool hasCallerAttr(AliasAttrs Attr)
AliasAttrs getGlobalOrArgAttrFromValue(const Value &Val)
AttrGlobal represent whether the said pointer is a global value.
bool operator<(InterfaceValue LHS, InterfaceValue RHS)
bool operator==(InterfaceValue LHS, InterfaceValue RHS)
bool operator>(InterfaceValue LHS, InterfaceValue RHS)
static const unsigned NumAliasAttrs
The number of attributes that AliasAttr should contain.
bool isGlobalOrArgAttr(AliasAttrs Attr)
AliasAttrs getAttrUnknown()
AttrUnknown represent whether the said pointer comes from a source not known to alias analyses (such ...
bool operator>=(InterfaceValue LHS, InterfaceValue RHS)
bool hasUnknownAttr(AliasAttrs Attr)
static const int64_t UnknownOffset
static const unsigned MaxSupportedArgsInSummary
The maximum number of arguments we can put into a summary.
AliasAttrs getAttrEscaped()
AttrEscaped represent whether the said pointer comes from a known source but escapes to the unknown w...
This is an optimization pass for GlobalISel generic memory operations.
static unsigned getHashValue(const cflaa::InstantiatedValue &IV)
static bool isEqual(const cflaa::InstantiatedValue &LHS, const cflaa::InstantiatedValue &RHS)
static cflaa::InstantiatedValue getEmptyKey()
static cflaa::InstantiatedValue getTombstoneKey()
An information struct used to provide DenseMap with the various necessary components for a given valu...
AliasSummary is just a collection of ExternalRelation and ExternalAttribute.
SmallVector< ExternalAttribute, 8 > RetParamAttributes
SmallVector< ExternalRelation, 8 > RetParamRelations
We use ExternalAttribute to describe an externally visible AliasAttrs for parameters/return value.
We use ExternalRelation to describe an externally visible aliasing relations between parameters/retur...
This is the result of instantiating ExternalAttribute at a particular callsite.
This is the result of instantiating ExternalRelation at a particular callsite.
This is the result of instantiating InterfaceValue at a particular call.
We use InterfaceValue to describe parameters/return value, as well as potential memory locations that...