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

An abstract interface for liveness abstract attribute. More...

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

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

Public Member Functions

 AAIsDead (const IRPosition &IRP)
 
virtual bool isAssumedDead (const BasicBlock *BB) const =0
 Returns true if BB is assumed dead. More...
 
virtual bool isKnownDead (const BasicBlock *BB) const =0
 Returns true if BB is known dead. More...
 
virtual bool isAssumedDead (const Instruction *I) const =0
 Returns true if I is assumed dead. More...
 
virtual bool isKnownDead (const Instruction *I) const =0
 Returns true if I is known dead. More...
 
template<typename T >
bool isLiveInstSet (T begin, T end) const
 This method is used to check if at least one instruction in a collection of instructions is live. More...
 
IRPositiongetIRPosition () override
 Return an IR position, see struct IRPosition. More...
 
const IRPositiongetIRPosition () const override
 Return an IR position, see struct IRPosition. More...
 
- Public Member Functions inherited from llvm::StateWrapper< BooleanState, AbstractAttribute >
StateTypegetState () override
 See AbstractAttribute::getState(...). More...
 
const AbstractStategetState () const override
 See AbstractAttribute::getState(...). More...
 
- Public Member Functions inherited from llvm::BooleanState
 BooleanState ()
 
- Public Member Functions inherited from llvm::IntegerState
 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...
 
IntegerStateaddKnownBits (base_t Bits)
 Add the bits in BitsEncoding to the "known bits". More...
 
IntegerStateremoveAssumedBits (base_t BitsEncoding)
 Remove the bits in BitsEncoding from the "assumed bits" if not known. More...
 
IntegerStateremoveKnownBits (base_t BitsEncoding)
 Remove the bits in BitsEncoding from the "known bits". More...
 
IntegerStateintersectAssumedBits (base_t BitsEncoding)
 Keep only "assumed bits" also set in BitsEncoding but all known ones. More...
 
IntegerStatetakeAssumedMinimum (base_t Value)
 Take minimum of assumed and Value. More...
 
IntegerStatetakeKnownMaximum (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...
 
- Public Member Functions inherited from llvm::AbstractState
virtual ~AbstractState ()
 
- Public Member Functions inherited from llvm::AbstractAttribute
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...
 
- 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, 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 AAIsDeadcreateForPosition (const IRPosition &IRP, Attributor &A)
 } More...
 
- Static Public Member Functions inherited from llvm::IntegerState
static constexpr base_t getWorstState ()
 Return the worst possible representable state. 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 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 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::StateWrapper< BooleanState, AbstractAttribute >
using StateType = BooleanState
 Provide static access to the type of the state. More...
 
- Public Types inherited from llvm::IntegerState
using base_t = uint32_t
 Underlying integer type, we assume 32 bits to be enough. More...
 
- Public Types inherited from llvm::AbstractAttribute
using StateType = AbstractState
 
- 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...
 
- 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 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...
 

Detailed Description

An abstract interface for liveness abstract attribute.

Definition at line 1611 of file Attributor.h.

Constructor & Destructor Documentation

◆ AAIsDead()

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

Definition at line 1613 of file Attributor.h.

References I.

Member Function Documentation

◆ createForPosition()

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

}

Create an abstract attribute view for the position IRP.

◆ getIRPosition() [1/2]

IRPosition& llvm::AAIsDead::getIRPosition ( )
inlineoverridevirtual

Return an IR position, see struct IRPosition.

{

Implements llvm::AbstractAttribute.

Definition at line 1644 of file Attributor.h.

◆ getIRPosition() [2/2]

const IRPosition& llvm::AAIsDead::getIRPosition ( ) const
inlineoverridevirtual

Return an IR position, see struct IRPosition.

Implements llvm::AbstractAttribute.

Definition at line 1645 of file Attributor.h.

◆ isAssumedDead() [1/2]

virtual bool llvm::AAIsDead::isAssumedDead ( const BasicBlock BB) const
pure virtual

◆ isAssumedDead() [2/2]

virtual bool llvm::AAIsDead::isAssumedDead ( const Instruction I) const
pure virtual

Returns true if I is assumed dead.

◆ isKnownDead() [1/2]

virtual bool llvm::AAIsDead::isKnownDead ( const BasicBlock BB) const
pure virtual

Returns true if BB is known dead.

◆ isKnownDead() [2/2]

virtual bool llvm::AAIsDead::isKnownDead ( const Instruction I) const
pure virtual

Returns true if I is known dead.

◆ isLiveInstSet()

template<typename T >
bool llvm::AAIsDead::isLiveInstSet ( T  begin,
T  end 
) const
inline

This method is used to check if at least one instruction in a collection of instructions is live.

Definition at line 1629 of file Attributor.h.

References assert(), llvm::Instruction::getFunction(), and llvm::make_range().

Member Data Documentation

◆ ID

const char AAIsDead::ID = 0
static

Unique ID (due to the unique address)

Definition at line 1652 of file Attributor.h.

Referenced by llvm::createAttributorLegacyPass().


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