summaryrefslogtreecommitdiff
path: root/include/llvm/Attributes.h
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2012-10-15 19:58:25 +0000
committerBill Wendling <isanbard@gmail.com>2012-10-15 19:58:25 +0000
commit5a0eeb5a9d727940b1dbe8dff6e9aa292ada0f6a (patch)
tree754ef5d7b25e37c0a42b1be184c4cdfccfa48a09 /include/llvm/Attributes.h
parent32522201a8abc67ca87890fb5c8531c72d5afc42 (diff)
downloadllvm-5a0eeb5a9d727940b1dbe8dff6e9aa292ada0f6a.tar.gz
llvm-5a0eeb5a9d727940b1dbe8dff6e9aa292ada0f6a.tar.bz2
llvm-5a0eeb5a9d727940b1dbe8dff6e9aa292ada0f6a.tar.xz
Add comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165958 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Attributes.h')
-rw-r--r--include/llvm/Attributes.h40
1 files changed, 30 insertions, 10 deletions
diff --git a/include/llvm/Attributes.h b/include/llvm/Attributes.h
index 03ee520440..d04ca590aa 100644
--- a/include/llvm/Attributes.h
+++ b/include/llvm/Attributes.h
@@ -52,6 +52,7 @@ public:
/// uwtable + nounwind = Needs an entry because the ABI says so.
enum AttrVal {
+ // IR-Level Attributes
None = 0, ///< No attributes have been set
AddressSafety = 1, ///< Address safety checking is on.
Alignment = 2, ///< Alignment of parameter (5 bits)
@@ -120,23 +121,38 @@ public:
void clear() { Bits = 0; }
+ /// addAttribute - Add an attribute to the builder.
+ Builder &addAttribute(Attributes::AttrVal Val);
+
+ /// removeAttribute - Remove an attribute from the builder.
+ Builder &removeAttribute(Attributes::AttrVal Val);
+
+ /// addAttribute - Add the attributes from A to the builder.
+ Builder &addAttributes(const Attributes &A);
+
+ /// removeAttribute - Remove the attributes from A from the builder.
+ Builder &removeAttributes(const Attributes &A);
+
+ /// hasAttribute - Return true if the builder has the specified attribute.
bool hasAttribute(Attributes::AttrVal A) const;
+
+ /// hasAttributes - Return true if the builder has IR-level attributes.
bool hasAttributes() const;
+
+ /// hasAttributes - Return true if the builder has any attribute that's in
+ /// the specified attribute.
bool hasAttributes(const Attributes &A) const;
+
+ /// hasAlignmentAttr - Return true if the builder has an alignment
+ /// attribute.
bool hasAlignmentAttr() const;
+ /// getAlignment - Retrieve the alignment attribute, if it exists.
uint64_t getAlignment() const;
- uint64_t getStackAlignment() const;
-
- Builder &addAttribute(Attributes::AttrVal Val);
- Builder &removeAttribute(Attributes::AttrVal Val);
- Builder &addAttributes(const Attributes &A);
- Builder &removeAttributes(const Attributes &A);
-
- /// addRawValue - Add the raw value to the internal representation. This
- /// should be used ONLY for decoding bitcode!
- Builder &addRawValue(uint64_t Val);
+ /// getStackAlignment - Retrieve the stack alignment attribute, if it
+ /// exists.
+ uint64_t getStackAlignment() const;
/// addAlignmentAttr - This turns an int alignment (which must be a power of
/// 2) into the form used internally in Attributes.
@@ -146,6 +162,10 @@ public:
/// a power of 2) into the form used internally in Attributes.
Builder &addStackAlignmentAttr(unsigned Align);
+ /// addRawValue - Add the raw value to the internal representation.
+ /// N.B. This should be used ONLY for decoding LLVM bitcode!
+ Builder &addRawValue(uint64_t Val);
+
/// @brief Remove attributes that are used on functions only.
void removeFunctionOnlyAttrs() {
removeAttribute(Attributes::NoReturn)