LLVM 23.0.0git
llvm::AttributeSet Class Reference

This class holds the attributes for a particular argument, parameter, function, or return value. More...

#include "llvm/IR/Attributes.h"

Public Types

using iterator = const Attribute *

Public Member Functions

 AttributeSet ()=default
 AttributeSet is a trivially copyable value type.
 AttributeSet (const AttributeSet &)=default
 ~AttributeSet ()=default
bool operator== (const AttributeSet &O) const
bool operator!= (const AttributeSet &O) const
LLVM_ABI AttributeSet addAttribute (LLVMContext &C, Attribute::AttrKind Kind) const
 Add an argument attribute.
LLVM_ABI AttributeSet addAttribute (LLVMContext &C, StringRef Kind, StringRef Value=StringRef()) const
 Add a target-dependent attribute.
LLVM_ABI AttributeSet addAttributes (LLVMContext &C, AttributeSet AS) const
 Add attributes to the attribute set.
AttributeSet addAttributes (LLVMContext &C, const AttrBuilder &B) const
 Add attributes to the attribute set.
LLVM_ABI AttributeSet removeAttribute (LLVMContext &C, Attribute::AttrKind Kind) const
 Remove the specified attribute from this set.
LLVM_ABI AttributeSet removeAttribute (LLVMContext &C, StringRef Kind) const
 Remove the specified attribute from this set.
LLVM_ABI AttributeSet removeAttributes (LLVMContext &C, const AttributeMask &AttrsToRemove) const
 Remove the specified attributes from this set.
LLVM_ABI std::optional< AttributeSetintersectWith (LLVMContext &C, AttributeSet Other) const
 Try to intersect this AttributeSet with Other.
LLVM_ABI unsigned getNumAttributes () const
 Return the number of attributes in this set.
bool hasAttributes () const
 Return true if attributes exists in this set.
LLVM_ABI bool hasAttribute (Attribute::AttrKind Kind) const
 Return true if the attribute exists in this set.
LLVM_ABI bool hasAttribute (StringRef Kind) const
 Return true if the attribute exists in this set.
LLVM_ABI Attribute getAttribute (Attribute::AttrKind Kind) const
 Return the attribute object.
LLVM_ABI Attribute getAttribute (StringRef Kind) const
 Return the target-dependent attribute object.
LLVM_ABI MaybeAlign getAlignment () const
LLVM_ABI MaybeAlign getStackAlignment () const
LLVM_ABI uint64_t getDereferenceableBytes () const
LLVM_ABI DeadOnReturnInfo getDeadOnReturnInfo () const
LLVM_ABI uint64_t getDereferenceableOrNullBytes () const
LLVM_ABI TypegetByValType () const
LLVM_ABI TypegetStructRetType () const
LLVM_ABI TypegetByRefType () const
LLVM_ABI TypegetPreallocatedType () const
LLVM_ABI TypegetInAllocaType () const
LLVM_ABI TypegetElementType () const
LLVM_ABI std::optional< std::pair< unsigned, std::optional< unsigned > > > getAllocSizeArgs () const
LLVM_ABI unsigned getVScaleRangeMin () const
LLVM_ABI std::optional< unsignedgetVScaleRangeMax () const
LLVM_ABI UWTableKind getUWTableKind () const
LLVM_ABI AllocFnKind getAllocKind () const
LLVM_ABI MemoryEffects getMemoryEffects () const
LLVM_ABI CaptureInfo getCaptureInfo () const
LLVM_ABI FPClassTest getNoFPClass () const
LLVM_ABI std::string getAsString (bool InAttrGrp=false) const
LLVM_ABI bool hasParentContext (LLVMContext &C) const
 Return true if this attribute set belongs to the LLVMContext.
LLVM_ABI iterator begin () const
LLVM_ABI iterator end () const
void dump () const

Static Public Member Functions

static LLVM_ABI AttributeSet get (LLVMContext &C, const AttrBuilder &B)
static LLVM_ABI AttributeSet get (LLVMContext &C, ArrayRef< Attribute > Attrs)

Friends

template<typename Ty, typename Enable>
struct DenseMapInfo

Detailed Description

This class holds the attributes for a particular argument, parameter, function, or return value.

It is an immutable value type that is cheap to copy. Adding and removing enum attributes is intended to be fast, but adding and removing string or integer attributes involves a FoldingSet lookup.

Definition at line 402 of file Attributes.h.

Member Typedef Documentation

◆ iterator

Definition at line 511 of file Attributes.h.

Constructor & Destructor Documentation

◆ AttributeSet() [1/2]

llvm::AttributeSet::AttributeSet ( )
default

AttributeSet is a trivially copyable value type.

Referenced by get(), and get().

◆ AttributeSet() [2/2]

llvm::AttributeSet::AttributeSet ( const AttributeSet & )
default

◆ ~AttributeSet()

llvm::AttributeSet::~AttributeSet ( )
default

References B(), llvm::CallingConv::C, and LLVM_ABI.

Member Function Documentation

◆ addAttribute() [1/2]

AttributeSet AttributeSet::addAttribute ( LLVMContext & C,
Attribute::AttrKind Kind ) const
nodiscard

Add an argument attribute.

Returns a new set because attribute sets are immutable.

Definition at line 948 of file Attributes.cpp.

References addAttributes(), B(), llvm::CallingConv::C, get(), and hasAttribute().

Referenced by llvm::OpenMPIRBuilder::addAttributes().

◆ addAttribute() [2/2]

AttributeSet AttributeSet::addAttribute ( LLVMContext & C,
StringRef Kind,
StringRef Value = StringRef() ) const
nodiscard

Add a target-dependent attribute.

Returns a new set because attribute sets are immutable.

Definition at line 956 of file Attributes.cpp.

References addAttributes(), B(), llvm::CallingConv::C, and get().

◆ addAttributes() [1/2]

AttributeSet AttributeSet::addAttributes ( LLVMContext & C,
AttributeSet AS ) const
nodiscard

Add attributes to the attribute set.

Returns a new set because attribute sets are immutable.

Definition at line 963 of file Attributes.cpp.

References B(), llvm::CallingConv::C, get(), and hasAttributes().

Referenced by addAttribute(), addAttribute(), and llvm::OpenMPIRBuilder::addAttributes().

◆ addAttributes() [2/2]

AttributeSet AttributeSet::addAttributes ( LLVMContext & C,
const AttrBuilder & B ) const

Add attributes to the attribute set.

Returns a new set because attribute sets are immutable.

Definition at line 976 of file Attributes.cpp.

References B(), llvm::CallingConv::C, get(), and hasAttributes().

◆ begin()

AttributeSet::iterator AttributeSet::begin ( ) const

Definition at line 1257 of file Attributes.cpp.

Referenced by intersectWith().

◆ dump()

LLVM_DUMP_METHOD void AttributeSet::dump ( ) const

Definition at line 1266 of file Attributes.cpp.

References llvm::dbgs(), getAsString(), and LLVM_DUMP_METHOD.

◆ end()

AttributeSet::iterator AttributeSet::end ( ) const

Definition at line 1261 of file Attributes.cpp.

Referenced by intersectWith().

◆ get() [1/2]

AttributeSet AttributeSet::get ( LLVMContext & C,
ArrayRef< Attribute > Attrs )
static

◆ get() [2/2]

◆ getAlignment()

MaybeAlign AttributeSet::getAlignment ( ) const

Definition at line 1166 of file Attributes.cpp.

◆ getAllocKind()

AllocFnKind AttributeSet::getAllocKind ( ) const

Definition at line 1229 of file Attributes.cpp.

References llvm::Unknown.

◆ getAllocSizeArgs()

std::optional< std::pair< unsigned, std::optional< unsigned > > > AttributeSet::getAllocSizeArgs ( ) const

Definition at line 1211 of file Attributes.cpp.

◆ getAsString()

std::string AttributeSet::getAsString ( bool InAttrGrp = false) const

Definition at line 1245 of file Attributes.cpp.

Referenced by dump().

◆ getAttribute() [1/2]

Attribute AttributeSet::getAttribute ( Attribute::AttrKind Kind) const

Return the attribute object.

Definition at line 1158 of file Attributes.cpp.

References llvm::Attribute.

Referenced by addIfNotExistent(), intersectWith(), and llvm::typeIncompatible().

◆ getAttribute() [2/2]

Attribute AttributeSet::getAttribute ( StringRef Kind) const

Return the target-dependent attribute object.

Definition at line 1162 of file Attributes.cpp.

References llvm::Attribute.

◆ getByRefType()

Type * AttributeSet::getByRefType ( ) const

Definition at line 1186 of file Attributes.cpp.

◆ getByValType()

Type * AttributeSet::getByValType ( ) const

Definition at line 1190 of file Attributes.cpp.

◆ getCaptureInfo()

◆ getDeadOnReturnInfo()

DeadOnReturnInfo AttributeSet::getDeadOnReturnInfo ( ) const

Definition at line 1178 of file Attributes.cpp.

◆ getDereferenceableBytes()

uint64_t AttributeSet::getDereferenceableBytes ( ) const

Definition at line 1174 of file Attributes.cpp.

◆ getDereferenceableOrNullBytes()

uint64_t AttributeSet::getDereferenceableOrNullBytes ( ) const

Definition at line 1182 of file Attributes.cpp.

◆ getElementType()

Type * AttributeSet::getElementType ( ) const

Definition at line 1206 of file Attributes.cpp.

◆ getInAllocaType()

Type * AttributeSet::getInAllocaType ( ) const

Definition at line 1202 of file Attributes.cpp.

◆ getMemoryEffects()

MemoryEffects AttributeSet::getMemoryEffects ( ) const

◆ getNoFPClass()

FPClassTest AttributeSet::getNoFPClass ( ) const

Definition at line 1241 of file Attributes.cpp.

References llvm::fcNone.

◆ getNumAttributes()

unsigned AttributeSet::getNumAttributes ( ) const

Return the number of attributes in this set.

Definition at line 1146 of file Attributes.cpp.

◆ getPreallocatedType()

Type * AttributeSet::getPreallocatedType ( ) const

Definition at line 1198 of file Attributes.cpp.

◆ getStackAlignment()

MaybeAlign AttributeSet::getStackAlignment ( ) const

Definition at line 1170 of file Attributes.cpp.

◆ getStructRetType()

Type * AttributeSet::getStructRetType ( ) const

Definition at line 1194 of file Attributes.cpp.

◆ getUWTableKind()

UWTableKind AttributeSet::getUWTableKind ( ) const

Definition at line 1225 of file Attributes.cpp.

References llvm::None.

◆ getVScaleRangeMax()

std::optional< unsigned > AttributeSet::getVScaleRangeMax ( ) const

Definition at line 1221 of file Attributes.cpp.

◆ getVScaleRangeMin()

unsigned AttributeSet::getVScaleRangeMin ( ) const

Definition at line 1217 of file Attributes.cpp.

◆ hasAttribute() [1/2]

bool AttributeSet::hasAttribute ( Attribute::AttrKind Kind) const

Return true if the attribute exists in this set.

Definition at line 1150 of file Attributes.cpp.

Referenced by addAttribute(), addIfNotExistent(), llvm::GlobalVariable::hasImplicitSection(), maySpeculateLanes(), printFunctionArgExts(), removeAttribute(), and removeAttribute().

◆ hasAttribute() [2/2]

bool AttributeSet::hasAttribute ( StringRef Kind) const

Return true if the attribute exists in this set.

Definition at line 1154 of file Attributes.cpp.

◆ hasAttributes()

bool llvm::AttributeSet::hasAttributes ( ) const
inline

Return true if attributes exists in this set.

Definition at line 472 of file Attributes.h.

Referenced by addAttributes(), addAttributes(), and hasParentContext().

◆ hasParentContext()

bool AttributeSet::hasParentContext ( LLVMContext & C) const

Return true if this attribute set belongs to the LLVMContext.

Definition at line 1249 of file Attributes.cpp.

References assert(), llvm::CallingConv::C, and hasAttributes().

◆ intersectWith()

◆ operator!=()

bool llvm::AttributeSet::operator!= ( const AttributeSet & O) const
inline

Definition at line 426 of file Attributes.h.

◆ operator==()

bool llvm::AttributeSet::operator== ( const AttributeSet & O) const
inline

Definition at line 425 of file Attributes.h.

◆ removeAttribute() [1/2]

AttributeSet AttributeSet::removeAttribute ( LLVMContext & C,
Attribute::AttrKind Kind ) const
nodiscard

Remove the specified attribute from this set.

Returns a new set because attribute sets are immutable.

Definition at line 989 of file Attributes.cpp.

References B(), llvm::CallingConv::C, get(), and hasAttribute().

◆ removeAttribute() [2/2]

AttributeSet AttributeSet::removeAttribute ( LLVMContext & C,
StringRef Kind ) const
nodiscard

Remove the specified attribute from this set.

Returns a new set because attribute sets are immutable.

Definition at line 997 of file Attributes.cpp.

References B(), llvm::CallingConv::C, get(), and hasAttribute().

◆ removeAttributes()

AttributeSet AttributeSet::removeAttributes ( LLVMContext & C,
const AttributeMask & AttrsToRemove ) const
nodiscard

Remove the specified attributes from this set.

Returns a new set because attribute sets are immutable.

Definition at line 1005 of file Attributes.cpp.

References B(), llvm::CallingConv::C, and get().

Referenced by moveFunctionAdaptingType().

◆ DenseMapInfo

template<typename Ty, typename Enable>
friend struct DenseMapInfo
friend

Definition at line 404 of file Attributes.h.

References DenseMapInfo.

Referenced by DenseMapInfo.


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