summaryrefslogtreecommitdiff
path: root/lib/VMCore/Attributes.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2012-10-07 08:55:05 +0000
committerBill Wendling <isanbard@gmail.com>2012-10-07 08:55:05 +0000
commitb10c88f175a9aca5a56f6b258466c1b8efe643bf (patch)
tree67df7b45a4bb405248672aa846348522ed699c79 /lib/VMCore/Attributes.cpp
parentf93c55a3920846ce1fdc7fe939e6dad1ae80989b (diff)
downloadllvm-b10c88f175a9aca5a56f6b258466c1b8efe643bf.tar.gz
llvm-b10c88f175a9aca5a56f6b258466c1b8efe643bf.tar.bz2
llvm-b10c88f175a9aca5a56f6b258466c1b8efe643bf.tar.xz
Move more methods out-of-line. This is in preparation for changing the internal
contents of the Attributes class over to an AttributesImpl. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165373 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/Attributes.cpp')
-rw-r--r--lib/VMCore/Attributes.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/VMCore/Attributes.cpp b/lib/VMCore/Attributes.cpp
index 12f0699c02..d1b693b4c6 100644
--- a/lib/VMCore/Attributes.cpp
+++ b/lib/VMCore/Attributes.cpp
@@ -28,6 +28,9 @@ using namespace llvm;
// Attribute Function Definitions
//===----------------------------------------------------------------------===//
+bool Attributes::hasAttributes(const Attributes &A) const {
+ return Bits & A.Bits;
+}
bool Attributes::hasAddressSafetyAttr() const {
return Bits & Attribute::AddressSafety_i;
}
@@ -125,6 +128,31 @@ unsigned Attributes::getStackAlignment() const {
return 1U << (((Bits & Attribute::StackAlignment_i) >> 26) - 1);
}
+bool Attributes::isEmptyOrSingleton() const {
+ return (Bits & (Bits - 1)) == 0;
+}
+
+Attributes Attributes::operator | (const Attributes &Attrs) const {
+ return Attributes(Bits | Attrs.Bits);
+}
+Attributes Attributes::operator & (const Attributes &Attrs) const {
+ return Attributes(Bits & Attrs.Bits);
+}
+Attributes Attributes::operator ^ (const Attributes &Attrs) const {
+ return Attributes(Bits ^ Attrs.Bits);
+}
+Attributes &Attributes::operator |= (const Attributes &Attrs) {
+ Bits |= Attrs.Bits;
+ return *this;
+}
+Attributes &Attributes::operator &= (const Attributes &Attrs) {
+ Bits &= Attrs.Bits;
+ return *this;
+}
+Attributes Attributes::operator ~ () const {
+ return Attributes(~Bits);
+}
+
Attributes Attributes::typeIncompatible(Type *Ty) {
Attributes::Builder Incompatible;