|
| AAPointerInfo (const IRPosition &IRP) |
|
const std::string | getName () const override |
| See AbstractAttribute::getName()
|
|
const char * | getIdAddr () const override |
| See AbstractAttribute::getIdAddr()
|
|
virtual const_bin_iterator | begin () const =0 |
|
virtual const_bin_iterator | end () const =0 |
|
virtual int64_t | numOffsetBins () const =0 |
|
virtual bool | reachesReturn () const =0 |
|
virtual void | addReturnedOffsetsTo (OffsetInfo &) const =0 |
|
virtual bool | forallInterferingAccesses (AA::RangeTy Range, function_ref< bool(const Access &, bool)> CB) const =0 |
| Call CB on all accesses that might interfere with Range and return true if all such accesses were known and the callback returned true for all of them, false otherwise.
|
|
virtual bool | forallInterferingAccesses (Attributor &A, const AbstractAttribute &QueryingAA, Instruction &I, bool FindInterferingWrites, bool FindInterferingReads, function_ref< bool(const Access &, bool)> CB, bool &HasBeenWrittenTo, AA::RangeTy &Range, function_ref< bool(const Access &)> SkipCB=nullptr) const =0 |
| Call CB on all accesses that might interfere with I and return true if all such accesses were known and the callback returned true for all of them, false otherwise.
|
|
| AbstractAttribute (const IRPosition &IRP) |
|
virtual | ~AbstractAttribute ()=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.
|
|
virtual StateType & | getState ()=0 |
| Return the internal abstract state for inspection.
|
|
virtual const StateType & | getState () const =0 |
|
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.
|
|
virtual const std::string | getName () const =0 |
| This function should return the name of the AbstractAttribute.
|
|
virtual const char * | getIdAddr () const =0 |
| This function should return the address of the ID of the AbstractAttribute.
|
|
| 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.
|
|
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 |
| }
|
|
virtual | ~AADepGraphNode ()=default |
|
aaiterator | begin () |
|
aaiterator | end () |
|
iterator | child_begin () |
|
iterator | child_end () |
|
void | print (raw_ostream &OS) const |
|
virtual void | print (Attributor *, raw_ostream &OS) const |
|
DepSetTy & | getDeps () |
|
|
static bool | isValidIRPositionForInit (Attributor &A, const IRPosition &IRP) |
| See AbstractAttribute::isValidIRPositionForInit.
|
|
static AAPointerInfo & | 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 is AAPointerInfo.
|
|
static bool | classof (const AADepGraphNode *DGN) |
| This function is used to identify if an DGN is of type AbstractAttribute so that the dyn_cast and cast can use such information to cast an AADepGraphNode to an AbstractAttribute.
|
|
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 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 .
|
|
An abstract interface for struct information.
Definition at line 5755 of file Attributor.h.