diff options
author | Bill Wendling <isanbard@gmail.com> | 2012-10-15 19:58:25 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2012-10-15 19:58:25 +0000 |
commit | 5a0eeb5a9d727940b1dbe8dff6e9aa292ada0f6a (patch) | |
tree | 754ef5d7b25e37c0a42b1be184c4cdfccfa48a09 /include/llvm/Attributes.h | |
parent | 32522201a8abc67ca87890fb5c8531c72d5afc42 (diff) | |
download | llvm-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.h | 40 |
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) |