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 935 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 943 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 950 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 963 of file Attributes.cpp.

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

◆ begin()

AttributeSet::iterator AttributeSet::begin ( ) const

Definition at line 1240 of file Attributes.cpp.

Referenced by intersectWith().

◆ dump()

LLVM_DUMP_METHOD void AttributeSet::dump ( ) const

Definition at line 1249 of file Attributes.cpp.

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

◆ end()

AttributeSet::iterator AttributeSet::end ( ) const

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

◆ getAllocKind()

AllocFnKind AttributeSet::getAllocKind ( ) const

Definition at line 1212 of file Attributes.cpp.

References llvm::Unknown.

◆ getAllocSizeArgs()

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

Definition at line 1194 of file Attributes.cpp.

◆ getAsString()

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

Definition at line 1228 of file Attributes.cpp.

Referenced by dump().

◆ getAttribute() [1/2]

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

Return the attribute object.

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

References llvm::Attribute.

◆ getByRefType()

Type * AttributeSet::getByRefType ( ) const

Definition at line 1169 of file Attributes.cpp.

◆ getByValType()

Type * AttributeSet::getByValType ( ) const

Definition at line 1173 of file Attributes.cpp.

◆ getCaptureInfo()

◆ getDereferenceableBytes()

uint64_t AttributeSet::getDereferenceableBytes ( ) const

Definition at line 1161 of file Attributes.cpp.

◆ getDereferenceableOrNullBytes()

uint64_t AttributeSet::getDereferenceableOrNullBytes ( ) const

Definition at line 1165 of file Attributes.cpp.

◆ getElementType()

Type * AttributeSet::getElementType ( ) const

Definition at line 1189 of file Attributes.cpp.

◆ getInAllocaType()

Type * AttributeSet::getInAllocaType ( ) const

Definition at line 1185 of file Attributes.cpp.

◆ getMemoryEffects()

MemoryEffects AttributeSet::getMemoryEffects ( ) const

◆ getNoFPClass()

FPClassTest AttributeSet::getNoFPClass ( ) const

Definition at line 1224 of file Attributes.cpp.

References llvm::fcNone.

◆ getNumAttributes()

unsigned AttributeSet::getNumAttributes ( ) const

Return the number of attributes in this set.

Definition at line 1133 of file Attributes.cpp.

◆ getPreallocatedType()

Type * AttributeSet::getPreallocatedType ( ) const

Definition at line 1181 of file Attributes.cpp.

◆ getStackAlignment()

MaybeAlign AttributeSet::getStackAlignment ( ) const

Definition at line 1157 of file Attributes.cpp.

◆ getStructRetType()

Type * AttributeSet::getStructRetType ( ) const

Definition at line 1177 of file Attributes.cpp.

◆ getUWTableKind()

UWTableKind AttributeSet::getUWTableKind ( ) const

Definition at line 1208 of file Attributes.cpp.

References llvm::None.

◆ getVScaleRangeMax()

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

Definition at line 1204 of file Attributes.cpp.

◆ getVScaleRangeMin()

unsigned AttributeSet::getVScaleRangeMin ( ) const

Definition at line 1200 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 1137 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 1141 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 1232 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 976 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 984 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 992 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: