An abstract interface for all memory location attributes (readnone/argmemonly/inaccessiblememonly/inaccessibleorargmemonly).

Synopsis

Declared in <llvm/Transforms/IPO/Attributor.h>

Base Classes

Name

Description

IRAttribute<Attribute::None, StateWrapper<BitIntegerState<uint32_t, 511>, AbstractAttribute>, AAMemoryLocation>

Helper class that provides common functionality to manifest IR attributes.

Type Aliases

Enums

Name

Description

Unnamed enum

Encoding of different locations that could be accessed by a memory access.

AccessKind

Simple enum to distinguish read/write/read‐write accesses.

Member Functions

Name

Description

AAMemoryLocation [constructor]

Constructor

checkForAllAccessesToMemoryKind [virtual]

Check Pred on all accesses to the memory kinds specified by MLK.

getAsStr [virtual]

See AbstractState::getAsStr(Attributor).

getAssumedNotAccessedLocation

Return the locations that are assumed to be not accessed by the associated function, if any.

getAttrKind

Return the kind that identifies the abstract attribute implementation.

getDeducedAttributes [virtual]

Return the deduced attributes in Attrs.

getIdAddr [virtual]

See AbstractAttribute::getIdAddr()

getName [virtual]

See AbstractAttribute::getName()

isAssumedArgMemOnly

Return true if we assume that the underlying value will only access argument pointees (see Attribute::ArgMemOnly).

isAssumedInaccessibleMemOnly

Return true if we assume that the underlying value will only access inaccesible memory only (see Attribute::InaccessibleMemOnly).

isAssumedInaccessibleOrArgMemOnly

Return true if we assume that the underlying value will only access inaccesible memory or argument pointees (see Attribute::InaccessibleOrArgMemOnly).

isAssumedReadNone

Return true if we assume that the associated functions has no observable accesses.

isAssumedSpecifiedMemOnly

Return true if only the memory locations specififed by MLK are assumed to be accessed by the associated function.

isAssumedStackOnly

Return true if we assume that the associated functions has at most local/stack accesses.

isKnowStackOnly

Return true if we know that the associated functions has at most local/stack accesses.

isKnownArgMemOnly

Return true if we know that the underlying value will only access argument pointees (see Attribute::ArgMemOnly).

isKnownInaccessibleMemOnly

Return true if we know that the underlying value will only access inaccesible memory only (see Attribute::InaccessibleMemOnly).

isKnownInaccessibleOrArgMemOnly

Return true if we know that the underlying value will only access inaccesible memory or argument pointees (see Attribute::InaccessibleOrArgMemOnly).

isKnownReadNone

Return true if we know that the associated functions has no observable accesses.

manifest [virtual]

See AbstractAttribute::manifest(...).

mayAccessArgMem

Return true if the underlying value may access memory through arguement pointers of the associated function, if any.

Static Member Functions

Name

Description

classof

This function should return true if the type of the AA is AAMemoryLocation

createForPosition

Create an abstract attribute view for the position IRP.

getMemoryLocationsAsStr

Return the locations encoded by MLK as a readable string.

hasTrivialInitializer

See AbstractAttribute::hasTrivialInitializer.

inverseLocation

Return the inverse of location Loc, thus for NO_XXX the return describes ONLY_XXX. The flags AndLocalMem and 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.

isImpliedByIR

isImpliedByPoison

Return true if the IR attribute(s) associated with this AA are implied for an poison value.

isImpliedByUndef

Return true if the IR attribute(s) associated with this AA are implied for an undef value.

isValidIRPositionForInit

See AbstractAttribute::isValidIRPositionForInit

requiresCalleeForCallBase

See AbstractAttribute::requiresCalleeForCallBase.

Static Data Members

Name

Description

ID

Unique ID (due to the unique address)

IRAttributeKind

Compile time access to the IR attribute kind.

Created with MrDocs