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

Public Member Functions

AAUndefinedBehavior (const IRPosition &IRP, Attributor &A)

bool

isAssumedToCauseUB () const

Return true if "undefined behavior" is assumed.

virtual bool

isAssumedToCauseUB (Instruction *I) const =0

Return true if "undefined behavior" is assumed for a specific instruction.

bool

isKnownToCauseUB () const

Return true if "undefined behavior" is known.

virtual bool

isKnownToCauseUB (Instruction *I) const =0

Return true if "undefined behavior" is known for a specific instruction.

StringRef

getName () const override

See AbstractAttribute::getName()

const char *

getIdAddr () const override

See AbstractAttribute::getIdAddr()

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 AAUndefinedBehavior &

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 AAUndefineBehavior.

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 &)

An abstract attribute for undefined behavior.

Definition at line 3824 of file Attributor.h.