LLVM
10.0.0svn
|
An abstract interface for value simplify abstract attribute. More...
#include "llvm/Transforms/IPO/Attributor.h"
Public Member Functions | |
AAValueSimplify (const IRPosition &IRP) | |
IRPosition & | getIRPosition () |
Return an IR position, see struct IRPosition. More... | |
const IRPosition & | getIRPosition () const |
Return an IR position, see struct IRPosition. More... | |
virtual Optional< Value * > | getAssumedSimplifiedValue (Attributor &A) const =0 |
} More... | |
![]() | |
StateType & | getState () override |
See AbstractAttribute::getState(...). More... | |
const AbstractState & | getState () const override |
See AbstractAttribute::getState(...). More... | |
![]() | |
BooleanState () | |
![]() | |
IntegerState (base_t BestState=~0) | |
Initialize the (best) state. More... | |
bool | isValidState () const override |
See AbstractState::isValidState() NOTE: For now we simply pretend that the worst possible state is invalid. More... | |
bool | isAtFixpoint () const override |
See AbstractState::isAtFixpoint() More... | |
ChangeStatus | indicateOptimisticFixpoint () override |
See AbstractState::indicateOptimisticFixpoint(...) More... | |
ChangeStatus | indicatePessimisticFixpoint () override |
See AbstractState::indicatePessimisticFixpoint(...) More... | |
base_t | getKnown () const |
Return the known state encoding. More... | |
base_t | getAssumed () const |
Return the assumed state encoding. More... | |
bool | isKnown (base_t BitsEncoding) const |
Return true if the bits set in BitsEncoding are "known bits". More... | |
bool | isAssumed (base_t BitsEncoding) const |
Return true if the bits set in BitsEncoding are "assumed bits". More... | |
IntegerState & | addKnownBits (base_t Bits) |
Add the bits in BitsEncoding to the "known bits". More... | |
IntegerState & | removeAssumedBits (base_t BitsEncoding) |
Remove the bits in BitsEncoding from the "assumed bits" if not known. More... | |
IntegerState & | removeKnownBits (base_t BitsEncoding) |
Remove the bits in BitsEncoding from the "known bits". More... | |
IntegerState & | intersectAssumedBits (base_t BitsEncoding) |
Keep only "assumed bits" also set in BitsEncoding but all known ones. More... | |
IntegerState & | takeAssumedMinimum (base_t Value) |
Take minimum of assumed and Value . More... | |
IntegerState & | takeKnownMaximum (base_t Value) |
Take maximum of known and Value . More... | |
bool | operator== (const IntegerState &R) const |
Equality for IntegerState. More... | |
bool | operator!= (const IntegerState &R) const |
Inequality for IntegerState. More... | |
IntegerState | operator^= (const IntegerState &R) |
"Clamp" this state with R . More... | |
IntegerState | operator+= (const IntegerState &R) |
"Clamp" this state with R . More... | |
IntegerState | operator &= (const IntegerState &R) |
Make this the minimum, known and assumed, of this state and R . More... | |
IntegerState | operator|= (const IntegerState &R) |
Make this the maximum, known and assumed, of this state and R . More... | |
![]() | |
virtual | ~AbstractState () |
![]() | |
virtual | ~AbstractAttribute () |
Virtual destructor. More... | |
virtual void | initialize (Attributor &A) |
Initialize the state with the information in the Attributor A . More... | |
virtual void | print (raw_ostream &OS) const |
Helper functions, for debug purposes only. More... | |
void | dump () const |
virtual const std::string | getAsStr () const =0 |
This function should return the "summarized" assumed state as string. More... | |
![]() | |
virtual | ~IRPosition () |
IRPosition () | |
Default constructor available to create invalid positions implicitly. More... | |
bool | operator== (const IRPosition &RHS) const |
bool | operator!= (const IRPosition &RHS) const |
Value & | getAnchorValue () |
Return the value this abstract attribute is anchored with. More... | |
const Value & | getAnchorValue () const |
Function * | getAssociatedFunction () |
} More... | |
const Function * | getAssociatedFunction () const |
Argument * | getAssociatedArgument () |
} More... | |
const Argument * | getAssociatedArgument () const |
bool | isFnInterfaceKind () const |
} More... | |
Function * | getAnchorScope () |
Return the Function surrounding the anchor value. More... | |
const Function * | getAnchorScope () const |
Instruction * | getCtxI () |
} More... | |
const Instruction * | getCtxI () const |
Value & | getAssociatedValue () |
} More... | |
const Value & | getAssociatedValue () const |
int | getArgNo () const |
} More... | |
unsigned | getAttrIdx () const |
Return the index in the attribute list for this position. More... | |
Kind | getPositionKind () const |
Return the associated position kind. More... | |
bool | hasAttr (ArrayRef< Attribute::AttrKind > AKs, bool IgnoreSubsumingPositions=false) const |
TODO: Figure out if the attribute related helper functions should live here or somewhere else. More... | |
void | getAttrs (ArrayRef< Attribute::AttrKind > AKs, SmallVectorImpl< Attribute > &Attrs) const |
Return the attributes of any kind in AKs existing in the IR at a position that will affect this one. More... | |
Attribute | getAttr (Attribute::AttrKind AK) const |
Return the attribute of kind AK existing in the IR at this position. More... | |
void | removeAttrs (ArrayRef< Attribute::AttrKind > AKs) |
Remove the attribute of kind AKs existing in the IR at this position. More... | |
bool | isAnyCallSitePosition () const |
Static Public Member Functions | |
static AAValueSimplify & | createForPosition (const IRPosition &IRP, Attributor &A) |
Create an abstract attribute view for the position IRP . More... | |
![]() | |
static constexpr base_t | getWorstState () |
Return the worst possible representable state. More... | |
![]() | |
static const IRPosition | value (const Value &V) |
Create a position describing the value of V . More... | |
static const IRPosition | function (const Function &F) |
Create a position describing the function scope of F . More... | |
static const IRPosition | returned (const Function &F) |
Create a position describing the returned value of F . More... | |
static const IRPosition | argument (const Argument &Arg) |
Create a position describing the argument Arg . More... | |
static const IRPosition | callsite_function (const CallBase &CB) |
Create a position describing the function scope of CB . More... | |
static const IRPosition | callsite_returned (const CallBase &CB) |
Create a position describing the returned value of CB . More... | |
static const IRPosition | callsite_argument (const CallBase &CB, unsigned ArgNo) |
Create a position describing the argument of CB at position ArgNo . More... | |
static const IRPosition | callsite_function (ImmutableCallSite ICS) |
Create a position describing the function scope of ICS . More... | |
static const IRPosition | callsite_returned (ImmutableCallSite ICS) |
Create a position describing the returned value of ICS . More... | |
static const IRPosition | callsite_argument (ImmutableCallSite ICS, unsigned ArgNo) |
Create a position describing the argument of ICS at position ArgNo . More... | |
static const IRPosition | callsite_argument (AbstractCallSite ACS, unsigned ArgNo) |
Create a position describing the argument of ACS at position ArgNo . More... | |
static const IRPosition | function_scope (const IRPosition &IRP) |
Create a position with function scope matching the "context" of IRP . More... | |
Static Public Attributes | |
static const char | ID = 0 |
Unique ID (due to the unique address) More... | |
![]() | |
static const IRPosition | EmptyKey |
Special DenseMap key values. More... | |
static const IRPosition | TombstoneKey |
Additional Inherited Members | |
![]() | |
using | StateType = BooleanState |
Provide static access to the type of the state. More... | |
![]() | |
using | base_t = uint32_t |
Underlying integer type, we assume 32 bits to be enough. More... | |
![]() | |
using | StateType = AbstractState |
![]() | |
enum | Kind : int { IRP_INVALID = -6, IRP_FLOAT = -5, IRP_RETURNED = -4, IRP_CALL_SITE_RETURNED = -3, IRP_FUNCTION = -2, IRP_CALL_SITE = -1, IRP_ARGUMENT = 0, IRP_CALL_SITE_ARGUMENT = 1 } |
The positions we distinguish in the IR. More... | |
![]() | |
ChangeStatus | update (Attributor &A) |
Hook for the Attributor to trigger an update of the internal state. More... | |
virtual ChangeStatus | manifest (Attributor &A) |
Hook for the Attributor to trigger the manifestation of the information represented by the abstract attribute in the LLVM-IR. More... | |
virtual void | trackStatistics () const =0 |
Hook to enable custom statistic tracking, called after manifest that resulted in a change if statistics are enabled. More... | |
virtual ChangeStatus | updateImpl (Attributor &A)=0 |
The actual update/transfer function which has to be implemented by the derived classes. More... | |
An abstract interface for value simplify abstract attribute.
Definition at line 1850 of file Attributor.h.
|
inline |
Definition at line 1852 of file Attributor.h.
|
static |
Create an abstract attribute view for the position IRP
.
|
pure virtual |
}
Return an assumed simplified value if a single candidate is found. If there cannot be one, return original value. If it is not clear yet, return the Optional::NoneType.
|
inlinevirtual |
Return an IR position, see struct IRPosition.
{
Implements llvm::AbstractAttribute.
Definition at line 1857 of file Attributor.h.
|
inlinevirtual |
Return an IR position, see struct IRPosition.
Implements llvm::AbstractAttribute.
Definition at line 1858 of file Attributor.h.
Unique ID (due to the unique address)
Definition at line 1871 of file Attributor.h.
Referenced by llvm::createAttributorLegacyPass().