summaryrefslogtreecommitdiff
path: root/lib/VMCore/Attributes.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2012-10-09 00:01:21 +0000
committerBill Wendling <isanbard@gmail.com>2012-10-09 00:01:21 +0000
commit8831c0605bbc0c82ce56c2fb85bd681d1c013925 (patch)
tree99ab041142fcf8baf621d46fcb3afc99a113662e /lib/VMCore/Attributes.cpp
parent9f11bf52b47cf91b09a6294a1b6dc750fa695fd8 (diff)
downloadllvm-8831c0605bbc0c82ce56c2fb85bd681d1c013925.tar.gz
llvm-8831c0605bbc0c82ce56c2fb85bd681d1c013925.tar.bz2
llvm-8831c0605bbc0c82ce56c2fb85bd681d1c013925.tar.xz
Convert to using the Attributes::Builder interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165465 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/Attributes.cpp')
-rw-r--r--lib/VMCore/Attributes.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/VMCore/Attributes.cpp b/lib/VMCore/Attributes.cpp
index 6905e4df39..6f5eefae0d 100644
--- a/lib/VMCore/Attributes.cpp
+++ b/lib/VMCore/Attributes.cpp
@@ -377,6 +377,10 @@ void Attributes::Builder::addStackAlignmentAttr(unsigned Align) {
Bits |= (Log2_32(Align) + 1) << 26;
}
+void Attributes::Builder::removeAttributes(const Attributes &A) {
+ Bits &= ~A.Raw();
+}
+
void Attributes::Builder::removeAddressSafetyAttr() {
Bits &= ~Attribute::AddressSafety_i;
}
@@ -463,6 +467,9 @@ void Attributes::Builder::removeStackAlignmentAttr() {
bool Attributes::Builder::hasAttributes() const {
return Bits != 0;
}
+bool Attributes::Builder::hasAttributes(const Attributes &A) const {
+ return Bits & A.Raw();
+}
bool Attributes::Builder::hasAlignmentAttr() const {
return Bits & Attribute::Alignment_i;
}
@@ -662,6 +669,15 @@ bool AttrListPtr::hasAttrSomewhere(Attributes Attr) const {
return false;
}
+unsigned AttrListPtr::getNumAttrs() const {
+ return AttrList ? AttrList->Attrs.size() : 0;
+}
+
+Attributes &AttrListPtr::getAttributesAtIndex(unsigned i) const {
+ assert(AttrList && "Trying to get an attribute from an empty list!");
+ assert(i < AttrList->Attrs.size() && "Index out of range!");
+ return AttrList->Attrs[i].Attrs;
+}
AttrListPtr AttrListPtr::addAttr(unsigned Idx, Attributes Attrs) const {
Attributes OldAttrs = getAttributes(Idx);