LLVM: llvm::AAExecutionDomain Struct Reference (original) (raw)

Public Member Functions

AAExecutionDomain (const IRPosition &IRP, Attributor &A)

StringRef

getName () const override

See AbstractAttribute::getName().

const char *

getIdAddr () const override

See AbstractAttribute::getIdAddr().

bool

isExecutedByInitialThreadOnly (const Instruction &I) const

Check if an instruction is executed only by the initial thread.

virtual bool

isExecutedByInitialThreadOnly (const BasicBlock &) const =0

Check if a basic block is executed only by the initial thread.

virtual bool

isExecutedInAlignedRegion (Attributor &A, const Instruction &I) const =0

Check if the instruction I is executed in an aligned region, that is, the synchronizing effects before and after I are both aligned barriers.

virtual ExecutionDomainTy

getExecutionDomain (const BasicBlock &) const =0

virtual std::pair< ExecutionDomainTy, ExecutionDomainTy >

getExecutionDomain (const CallBase &CB) const =0

Return the execution domain with which the call CB is entered and the one with which it is left.

virtual ExecutionDomainTy

getFunctionExecutionDomain () const =0

virtual bool

isNoOpFence (const FenceInst &FI) const =0

Helper function to determine if FI is a no-op given the information about its execution from ExecDomainAA.

Public Member Functions inherited from llvm::StateWrapper< BooleanState, AbstractAttribute >

StateWrapper (const IRPosition &IRP, Ts... Args)

StateType &

getState () override

See AbstractAttribute::getState(...).

const StateType &

getState () const override

See AbstractAttribute::getState(...).

Public Member Functions inherited from llvm::AbstractAttribute

AbstractAttribute (const IRPosition &IRP)

~AbstractAttribute () override=default

Virtual destructor.

virtual void

initialize (Attributor &A)

Initialize the state with the information in the Attributor A.

virtual bool

isQueryAA () const

A query AA is always scheduled as long as we do updates because it does lazy computation that cannot be determined to be done from the outside.

const IRPosition &

getIRPosition () const

Return an IR position, see struct IRPosition.

IRPosition &

getIRPosition ()

void

print (raw_ostream &OS) const

Helper functions, for debug purposes only.

void

print (Attributor *, raw_ostream &OS) const override

virtual void

printWithDeps (raw_ostream &OS) const

void

dump () const

virtual const std::string

getAsStr (Attributor *A) const =0

This function should return the "summarized" assumed state as string.

Public Member Functions inherited from llvm::IRPosition

IRPosition ()

Default constructor available to create invalid positions implicitly.

bool

operator== (const IRPosition &RHS) const

bool

operator!= (const IRPosition &RHS) const

Value &

getAnchorValue () const

Return the value this abstract attribute is anchored with.

Function *

getAssociatedFunction () const

Return the associated function, if any.

LLVM_ABI Argument *

getAssociatedArgument () const

Return the associated argument, if any.

bool

isFnInterfaceKind () const

Return true if the position refers to a function interface, that is the function scope, the function return, or an argument.

bool

isFunctionScope () const

Return true if this is a function or call site position.

Function *

getAnchorScope () const

Return the Function surrounding the anchor value.

Instruction *

getCtxI () const

Return the context instruction, if any.

Value &

getAssociatedValue () const

Return the value this abstract attribute is associated with.

Type *

getAssociatedType () const

Return the type this abstract attribute is associated with.

int

getCalleeArgNo () const

Return the callee argument number of the associated value if it is an argument or call site argument, otherwise a negative value.

int

getCallSiteArgNo () const

Return the call site argument number of the associated value if it is an argument or call site argument, otherwise a negative value.

unsigned

getAttrIdx () const

Return the index in the attribute list for this position.

Value *

getAttrListAnchor () const

Return the value attributes are attached to.

AttributeList

getAttrList () const

Return the attributes associated with this function or call site scope.

void

setAttrList (const AttributeList &AttrList) const

Update the attributes associated with this function or call site scope.

unsigned

getNumArgs () const

Return the number of arguments associated with this function or call site scope.

Value *

getArg (unsigned ArgNo) const

Return theargument ArgNo associated with this function or call site scope.

Kind

getPositionKind () const

Return the associated position kind.

bool

isAnyCallSitePosition () const

bool

isArgumentPosition () const

Return true if the position is an argument or call site argument.

IRPosition

stripCallBaseContext () const

Return the same position without the call base context.

const CallBaseContext *

getCallBaseContext () const

Get the call base context from the position.

bool

hasCallBaseContext () const

Check if the position has any call base context.

operator void * () const

}

Public Member Functions inherited from llvm::AADepGraphNode

virtual

~AADepGraphNode ()=default

aaiterator

begin ()

aaiterator

end ()

iterator

child_begin ()

iterator

child_end ()

void

print (raw_ostream &OS) const

DepSetTy &

getDeps ()

Public Member Functions inherited from llvm::BooleanState

BooleanState ()=default

BooleanState (base_t Assumed)

void

setAssumed (bool Value)

Set the assumed value to [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.") but never below the known one.

void

setKnown (bool Value)

Set the known and asssumed value to [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.").

bool

isAssumed () const

Return true if the state is assumed to hold.

bool

isKnown () const

Return true if the state is known to hold.

Public Member Functions inherited from llvm::IntegerStateBase< bool, true, false >

IntegerStateBase ()=default

IntegerStateBase (base_t Assumed)

bool

isValidState () const override

See AbstractState::isValidState() NOTE: For now we simply pretend that the worst possible state is invalid.

bool

isAtFixpoint () const override

See AbstractState::isAtFixpoint()

ChangeStatus

indicateOptimisticFixpoint () override

See AbstractState::indicateOptimisticFixpoint(...)

ChangeStatus

indicatePessimisticFixpoint () override

See AbstractState::indicatePessimisticFixpoint(...)

base_t

getKnown () const

Return the known state encoding.

base_t

getAssumed () const

Return the assumed state encoding.

bool

operator== (const IntegerStateBase< base_t, BestState, WorstState > &R) const

Equality for IntegerStateBase.

bool

operator!= (const IntegerStateBase< base_t, BestState, WorstState > &R) const

Inequality for IntegerStateBase.

void

operator^= (const IntegerStateBase< base_t, BestState, WorstState > &R)

"Clamp" this state with R.

void

operator+= (const IntegerStateBase< base_t, BestState, WorstState > &R)

"Clamp" this state with R.

void

operator|= (const IntegerStateBase< base_t, BestState, WorstState > &R)

void

operator&= (const IntegerStateBase< base_t, BestState, WorstState > &R)

Public Member Functions inherited from llvm::AbstractState

virtual

~AbstractState ()=default

Static Public Member Functions

static LLVM_ABI AAExecutionDomain &

createForPosition (const IRPosition &IRP, Attributor &A)

Create an abstract attribute view for the position IRP.

static bool

classof (const AbstractAttribute *AA)

This function should return true if the type of the [AA](namespacellvm%5F1%5F1AA.html "Abstract Attribute helper functions.") is AAExecutionDomain.

Static Public Member Functions inherited from llvm::AbstractAttribute

static bool

classof (const AADepGraphNode *DGN)

This function is used to identify if an DGN is of type [AbstractAttribute](structllvm%5F1%5F1AbstractAttribute.html "Base struct for all "concrete attribute" deductions.") so that the dyn_cast and cast can use such information to cast an AADepGraphNode to an [AbstractAttribute](structllvm%5F1%5F1AbstractAttribute.html "Base struct for all "concrete attribute" deductions.").

static bool

hasTrivialInitializer ()

Return false if this AA does anything non-trivial (hence not done by default) in its initializer.

static bool

requiresCalleeForCallBase ()

Return true if this AA requires a "callee" (or an associted function) for a call site positon.

static bool

requiresNonAsmForCallBase ()

Return true if this AA requires non-asm "callee" for a call site positon.

static bool

requiresCallersForArgOrFunction ()

Return true if this AA requires all callees for an argument or function positon.

static bool

isValidIRPositionForInit (Attributor &A, const IRPosition &IRP)

Return false if an AA should not be created for IRP.

static bool

isValidIRPositionForUpdate (Attributor &A, const IRPosition &IRP)

Return false if an AA should not be updated for IRP.

Static Public Member Functions inherited from llvm::IRPosition

static const IRPosition

value (const Value &V, const CallBaseContext *CBContext=nullptr)

Create a position describing the value of V.

static const IRPosition

inst (const Instruction &I, const CallBaseContext *CBContext=nullptr)

Create a position describing the instruction I.

static const IRPosition

function (const Function &F, const CallBaseContext *CBContext=nullptr)

Create a position describing the function scope of F.

static const IRPosition

returned (const Function &F, const CallBaseContext *CBContext=nullptr)

Create a position describing the returned value of F.

static const IRPosition

argument (const Argument &Arg, const CallBaseContext *CBContext=nullptr)

Create a position describing the argument Arg.

static const IRPosition

callsite_function (const CallBase &CB)

Create a position describing the function scope of CB.

static const IRPosition

callsite_returned (const CallBase &CB)

Create a position describing the returned value of CB.

static const IRPosition

callsite_argument (const CallBase &CB, unsigned ArgNo)

Create a position describing the argument of CB at position ArgNo.

static const IRPosition

callsite_argument (AbstractCallSite ACS, unsigned ArgNo)

Create a position describing the argument of ACS at position ArgNo.

static const IRPosition

function_scope (const IRPosition &IRP, const CallBaseContext *CBContext=nullptr)

Create a position with function scope matching the "context" of IRP.

Static Public Member Functions inherited from llvm::IntegerStateBase< bool, true, false >

static constexpr base_t

getBestState ()

Return the best possible representable state.

static constexpr base_t

getBestState (const IntegerStateBase &)

static constexpr base_t

getWorstState ()

Return the worst possible representable state.

static constexpr base_t

getWorstState (const IntegerStateBase &)

Definition at line 5673 of file Attributor.h.