LLVM: llvm::AAUndefinedBehavior Struct Reference (original) (raw)
Public Member Functions
AAUndefinedBehavior (const IRPosition &IRP, Attributor &A)
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.
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.
See AbstractAttribute::getName()
See AbstractAttribute::getIdAddr()
Public Member Functions inherited from llvm::StateWrapper< BooleanState, AbstractAttribute >
StateWrapper (const IRPosition &IRP, Ts... Args)
getState () override
See AbstractAttribute::getState(...).
See AbstractAttribute::getState(...).
Public Member Functions inherited from llvm::AbstractAttribute
AbstractAttribute (const IRPosition &IRP)
~AbstractAttribute () override=default
Virtual destructor.
virtual void
Initialize the state with the information in the Attributor A.
virtual bool
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.
Return an IR position, see struct IRPosition.
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
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.
operator== (const IRPosition &RHS) const
operator!= (const IRPosition &RHS) const
Value &
Return the value this abstract attribute is anchored with.
Function *
getAssociatedFunction () const
Return the associated function, if any.
getAssociatedArgument () const
Return the associated argument, if any.
Return true if the position refers to a function interface, that is the function scope, the function return, or an argument.
Return true if this is a function or call site position.
Function *
Return the Function surrounding the anchor value.
Return the context instruction, if any.
Value &
Return the value this abstract attribute is associated with.
Type *
Return the type this abstract attribute is associated with.
int
Return the callee argument number of the associated value if it is an argument or call site argument, otherwise a negative value.
int
Return the call site argument number of the associated value if it is an argument or call site argument, otherwise a negative value.
getAttrIdx () const
Return the index in the attribute list for this position.
Value *
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.
getNumArgs () const
Return the number of arguments associated with this function or call site scope.
Value *
Return theargument ArgNo associated with this function or call site scope.
Return the associated position kind.
isAnyCallSitePosition () const
Return true if the position is an argument or call site argument.
Return the same position without the call base context.
Get the call base context from the position.
Check if the position has any call base context.
}
Public Member Functions inherited from llvm::AADepGraphNode
virtual
~AADepGraphNode ()=default
begin ()
end ()
child_begin ()
child_end ()
void
print (raw_ostream &OS) const
DepSetTy &
getDeps ()
Public Member Functions inherited from llvm::BooleanState
BooleanState ()=default
void
Set the assumed value to [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.") but never below the known one.
void
Set the known and asssumed value to [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.").
Return true if the state is assumed to hold.
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)
isValidState () const override
See AbstractState::isValidState() NOTE: For now we simply pretend that the worst possible state is invalid.
isAtFixpoint () const override
See AbstractState::isAtFixpoint()
indicateOptimisticFixpoint () override
See AbstractState::indicateOptimisticFixpoint(...)
indicatePessimisticFixpoint () override
See AbstractState::indicatePessimisticFixpoint(...)
Return the known state encoding.
getAssumed () const
Return the assumed state encoding.
operator== (const IntegerStateBase< base_t, BestState, WorstState > &R) const
Equality for IntegerStateBase.
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
Return false if this AA does anything non-trivial (hence not done by default) in its initializer.
static bool
Return true if this AA requires a "callee" (or an associted function) for a call site positon.
static bool
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
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.