LLVM  10.0.0svn
Public Member Functions | List of all members
AAReturnedValuesImpl Class Reference

---------------—— Function Return Values -------------------------—— More...

Inheritance diagram for AAReturnedValuesImpl:
Inheritance graph
[legend]
Collaboration diagram for AAReturnedValuesImpl:
Collaboration graph
[legend]

Public Member Functions

 AAReturnedValuesImpl (const IRPosition &IRP)
 } More...
 
void initialize (Attributor &A) override
 See AbstractAttribute::initialize(...). More...
 
ChangeStatus manifest (Attributor &A) override
 See AbstractAttribute::manifest(...). More...
 
AbstractStategetState () override
 See AbstractAttribute::getState(...). More...
 
const AbstractStategetState () const override
 See AbstractAttribute::getState(...). More...
 
ChangeStatus updateImpl (Attributor &A) override
 See AbstractAttribute::updateImpl(Attributor &A). More...
 
llvm::iterator_range< iteratorreturned_values () override
 
llvm::iterator_range< const_iteratorreturned_values () const override
 
const SmallSetVector< CallBase *, 4 > & getUnresolvedCalls () const override
 
size_t getNumReturnValues () const override
 Return the number of potential return values, -1 if unknown. More...
 
Optional< Value * > getAssumedUniqueReturnValue (Attributor &A) const
 Return an assumed unique return value if a single candidate is found. More...
 
bool checkForAllReturnedValuesAndReturnInsts (const function_ref< bool(Value &, const SmallSetVector< ReturnInst *, 4 > &)> &Pred) const override
 See AbstractState::checkForAllReturnedValues(...). More...
 
const std::string getAsStr () const override
 Pretty print the attribute similar to the IR representation. More...
 
bool isAtFixpoint () const override
 See AbstractState::isAtFixpoint(). More...
 
bool isValidState () const override
 See AbstractState::isValidState(). More...
 
ChangeStatus indicateOptimisticFixpoint () override
 See AbstractState::indicateOptimisticFixpoint(...). More...
 
ChangeStatus indicatePessimisticFixpoint () override
 Indicate that the abstract state should converge to the pessimistic state. More...
 
- Public Member Functions inherited from llvm::AAReturnedValues
 AAReturnedValues (const IRPosition &IRP)
 
Optional< Value * > getAssumedUniqueReturnValue (Attributor &A) const
 Return an assumed unique return value if a single candidate is found. More...
 
- Public Member Functions inherited from llvm::IRAttribute< Attribute::Returned, AbstractAttribute >
 IRAttribute (const IRPosition &IRP)
 
 ~IRAttribute ()
 
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::AbstractAttribute
virtual ~AbstractAttribute ()
 Virtual destructor. More...
 
virtual void print (raw_ostream &OS) const
 Helper functions, for debug purposes only. More...
 
void dump () const
 
- Public Member Functions inherited from llvm::AbstractState
virtual ~AbstractState ()
 

Additional Inherited Members

- Public Types inherited from llvm::AAReturnedValues
using iterator = MapVector< Value *, SmallSetVector< ReturnInst *, 4 > >::iterator
 
using const_iterator = MapVector< Value *, SmallSetVector< ReturnInst *, 4 > >::const_iterator
 
- 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::AbstractAttribute
using StateType = AbstractState
 
- Static Public Member Functions inherited from llvm::AAReturnedValues
static AAReturnedValuescreateForPosition (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 inherited from llvm::AAReturnedValues
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
 
- 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...
 

Detailed Description

---------------—— Function Return Values -------------------------——

"Attribute" that collects all potential returned values and the return instructions that they arise from.

If there is a unique returned value R, the manifest method will:

Definition at line 732 of file Attributor.cpp.

Constructor & Destructor Documentation

◆ AAReturnedValuesImpl()

AAReturnedValuesImpl::AAReturnedValuesImpl ( const IRPosition IRP)
inline

}

Definition at line 753 of file Attributor.cpp.

Member Function Documentation

◆ checkForAllReturnedValuesAndReturnInsts()

bool AAReturnedValuesImpl::checkForAllReturnedValuesAndReturnInsts ( const function_ref< bool(Value &, const SmallSetVector< ReturnInst *, 4 > &)> &  Pred) const
overridevirtual

See AbstractState::checkForAllReturnedValues(...).

Implements llvm::AAReturnedValues.

Definition at line 942 of file Attributor.cpp.

References llvm::dyn_cast().

◆ getAsStr()

const std::string AAReturnedValuesImpl::getAsStr ( ) const
overridevirtual

Pretty print the attribute similar to the IR representation.

Implements llvm::AbstractAttribute.

Definition at line 904 of file Attributor.cpp.

References llvm::to_string().

◆ getAssumedUniqueReturnValue()

Optional< Value * > AAReturnedValuesImpl::getAssumedUniqueReturnValue ( Attributor A) const

Return an assumed unique return value if a single candidate is found.

If there cannot be one, return a nullptr. If it is not clear yet, return the Optional::NoneType.

Definition at line 911 of file Attributor.cpp.

References llvm::Attributor::checkForAllReturnedValues(), llvm::Optional< T >::getValue(), and llvm::Optional< T >::hasValue().

◆ getNumReturnValues()

size_t AAReturnedValuesImpl::getNumReturnValues ( ) const
inlineoverridevirtual

Return the number of potential return values, -1 if unknown.

Implements llvm::AAReturnedValues.

Definition at line 812 of file Attributor.cpp.

References llvm::AbstractAttribute::getAsStr(), and llvm::MapVector< KeyT, ValueT, MapType, VectorType >::size().

◆ getState() [1/2]

AbstractState& AAReturnedValuesImpl::getState ( )
inlineoverridevirtual

See AbstractAttribute::getState(...).

Implements llvm::AbstractAttribute.

Definition at line 791 of file Attributor.cpp.

◆ getState() [2/2]

const AbstractState& AAReturnedValuesImpl::getState ( ) const
inlineoverridevirtual

See AbstractAttribute::getState(...).

Implements llvm::AbstractAttribute.

Definition at line 794 of file Attributor.cpp.

References llvm::AbstractAttribute::updateImpl().

◆ getUnresolvedCalls()

const SmallSetVector<CallBase *, 4>& AAReturnedValuesImpl::getUnresolvedCalls ( ) const
inlineoverridevirtual

Implements llvm::AAReturnedValues.

Definition at line 807 of file Attributor.cpp.

◆ indicateOptimisticFixpoint()

ChangeStatus AAReturnedValuesImpl::indicateOptimisticFixpoint ( )
inlineoverridevirtual

See AbstractState::indicateOptimisticFixpoint(...).

Implements llvm::AbstractState.

Definition at line 836 of file Attributor.cpp.

References llvm::UNCHANGED.

◆ indicatePessimisticFixpoint()

ChangeStatus AAReturnedValuesImpl::indicatePessimisticFixpoint ( )
inlineoverridevirtual

Indicate that the abstract state should converge to the pessimistic state.

This will usually revert the optimistically assumed state to the known to be true state.

Returns
ChangeStatus::CHANGED as the assumed value may change.

Implements llvm::AbstractState.

Definition at line 841 of file Attributor.cpp.

References llvm::CHANGED.

◆ initialize()

void AAReturnedValuesImpl::initialize ( Attributor A)
inlineoverridevirtual

◆ isAtFixpoint()

bool AAReturnedValuesImpl::isAtFixpoint ( ) const
inlineoverridevirtual

See AbstractState::isAtFixpoint().

Implements llvm::AbstractState.

Definition at line 830 of file Attributor.cpp.

◆ isValidState()

bool AAReturnedValuesImpl::isValidState ( ) const
inlineoverridevirtual

See AbstractState::isValidState().

Implements llvm::AbstractState.

Definition at line 833 of file Attributor.cpp.

◆ manifest()

ChangeStatus AAReturnedValuesImpl::manifest ( Attributor A)
overridevirtual

◆ returned_values() [1/2]

llvm::iterator_range<iterator> AAReturnedValuesImpl::returned_values ( )
inlineoverridevirtual

◆ returned_values() [2/2]

llvm::iterator_range<const_iterator> AAReturnedValuesImpl::returned_values ( ) const
inlineoverridevirtual

◆ updateImpl()

ChangeStatus AAReturnedValuesImpl::updateImpl ( Attributor A)
overridevirtual

The documentation for this class was generated from the following file: