LLVM  10.0.0svn
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
llvm::AADereferenceable Struct Reference

An abstract interface for all dereferenceable attribute. More...

#include "llvm/Transforms/IPO/Attributor.h"

Inheritance diagram for llvm::AADereferenceable:
Inheritance graph
[legend]
Collaboration diagram for llvm::AADereferenceable:
Collaboration graph
[legend]

Public Member Functions

 AADereferenceable (const IRPosition &IRP)
 
bool isAssumedNonNull () const
 Return true if we assume that the underlying value is nonnull. More...
 
bool isAssumedGlobal () const
 Return true if we assume that underlying value is dereferenceable(_or_null) globally. More...
 
bool isKnownGlobal () const
 Return true if we know that underlying value is dereferenceable(_or_null) globally. More...
 
uint32_t getAssumedDereferenceableBytes () const
 Return assumed dereferenceable bytes. More...
 
uint32_t getKnownDereferenceableBytes () const
 Return known dereferenceable bytes. More...
 
- Public Member Functions inherited from llvm::IRAttribute< Attribute::Dereferenceable, StateWrapper< DerefState, AbstractAttribute > >
 IRAttribute (const IRPosition &IRP)
 
 ~IRAttribute ()
 
virtual void initialize (Attributor &A) override
 See AbstractAttribute::initialize(...). More...
 
ChangeStatus manifest (Attributor &A) override
 See AbstractAttribute::manifest(...). More...
 
Attribute::AttrKind getAttrKind () const
 Return the kind that identifies the abstract attribute implementation. More...
 
virtual void getDeducedAttributes (LLVMContext &Ctx, SmallVectorImpl< Attribute > &Attrs) const
 Return the deduced attributes in Attrs. More...
 
IRPositiongetIRPosition () override
 Return an IR position, see struct IRPosition. More...
 
const IRPositiongetIRPosition () const override
 
- Public Member Functions inherited from llvm::IRPosition
virtual ~IRPosition ()
 
 IRPosition ()
 Default constructor available to create invalid positions implicitly. More...
 
bool operator== (const IRPosition &RHS) const
 
bool operator!= (const IRPosition &RHS) const
 
ValuegetAnchorValue ()
 Return the value this abstract attribute is anchored with. More...
 
const ValuegetAnchorValue () const
 
FunctiongetAssociatedFunction ()
 } More...
 
const FunctiongetAssociatedFunction () const
 
ArgumentgetAssociatedArgument ()
 } More...
 
const ArgumentgetAssociatedArgument () const
 
bool isFnInterfaceKind () const
 } More...
 
FunctiongetAnchorScope ()
 Return the Function surrounding the anchor value. More...
 
const FunctiongetAnchorScope () const
 
InstructiongetCtxI ()
 } More...
 
const InstructiongetCtxI () const
 
ValuegetAssociatedValue ()
 } More...
 
const ValuegetAssociatedValue () 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) 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...
 
bool isAnyCallSitePosition () const
 
- Public Member Functions inherited from llvm::StateWrapper< DerefState, AbstractAttribute >
StateTypegetState () override
 See AbstractAttribute::getState(...). More...
 
const AbstractStategetState () const override
 See AbstractAttribute::getState(...). More...
 
- Public Member Functions inherited from llvm::DerefState
bool isValidState () const override
 See AbstractState::isValidState() More...
 
bool isAtFixpoint () const override
 See AbstractState::isAtFixpoint() More...
 
ChangeStatus indicateOptimisticFixpoint () override
 See AbstractState::indicateOptimisticFixpoint(...) More...
 
ChangeStatus indicatePessimisticFixpoint () override
 See AbstractState::indicatePessimisticFixpoint(...) More...
 
void takeKnownDerefBytesMaximum (uint64_t Bytes)
 Update known dereferenceable bytes. More...
 
void takeAssumedDerefBytesMinimum (uint64_t Bytes)
 Update assumed dereferenceable bytes. More...
 
bool operator== (const DerefState &R)
 Equality for DerefState. More...
 
bool operator!= (const DerefState &R)
 Inequality for IntegerState. More...
 
DerefState operator^= (const DerefState &R)
 See IntegerState::operator^=. More...
 
DerefState operator+= (const DerefState &R)
 See IntegerState::operator+=. More...
 
DerefState operator &= (const DerefState &R)
 See IntegerState::operator&=. More...
 
DerefState operator|= (const DerefState &R)
 See IntegerState::operator|=. More...
 
- Public Member Functions inherited from llvm::AbstractState
virtual ~AbstractState ()
 
- Public Member Functions inherited from llvm::AbstractAttribute
virtual ~AbstractAttribute ()
 Virtual destructor. 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...
 

Static Public Member Functions

static AADereferenceablecreateForPosition (const IRPosition &IRP, Attributor &A)
 Create an abstract attribute view for the position IRP. More...
 
- Static Public Member Functions inherited from llvm::IRPosition
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 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 Public Attributes inherited from llvm::IRPosition
static const IRPosition EmptyKey
 Special DenseMap key values. More...
 
static const IRPosition TombstoneKey
 

Additional Inherited Members

- Public Types inherited from llvm::IRPosition
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...
 
- Public Types inherited from llvm::StateWrapper< DerefState, AbstractAttribute >
using StateType = DerefState
 Provide static access to the type of the state. More...
 
- Public Types inherited from llvm::AbstractAttribute
using StateType = AbstractState
 
- Public Attributes inherited from llvm::DerefState
IntegerState DerefBytesState
 State representing for dereferenceable bytes. More...
 
BooleanState GlobalState
 State representing that whether the value is globaly dereferenceable. More...
 
- Protected Member Functions inherited from llvm::AbstractAttribute
ChangeStatus update (Attributor &A)
 Hook for the Attributor to trigger an update of the internal state. 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...
 
- Protected Attributes inherited from llvm::DerefState
const AANonNullNonNullAA = nullptr
 

Detailed Description

An abstract interface for all dereferenceable attribute.

Definition at line 1640 of file Attributor.h.

Constructor & Destructor Documentation

◆ AADereferenceable()

llvm::AADereferenceable::AADereferenceable ( const IRPosition IRP)
inline

Definition at line 1643 of file Attributor.h.

Member Function Documentation

◆ createForPosition()

static AADereferenceable& llvm::AADereferenceable::createForPosition ( const IRPosition IRP,
Attributor A 
)
static

Create an abstract attribute view for the position IRP.

◆ getAssumedDereferenceableBytes()

uint32_t llvm::AADereferenceable::getAssumedDereferenceableBytes ( ) const
inline

Return assumed dereferenceable bytes.

Definition at line 1659 of file Attributor.h.

Referenced by llvm::IRPosition::getAttrs().

◆ getKnownDereferenceableBytes()

uint32_t llvm::AADereferenceable::getKnownDereferenceableBytes ( ) const
inline

Return known dereferenceable bytes.

Definition at line 1664 of file Attributor.h.

◆ isAssumedGlobal()

bool llvm::AADereferenceable::isAssumedGlobal ( ) const
inline

Return true if we assume that underlying value is dereferenceable(_or_null) globally.

Definition at line 1652 of file Attributor.h.

◆ isAssumedNonNull()

bool llvm::AADereferenceable::isAssumedNonNull ( ) const
inline

Return true if we assume that the underlying value is nonnull.

Definition at line 1646 of file Attributor.h.

◆ isKnownGlobal()

bool llvm::AADereferenceable::isKnownGlobal ( ) const
inline

Return true if we know that underlying value is dereferenceable(_or_null) globally.

Definition at line 1656 of file Attributor.h.

Member Data Documentation

◆ ID

const char AADereferenceable::ID = 0
static

Unique ID (due to the unique address)

Definition at line 1673 of file Attributor.h.

Referenced by llvm::createAttributorLegacyPass().


The documentation for this struct was generated from the following files: