LLVM 22.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 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 361 of file Attributes.h.

Member Typedef Documentation

◆ iterator

Definition at line 469 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 929 of file Attributes.cpp.

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

◆ 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 937 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 944 of file Attributes.cpp.

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

Referenced by addAttribute(), and addAttribute().

◆ 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 957 of file Attributes.cpp.

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

◆ begin()

AttributeSet::iterator AttributeSet::begin ( ) const

Definition at line 1234 of file Attributes.cpp.

Referenced by intersectWith().

◆ dump()

LLVM_DUMP_METHOD void AttributeSet::dump ( ) const

Definition at line 1243 of file Attributes.cpp.

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

◆ end()

AttributeSet::iterator AttributeSet::end ( ) const

Definition at line 1238 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 1147 of file Attributes.cpp.

◆ getAllocKind()

AllocFnKind AttributeSet::getAllocKind ( ) const

Definition at line 1206 of file Attributes.cpp.

References llvm::Unknown.

◆ getAllocSizeArgs()

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

Definition at line 1188 of file Attributes.cpp.

◆ getAsString()

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

Definition at line 1222 of file Attributes.cpp.

Referenced by dump().

◆ getAttribute() [1/2]

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

Return the attribute object.

Definition at line 1139 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 1143 of file Attributes.cpp.

References llvm::Attribute.

◆ getByRefType()

Type * AttributeSet::getByRefType ( ) const

Definition at line 1163 of file Attributes.cpp.

◆ getByValType()

Type * AttributeSet::getByValType ( ) const

Definition at line 1167 of file Attributes.cpp.

◆ getCaptureInfo()

◆ getDereferenceableBytes()

uint64_t AttributeSet::getDereferenceableBytes ( ) const

Definition at line 1155 of file Attributes.cpp.

◆ getDereferenceableOrNullBytes()

uint64_t AttributeSet::getDereferenceableOrNullBytes ( ) const

Definition at line 1159 of file Attributes.cpp.

◆ getElementType()

Type * AttributeSet::getElementType ( ) const

Definition at line 1183 of file Attributes.cpp.

◆ getInAllocaType()

Type * AttributeSet::getInAllocaType ( ) const

Definition at line 1179 of file Attributes.cpp.

◆ getMemoryEffects()

MemoryEffects AttributeSet::getMemoryEffects ( ) const

◆ getNoFPClass()

FPClassTest AttributeSet::getNoFPClass ( ) const

Definition at line 1218 of file Attributes.cpp.

References llvm::fcNone.

◆ getNumAttributes()

unsigned AttributeSet::getNumAttributes ( ) const

Return the number of attributes in this set.

Definition at line 1127 of file Attributes.cpp.

◆ getPreallocatedType()

Type * AttributeSet::getPreallocatedType ( ) const

Definition at line 1175 of file Attributes.cpp.

◆ getStackAlignment()

MaybeAlign AttributeSet::getStackAlignment ( ) const

Definition at line 1151 of file Attributes.cpp.

◆ getStructRetType()

Type * AttributeSet::getStructRetType ( ) const

Definition at line 1171 of file Attributes.cpp.

◆ getUWTableKind()

UWTableKind AttributeSet::getUWTableKind ( ) const

Definition at line 1202 of file Attributes.cpp.

References llvm::None.

◆ getVScaleRangeMax()

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

Definition at line 1198 of file Attributes.cpp.

◆ getVScaleRangeMin()

unsigned AttributeSet::getVScaleRangeMin ( ) const

Definition at line 1194 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 1131 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 1135 of file Attributes.cpp.

◆ hasAttributes()

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

Return true if attributes exists in this set.

Definition at line 431 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 1226 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 385 of file Attributes.h.

◆ operator==()

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

Definition at line 384 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 970 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 978 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 986 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 363 of file Attributes.h.

References DenseMapInfo.

Referenced by DenseMapInfo.


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