mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Add some accessor and query methods for retrieving Attribute objects and such.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175046 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8080696103
commit
0e9d5d059c
@ -303,6 +303,9 @@ public:
|
|||||||
/// \brief Return true if the attribute exists at the given index.
|
/// \brief Return true if the attribute exists at the given index.
|
||||||
bool hasAttribute(unsigned Index, Attribute::AttrKind Kind) const;
|
bool hasAttribute(unsigned Index, Attribute::AttrKind Kind) const;
|
||||||
|
|
||||||
|
/// \brief Return true if the attribute exists at the given index.
|
||||||
|
bool hasAttribute(unsigned Index, StringRef Kind) const;
|
||||||
|
|
||||||
/// \brief Return true if attribute exists at the given index.
|
/// \brief Return true if attribute exists at the given index.
|
||||||
bool hasAttributes(unsigned Index) const;
|
bool hasAttributes(unsigned Index) const;
|
||||||
|
|
||||||
@ -310,6 +313,12 @@ public:
|
|||||||
/// parameter or for the return value.
|
/// parameter or for the return value.
|
||||||
bool hasAttrSomewhere(Attribute::AttrKind Attr) const;
|
bool hasAttrSomewhere(Attribute::AttrKind Attr) const;
|
||||||
|
|
||||||
|
/// \brief Return the attribute object that exists at the given index.
|
||||||
|
Attribute getAttribute(unsigned Index, Attribute::AttrKind Kind) const;
|
||||||
|
|
||||||
|
/// \brief Return the attribute object that exists at the given index.
|
||||||
|
Attribute getAttribute(unsigned Index, StringRef Kind) const;
|
||||||
|
|
||||||
/// \brief Return the alignment for the specified function parameter.
|
/// \brief Return the alignment for the specified function parameter.
|
||||||
unsigned getParamAlignment(unsigned Idx) const;
|
unsigned getParamAlignment(unsigned Idx) const;
|
||||||
|
|
||||||
|
@ -170,8 +170,12 @@ public:
|
|||||||
static AttributeSetNode *get(LLVMContext &C, ArrayRef<Attribute> Attrs);
|
static AttributeSetNode *get(LLVMContext &C, ArrayRef<Attribute> Attrs);
|
||||||
|
|
||||||
bool hasAttribute(Attribute::AttrKind Kind) const;
|
bool hasAttribute(Attribute::AttrKind Kind) const;
|
||||||
|
bool hasAttribute(StringRef Kind) const;
|
||||||
bool hasAttributes() const { return !AttrList.empty(); }
|
bool hasAttributes() const { return !AttrList.empty(); }
|
||||||
|
|
||||||
|
Attribute getAttribute(Attribute::AttrKind Kind) const;
|
||||||
|
Attribute getAttribute(StringRef Kind) const;
|
||||||
|
|
||||||
unsigned getAlignment() const;
|
unsigned getAlignment() const;
|
||||||
unsigned getStackAlignment() const;
|
unsigned getStackAlignment() const;
|
||||||
std::string getAsString(bool InAttrGrp) const;
|
std::string getAsString(bool InAttrGrp) const;
|
||||||
|
@ -441,6 +441,30 @@ bool AttributeSetNode::hasAttribute(Attribute::AttrKind Kind) const {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AttributeSetNode::hasAttribute(StringRef Kind) const {
|
||||||
|
for (SmallVectorImpl<Attribute>::const_iterator I = AttrList.begin(),
|
||||||
|
E = AttrList.end(); I != E; ++I)
|
||||||
|
if (I->hasAttribute(Kind))
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Attribute AttributeSetNode::getAttribute(Attribute::AttrKind Kind) const {
|
||||||
|
for (SmallVectorImpl<Attribute>::const_iterator I = AttrList.begin(),
|
||||||
|
E = AttrList.end(); I != E; ++I)
|
||||||
|
if (I->hasAttribute(Kind))
|
||||||
|
return *I;
|
||||||
|
return Attribute();
|
||||||
|
}
|
||||||
|
|
||||||
|
Attribute AttributeSetNode::getAttribute(StringRef Kind) const {
|
||||||
|
for (SmallVectorImpl<Attribute>::const_iterator I = AttrList.begin(),
|
||||||
|
E = AttrList.end(); I != E; ++I)
|
||||||
|
if (I->hasAttribute(Kind))
|
||||||
|
return *I;
|
||||||
|
return Attribute();
|
||||||
|
}
|
||||||
|
|
||||||
unsigned AttributeSetNode::getAlignment() const {
|
unsigned AttributeSetNode::getAlignment() const {
|
||||||
for (SmallVectorImpl<Attribute>::const_iterator I = AttrList.begin(),
|
for (SmallVectorImpl<Attribute>::const_iterator I = AttrList.begin(),
|
||||||
E = AttrList.end(); I != E; ++I)
|
E = AttrList.end(); I != E; ++I)
|
||||||
@ -760,6 +784,11 @@ bool AttributeSet::hasAttribute(unsigned Index, Attribute::AttrKind Kind) const{
|
|||||||
return ASN ? ASN->hasAttribute(Kind) : false;
|
return ASN ? ASN->hasAttribute(Kind) : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AttributeSet::hasAttribute(unsigned Index, StringRef Kind) const {
|
||||||
|
AttributeSetNode *ASN = getAttributes(Index);
|
||||||
|
return ASN ? ASN->hasAttribute(Kind) : false;
|
||||||
|
}
|
||||||
|
|
||||||
bool AttributeSet::hasAttributes(unsigned Index) const {
|
bool AttributeSet::hasAttributes(unsigned Index) const {
|
||||||
AttributeSetNode *ASN = getAttributes(Index);
|
AttributeSetNode *ASN = getAttributes(Index);
|
||||||
return ASN ? ASN->hasAttributes() : false;
|
return ASN ? ASN->hasAttributes() : false;
|
||||||
@ -779,6 +808,18 @@ bool AttributeSet::hasAttrSomewhere(Attribute::AttrKind Attr) const {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Attribute AttributeSet::getAttribute(unsigned Index,
|
||||||
|
Attribute::AttrKind Kind) const {
|
||||||
|
AttributeSetNode *ASN = getAttributes(Index);
|
||||||
|
return ASN ? ASN->getAttribute(Kind) : Attribute();
|
||||||
|
}
|
||||||
|
|
||||||
|
Attribute AttributeSet::getAttribute(unsigned Index,
|
||||||
|
StringRef Kind) const {
|
||||||
|
AttributeSetNode *ASN = getAttributes(Index);
|
||||||
|
return ASN ? ASN->getAttribute(Kind) : Attribute();
|
||||||
|
}
|
||||||
|
|
||||||
unsigned AttributeSet::getParamAlignment(unsigned Index) const {
|
unsigned AttributeSet::getParamAlignment(unsigned Index) const {
|
||||||
AttributeSetNode *ASN = getAttributes(Index);
|
AttributeSetNode *ASN = getAttributes(Index);
|
||||||
return ASN ? ASN->getAlignment() : 0;
|
return ASN ? ASN->getAlignment() : 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user