struct AAMemoryLocation
Declaration
struct AAMemoryLocation : public IRAttribute { /* full declaration omitted */ };
Description
An abstract interface for all memory location attributes (readnone/argmemonly/inaccessiblememonly/inaccessibleorargmemonly).
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4117
Inherits from: IRAttribute
Member Variables
- public static const char ID
- Unique ID (due to the unique address)
Method Overview
- public AAMemoryLocation(const llvm::IRPosition & IRP, llvm::Attributor & A)
- public virtual bool checkForAllAccessesToMemoryKind(function_ref<bool (const llvm::Instruction *, const llvm::Value *, llvm::AAMemoryLocation::AccessKind, llvm::AAMemoryLocation::MemoryLocationsKind)> Pred, llvm::AAMemoryLocation::MemoryLocationsKind MLK) const
- public static bool classof(const llvm::AbstractAttribute * AA)
- public static llvm::AAMemoryLocation & createForPosition(const llvm::IRPosition & IRP, llvm::Attributor & A)
- public const std::string getAsStr() const
- public llvm::AAMemoryLocation::MemoryLocationsKind getAssumedNotAccessedLocation() const
- public const char * getIdAddr() const
- public static std::string getMemoryLocationsAsStr(llvm::AAMemoryLocation::MemoryLocationsKind MLK)
- public const std::string getName() const
- public static llvm::AAMemoryLocation::MemoryLocationsKind inverseLocation(llvm::AAMemoryLocation::MemoryLocationsKind Loc, bool AndLocalMem, bool AndConstMem)
- public bool isAssumedArgMemOnly() const
- public bool isAssumedInaccessibleMemOnly() const
- public bool isAssumedInaccessibleOrArgMemOnly() const
- public bool isAssumedReadNone() const
- public bool isAssumedSpecifiedMemOnly(llvm::AAMemoryLocation::MemoryLocationsKind MLK) const
- public bool isAssumedStackOnly() const
- public bool isKnowStackOnly() const
- public bool isKnownArgMemOnly() const
- public bool isKnownInaccessibleMemOnly() const
- public bool isKnownInaccessibleOrArgMemOnly() const
- public bool isKnownReadNone() const
- public bool mayAccessArgMem() const
Methods
¶AAMemoryLocation(const llvm::IRPosition& IRP,
llvm::Attributor& A)
AAMemoryLocation(const llvm::IRPosition& IRP,
llvm::Attributor& A)
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4123
Parameters
- const llvm::IRPosition& IRP
- llvm::Attributor& A
¶virtual bool checkForAllAccessesToMemoryKind(
function_ref<
bool(const llvm::Instruction*,
const llvm::Value*,
llvm::AAMemoryLocation::AccessKind,
llvm::AAMemoryLocation::
MemoryLocationsKind)> Pred,
llvm::AAMemoryLocation::MemoryLocationsKind
MLK) const
virtual bool checkForAllAccessesToMemoryKind(
function_ref<
bool(const llvm::Instruction*,
const llvm::Value*,
llvm::AAMemoryLocation::AccessKind,
llvm::AAMemoryLocation::
MemoryLocationsKind)> Pred,
llvm::AAMemoryLocation::MemoryLocationsKind
MLK) const
Description
Check \p Pred on all accesses to the memory kinds specified by \p MLK. This method will evaluate \p Pred on all accesses (access instruction + underlying accessed memory pointer) and it will return true if \p Pred holds every time.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4254
Parameters
- function_ref<bool( const llvm::Instruction*, const llvm::Value*, llvm::AAMemoryLocation::AccessKind, llvm::AAMemoryLocation::MemoryLocationsKind)> Pred
- llvm::AAMemoryLocation::MemoryLocationsKind MLK
¶static bool classof(
const llvm::AbstractAttribute* AA)
static bool classof(
const llvm::AbstractAttribute* AA)
Description
This function should return true if the type of the \p AA is AAMemoryLocation
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4277
Parameters
- const llvm::AbstractAttribute* AA
¶static llvm::AAMemoryLocation& createForPosition(
const llvm::IRPosition& IRP,
llvm::Attributor& A)
static llvm::AAMemoryLocation& createForPosition(
const llvm::IRPosition& IRP,
llvm::Attributor& A)
Description
Create an abstract attribute view for the position \p IRP.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4261
Parameters
- const llvm::IRPosition& IRP
- llvm::Attributor& A
¶const std::string getAsStr() const
const std::string getAsStr() const
Description
See AbstractState::getAsStr().
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4265
¶llvm::AAMemoryLocation::MemoryLocationsKind
getAssumedNotAccessedLocation() const
llvm::AAMemoryLocation::MemoryLocationsKind
getAssumedNotAccessedLocation() const
Description
Return the locations that are assumed to be not accessed by the associated function, if any.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4223
¶const char* getIdAddr() const
const char* getIdAddr() const
Description
See AbstractAttribute::getIdAddr()
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4273
¶static std::string getMemoryLocationsAsStr(
llvm::AAMemoryLocation::MemoryLocationsKind
MLK)
static std::string getMemoryLocationsAsStr(
llvm::AAMemoryLocation::MemoryLocationsKind
MLK)
Description
Return the locations encoded by \p MLK as a readable string.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4239
Parameters
- llvm::AAMemoryLocation::MemoryLocationsKind MLK
¶const std::string getName() const
const std::string getName() const
Description
See AbstractAttribute::getName()
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4270
¶static llvm::AAMemoryLocation::MemoryLocationsKind
inverseLocation(
llvm::AAMemoryLocation::MemoryLocationsKind
Loc,
bool AndLocalMem,
bool AndConstMem)
static llvm::AAMemoryLocation::MemoryLocationsKind
inverseLocation(
llvm::AAMemoryLocation::MemoryLocationsKind
Loc,
bool AndLocalMem,
bool AndConstMem)
Description
Return the inverse of location \p Loc, thus for NO_XXX the return describes ONLY_XXX. The flags \p AndLocalMem and \p AndConstMem determine if local (=stack) and constant memory are allowed as well. Most of the time we do want them to be included, e.g., argmemonly allows accesses via argument pointers or local or constant memory accesses.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4233
Parameters
- llvm::AAMemoryLocation::MemoryLocationsKind Loc
- bool AndLocalMem
- bool AndConstMem
¶bool isAssumedArgMemOnly() const
bool isAssumedArgMemOnly() const
Description
Return true if we assume that the underlying value will only access argument pointees (see Attribute::ArgMemOnly).
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4191
¶bool isAssumedInaccessibleMemOnly() const
bool isAssumedInaccessibleMemOnly() const
Description
Return true if we assume that the underlying value will only access inaccesible memory only (see Attribute::InaccessibleMemOnly).
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4179
¶bool isAssumedInaccessibleOrArgMemOnly() const
bool isAssumedInaccessibleOrArgMemOnly() const
Description
Return true if we assume that the underlying value will only access inaccesible memory or argument pointees (see Attribute::InaccessibleOrArgMemOnly).
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4206
¶bool isAssumedReadNone() const
bool isAssumedReadNone() const
Description
Return true if we assume that the associated functions has no observable accesses.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4155
¶bool isAssumedSpecifiedMemOnly(
llvm::AAMemoryLocation::MemoryLocationsKind
MLK) const
bool isAssumedSpecifiedMemOnly(
llvm::AAMemoryLocation::MemoryLocationsKind
MLK) const
Description
Return true if only the memory locations specififed by \p MLK are assumed to be accessed by the associated function.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4217
Parameters
- llvm::AAMemoryLocation::MemoryLocationsKind MLK
¶bool isAssumedStackOnly() const
bool isAssumedStackOnly() const
Description
Return true if we assume that the associated functions has at most local/stack accesses.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4167
¶bool isKnowStackOnly() const
bool isKnowStackOnly() const
Description
Return true if we know that the associated functions has at most local/stack accesses.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4161
¶bool isKnownArgMemOnly() const
bool isKnownArgMemOnly() const
Description
Return true if we know that the underlying value will only access argument pointees (see Attribute::ArgMemOnly).
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4185
¶bool isKnownInaccessibleMemOnly() const
bool isKnownInaccessibleMemOnly() const
Description
Return true if we know that the underlying value will only access inaccesible memory only (see Attribute::InaccessibleMemOnly).
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4173
¶bool isKnownInaccessibleOrArgMemOnly() const
bool isKnownInaccessibleOrArgMemOnly() const
Description
Return true if we know that the underlying value will only access inaccesible memory or argument pointees (see Attribute::InaccessibleOrArgMemOnly).
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4198
¶bool isKnownReadNone() const
bool isKnownReadNone() const
Description
Return true if we know that the associated functions has no observable accesses.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4151
¶bool mayAccessArgMem() const
bool mayAccessArgMem() const
Description
Return true if the underlying value may access memory through arguement pointers of the associated function, if any.
Declared at: llvm/include/llvm/Transforms/IPO/Attributor.h:4213