LLVM  6.0.0svn
Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::Attribute Class Reference

#include "llvm/IR/Attributes.h"

Public Types

enum  AttrKind { None, EndAttrKinds }
 This enumeration lists the attributes that can be associated with parameters, function results, or the function itself. More...
 

Public Member Functions

 Attribute ()=default
 
bool isEnumAttribute () const
 Return true if the attribute is an Attribute::AttrKind type. More...
 
bool isIntAttribute () const
 Return true if the attribute is an integer attribute. More...
 
bool isStringAttribute () const
 Return true if the attribute is a string (target-dependent) attribute. More...
 
bool hasAttribute (AttrKind Val) const
 Return true if the attribute is present. More...
 
bool hasAttribute (StringRef Val) const
 Return true if the target-dependent attribute is present. More...
 
Attribute::AttrKind getKindAsEnum () const
 Return the attribute's kind as an enum (Attribute::AttrKind). More...
 
uint64_t getValueAsInt () const
 Return the attribute's value as an integer. More...
 
StringRef getKindAsString () const
 Return the attribute's kind as a string. More...
 
StringRef getValueAsString () const
 Return the attribute's value as a string. More...
 
unsigned getAlignment () const
 Returns the alignment field of an attribute as a byte alignment value. More...
 
unsigned getStackAlignment () const
 Returns the stack alignment field of an attribute as a byte alignment value. More...
 
uint64_t getDereferenceableBytes () const
 Returns the number of dereferenceable bytes from the dereferenceable attribute. More...
 
uint64_t getDereferenceableOrNullBytes () const
 Returns the number of dereferenceable_or_null bytes from the dereferenceable_or_null attribute. More...
 
std::pair< unsigned, Optional< unsigned > > getAllocSizeArgs () const
 Returns the argument numbers for the allocsize attribute (or pair(0, 0) if not known). More...
 
std::string getAsString (bool InAttrGrp=false) const
 The Attribute is converted to a string of equivalent mnemonic. More...
 
bool operator== (Attribute A) const
 Equality and non-equality operators. More...
 
bool operator!= (Attribute A) const
 
bool operator< (Attribute A) const
 Less-than operator. Useful for sorting the attributes list. More...
 
void Profile (FoldingSetNodeID &ID) const
 
void * getRawPointer () const
 Return a raw pointer that uniquely identifies this attribute. More...
 

Static Public Member Functions

static Attribute get (LLVMContext &Context, AttrKind Kind, uint64_t Val=0)
 Return a uniquified Attribute object. More...
 
static Attribute get (LLVMContext &Context, StringRef Kind, StringRef Val=StringRef())
 
static Attribute getWithAlignment (LLVMContext &Context, uint64_t Align)
 Return a uniquified Attribute object that has the specific alignment set. More...
 
static Attribute getWithStackAlignment (LLVMContext &Context, uint64_t Align)
 
static Attribute getWithDereferenceableBytes (LLVMContext &Context, uint64_t Bytes)
 
static Attribute getWithDereferenceableOrNullBytes (LLVMContext &Context, uint64_t Bytes)
 
static Attribute getWithAllocSizeArgs (LLVMContext &Context, unsigned ElemSizeArg, const Optional< unsigned > &NumElemsArg)
 
static Attribute fromRawPointer (void *RawPtr)
 Get an attribute from a raw pointer created by getRawPointer. More...
 

Detailed Description

Definition at line 51 of file Attributes.h.

Member Enumeration Documentation

◆ AttrKind

This enumeration lists the attributes that can be associated with parameters, function results, or the function itself.

Note: The `uwtable' attribute is about the ABI or the user mandating an entry in the unwind table. The `nounwind' attribute is about an exception passing by the function.

In a theoretical system that uses tables for profiling and SjLj for exceptions, they would be fully independent. In a normal system that uses tables for both, the semantics are:

nil = Needs an entry because an exception might pass by. nounwind = No need for an entry uwtable = Needs an entry because the ABI says so and because an exception might pass by. uwtable + nounwind = Needs an entry because the ABI says so.

Enumerator
None 

No attributes have been set.

EndAttrKinds 

Sentinal value useful for loops.

Definition at line 70 of file Attributes.h.

Constructor & Destructor Documentation

◆ Attribute()

llvm::Attribute::Attribute ( )
default

Member Function Documentation

◆ fromRawPointer()

static Attribute llvm::Attribute::fromRawPointer ( void *  RawPtr)
inlinestatic

Get an attribute from a raw pointer created by getRawPointer.

Definition at line 184 of file Attributes.h.

References Attribute().

Referenced by llvm::unwrap().

◆ get() [1/2]

Attribute Attribute::get ( LLVMContext Context,
Attribute::AttrKind  Kind,
uint64_t  Val = 0 
)
static

◆ get() [2/2]

Attribute Attribute::get ( LLVMContext Context,
StringRef  Kind,
StringRef  Val = StringRef() 
)
static

◆ getAlignment()

unsigned Attribute::getAlignment ( ) const

Returns the alignment field of an attribute as a byte alignment value.

Definition at line 211 of file Attributes.cpp.

References assert(), llvm::AttributeImpl::getValueAsInt(), and hasAttribute().

Referenced by llvm::AttrBuilder::addAttribute(), llvm::AttributeSetNode::getAlignment(), and llvm::AttributeSet::hasAttributes().

◆ getAllocSizeArgs()

std::pair< unsigned, Optional< unsigned > > Attribute::getAllocSizeArgs ( ) const

◆ getAsString()

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

◆ getDereferenceableBytes()

uint64_t Attribute::getDereferenceableBytes ( ) const

◆ getDereferenceableOrNullBytes()

uint64_t Attribute::getDereferenceableOrNullBytes ( ) const

◆ getKindAsEnum()

Attribute::AttrKind Attribute::getKindAsEnum ( ) const

Return the attribute's kind as an enum (Attribute::AttrKind).

This requires the attribute to be an enum or integer attribute.

Definition at line 174 of file Attributes.cpp.

References assert(), llvm::AttributeImpl::getKindAsEnum(), isEnumAttribute(), isIntAttribute(), and None.

Referenced by llvm::AttrBuilder::addAttribute(), llvm::AttributeSet::dump(), llvm::AttributeImpl::hasAttribute(), LLVMGetEnumAttributeKind(), and llvm::AttributeImpl::operator<().

◆ getKindAsString()

StringRef Attribute::getKindAsString ( ) const

Return the attribute's kind as a string.

This requires the attribute to be a string attribute.

Definition at line 188 of file Attributes.cpp.

References assert(), llvm::AttributeImpl::getKindAsString(), and isStringAttribute().

Referenced by llvm::AttrBuilder::addAttribute(), getAsString(), llvm::AttributeImpl::hasAttribute(), LLVMGetStringAttributeKind(), and llvm::AttributeImpl::operator<().

◆ getRawPointer()

void* llvm::Attribute::getRawPointer ( ) const
inline

Return a raw pointer that uniquely identifies this attribute.

Definition at line 179 of file Attributes.h.

Referenced by llvm::wrap().

◆ getStackAlignment()

unsigned Attribute::getStackAlignment ( ) const

Returns the stack alignment field of an attribute as a byte alignment value.

Definition at line 217 of file Attributes.cpp.

References assert(), llvm::AttributeImpl::getValueAsInt(), and hasAttribute().

Referenced by llvm::AttrBuilder::addAttribute(), llvm::AttributeList::getParamAttr(), llvm::AttributeSetNode::getStackAlignment(), and llvm::AttributeSet::hasAttributes().

◆ getValueAsInt()

uint64_t Attribute::getValueAsInt ( ) const

Return the attribute's value as an integer.

This requires that the attribute be an integer attribute.

Definition at line 181 of file Attributes.cpp.

References assert(), llvm::AttributeImpl::getValueAsInt(), and isIntAttribute().

Referenced by llvm::AttrBuilder::addAttribute(), getAsString(), and llvm::AttributeImpl::operator<().

◆ getValueAsString()

StringRef Attribute::getValueAsString ( ) const

Return the attribute's value as a string.

This requires the attribute to be a string attribute.

Definition at line 195 of file Attributes.cpp.

References assert(), llvm::AttributeImpl::getValueAsString(), and isStringAttribute().

Referenced by llvm::AttrBuilder::addAttribute(), adjustCallerStackProbeSize(), llvm::NVPTXTargetLowering::allowUnsafeFPMath(), llvm::TargetLoweringBase::areJTsAllowed(), checkFunctionsAttributeConsistency(), createDevirtTriggerFunc(), doesNotGeneratecode(), eliminateTailRecursion(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::ARMBaseRegisterInfo::getCalleeSavedRegs(), getDeoptLowering(), llvm::TargetLoweringObjectFileELF::getExplicitSectionGlobal(), llvm::AMDGPUTargetMachine::getFeatureString(), llvm::AMDGPUTargetMachine::getGPUName(), llvm::AMDGPU::getIntegerAttribute(), llvm::AMDGPU::getIntegerPairAttribute(), getRecipEstimateForFunc(), llvm::X86TargetLowering::getStackProbeSymbolName(), getSubOpcode(), llvm::Nios2TargetMachine::getSubtargetImpl(), llvm::SparcTargetMachine::getSubtargetImpl(), llvm::HexagonTargetMachine::getSubtargetImpl(), llvm::WebAssemblyTargetMachine::getSubtargetImpl(), llvm::AArch64TargetMachine::getSubtargetImpl(), llvm::X86TargetMachine::getSubtargetImpl(), llvm::PPCTargetMachine::getSubtargetImpl(), llvm::ARMBaseTargetMachine::getSubtargetImpl(), llvm::MipsTargetMachine::getSubtargetImpl(), getUnderlyingArgReg(), hasOutsideLoopUser(), hasUnsafeFPMath(), llvm::RecurrenceDescriptor::isReductionPHI(), isThumbFunction(), llvm::AMDGPULibCalls::isUnsafeMath(), LLVMGetStringAttributeValue(), LowerInterruptReturn(), llvm::TargetFrameLowering::noFramePointerElim(), llvm::AttributeImpl::operator<(), llvm::parseStatepointDirectivesFromAttrs(), llvm::TargetMachine::resetTargetOptions(), runOnFunction(), llvm::StackProtector::runOnFunction(), llvm::SIMachineFunctionInfo::SIMachineFunctionInfo(), SimplifyNVVMIntrinsic(), llvm::NVPTXTargetLowering::useF32FTZ(), and WindowsRequiresStackProbe().

◆ getWithAlignment()

Attribute Attribute::getWithAlignment ( LLVMContext Context,
uint64_t  Align 
)
static

◆ getWithAllocSizeArgs()

Attribute Attribute::getWithAllocSizeArgs ( LLVMContext Context,
unsigned  ElemSizeArg,
const Optional< unsigned > &  NumElemsArg 
)
static

Definition at line 151 of file Attributes.cpp.

References assert(), Context, and packAllocSizeArgs().

Referenced by llvm::AttributeSetNode::get().

◆ getWithDereferenceableBytes()

Attribute Attribute::getWithDereferenceableBytes ( LLVMContext Context,
uint64_t  Bytes 
)
static

Definition at line 138 of file Attributes.cpp.

References assert(), and Context.

Referenced by llvm::AttributeSetNode::get().

◆ getWithDereferenceableOrNullBytes()

Attribute Attribute::getWithDereferenceableOrNullBytes ( LLVMContext Context,
uint64_t  Bytes 
)
static

Definition at line 144 of file Attributes.cpp.

References assert(), and Context.

Referenced by llvm::AttributeSetNode::get().

◆ getWithStackAlignment()

Attribute Attribute::getWithStackAlignment ( LLVMContext Context,
uint64_t  Align 
)
static

◆ hasAttribute() [1/2]

bool Attribute::hasAttribute ( AttrKind  Val) const

◆ hasAttribute() [2/2]

bool Attribute::hasAttribute ( StringRef  Val) const

Return true if the target-dependent attribute is present.

Definition at line 206 of file Attributes.cpp.

References llvm::AttributeImpl::hasAttribute(), and isStringAttribute().

◆ isEnumAttribute()

bool Attribute::isEnumAttribute ( ) const

Return true if the attribute is an Attribute::AttrKind type.

Definition at line 162 of file Attributes.cpp.

References llvm::AttributeImpl::isEnumAttribute().

Referenced by llvm::AttributeImpl::getKindAsEnum(), getKindAsEnum(), and llvm::AttributeImpl::operator<().

◆ isIntAttribute()

bool Attribute::isIntAttribute ( ) const

Return true if the attribute is an integer attribute.

Definition at line 166 of file Attributes.cpp.

References llvm::AttributeImpl::isIntAttribute().

Referenced by llvm::AttributeImpl::getKindAsEnum(), getKindAsEnum(), llvm::AttributeImpl::getValueAsInt(), getValueAsInt(), and llvm::AttributeImpl::operator<().

◆ isStringAttribute()

bool Attribute::isStringAttribute ( ) const

◆ operator!=()

bool llvm::Attribute::operator!= ( Attribute  A) const
inline

Definition at line 169 of file Attributes.h.

References operator<().

◆ operator<()

bool Attribute::operator< ( Attribute  A) const

Less-than operator. Useful for sorting the attributes list.

Definition at line 423 of file Attributes.cpp.

References llvm::AttributeImpl::~AttributeImpl().

Referenced by operator!=().

◆ operator==()

bool llvm::Attribute::operator== ( Attribute  A) const
inline

Equality and non-equality operators.

Definition at line 168 of file Attributes.h.

Referenced by llvm::AttrBuilder::td_empty().

◆ Profile()

void llvm::Attribute::Profile ( FoldingSetNodeID ID) const
inline

Definition at line 174 of file Attributes.h.

References llvm::FoldingSetNodeID::AddPointer().


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