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

#include <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 ()
 
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 48 of file Attributes.h.

Member Enumeration Documentation

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 67 of file Attributes.h.

Constructor & Destructor Documentation

llvm::Attribute::Attribute ( )
inline

Definition at line 80 of file Attributes.h.

Referenced by fromRawPointer(), and get().

Member Function Documentation

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

Get an attribute from a raw pointer created by getRawPointer.

Definition at line 180 of file Attributes.h.

References Attribute().

Referenced by llvm::unwrap().

Attribute Attribute::get ( LLVMContext Context,
Attribute::AttrKind  Kind,
uint64_t  Val = 0 
)
static
Attribute Attribute::get ( LLVMContext Context,
StringRef  Kind,
StringRef  Val = StringRef() 
)
static
unsigned Attribute::getAlignment ( ) const

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

Definition at line 194 of file Attributes.cpp.

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

Referenced by llvm::AttrBuilder::addAttribute(), llvm::FunctionComparator::cmpOperations(), and llvm::AttributeSetNode::getAlignment().

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

Returns the argument numbers for the allocsize attribute (or pair(0, 0) if not known).

Definition at line 220 of file Attributes.cpp.

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

Referenced by getAllocationSize(), llvm::AttributeSetNode::getAllocSizeArgs(), and getAsString().

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

Returns the number of dereferenceable bytes from the dereferenceable attribute.

Definition at line 206 of file Attributes.cpp.

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

Referenced by llvm::AttrBuilder::addAttribute(), and llvm::AttributeSetNode::getDereferenceableBytes().

uint64_t Attribute::getDereferenceableOrNullBytes ( ) const

Returns the number of dereferenceable_or_null bytes from the dereferenceable_or_null attribute.

Definition at line 213 of file Attributes.cpp.

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

Referenced by llvm::AttrBuilder::addAttribute(), and llvm::AttributeSetNode::getDereferenceableOrNullBytes().

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

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

Referenced by llvm::AttrBuilder::addAttribute(), LLVMGetEnumAttributeKind(), and llvm::AttrBuilder::removeAttributes().

StringRef Attribute::getKindAsString ( ) const

Return the attribute's kind as a string.

This requires the attribute to be a string attribute.

Definition at line 171 of file Attributes.cpp.

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

Referenced by llvm::AttrBuilder::addAttribute(), getAsString(), llvm::AttrBuilder::hasAttributes(), LLVMGetStringAttributeKind(), and llvm::AttrBuilder::removeAttributes().

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

Return a raw pointer that uniquely identifies this attribute.

Definition at line 175 of file Attributes.h.

Referenced by llvm::wrap().

unsigned Attribute::getStackAlignment ( ) const

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

Definition at line 200 of file Attributes.cpp.

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

Referenced by llvm::AttrBuilder::addAttribute(), and llvm::AttributeSetNode::getStackAlignment().

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

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

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

StringRef Attribute::getValueAsString ( ) const
Attribute Attribute::getWithAlignment ( LLVMContext Context,
uint64_t  Align 
)
static

Return a uniquified Attribute object that has the specific alignment set.

Definition at line 108 of file Attributes.cpp.

References assert(), Context, and llvm::isPowerOf2_32().

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

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

Definition at line 134 of file Attributes.cpp.

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

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

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

Definition at line 121 of file Attributes.cpp.

References assert(), and Context.

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

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

Definition at line 127 of file Attributes.cpp.

References assert(), and Context.

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

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

Definition at line 114 of file Attributes.cpp.

References assert(), Context, and llvm::isPowerOf2_32().

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

bool Attribute::hasAttribute ( AttrKind  Val) const
bool Attribute::hasAttribute ( StringRef  Val) const

Return true if the target-dependent attribute is present.

Definition at line 189 of file Attributes.cpp.

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

bool Attribute::isEnumAttribute ( ) const

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

Definition at line 145 of file Attributes.cpp.

References llvm::AttributeImpl::isEnumAttribute().

Referenced by getKindAsEnum(), llvm::AttrBuilder::hasAttributes(), and llvm::AttrBuilder::removeAttributes().

bool Attribute::isIntAttribute ( ) const

Return true if the attribute is an integer attribute.

Definition at line 149 of file Attributes.cpp.

References llvm::AttributeImpl::isIntAttribute().

Referenced by getKindAsEnum(), getValueAsInt(), llvm::AttrBuilder::hasAttributes(), and llvm::AttrBuilder::removeAttributes().

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

Definition at line 165 of file Attributes.h.

bool Attribute::operator< ( Attribute  A) const

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

Definition at line 402 of file Attributes.cpp.

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

Equality and non-equality operators.

Definition at line 164 of file Attributes.h.

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

Definition at line 170 of file Attributes.h.

References llvm::FoldingSetNodeID::AddPointer().


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