aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-12-31 08:41:38 +0000
committerChris Lattner <sabre@nondot.org>2008-12-31 08:41:38 +0000
commit033ff38411ffb429fad9d99295c71908eacb4b41 (patch)
tree6b688b6ac99aff34d929b02765a40045842dfebd /include
parent67b9a2abc4b75cd3495d01fdf450a0229949b378 (diff)
downloadexternal_llvm-033ff38411ffb429fad9d99295c71908eacb4b41.zip
external_llvm-033ff38411ffb429fad9d99295c71908eacb4b41.tar.gz
external_llvm-033ff38411ffb429fad9d99295c71908eacb4b41.tar.bz2
Add a new Attribute::getAlignmentFromAttrs method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61517 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Attributes.h16
1 files changed, 11 insertions, 5 deletions
diff --git a/include/llvm/Attributes.h b/include/llvm/Attributes.h
index ab09378..972dbfa 100644
--- a/include/llvm/Attributes.h
+++ b/include/llvm/Attributes.h
@@ -88,6 +88,16 @@ inline Attributes constructAlignmentFromInt(unsigned i) {
return (Log2_32(i)+1) << 16;
}
+/// This returns the alignment field of an attribute as a byte alignment value.
+inline unsigned getAlignmentFromAttrs(Attributes A) {
+ Attributes Align = A & Attribute::Alignment;
+ if (Align == 0)
+ return 0;
+
+ return 1U << ((Align >> 16) - 1);
+}
+
+
/// The set of Attributes set in Attributes is converted to a
/// string of equivalent mnemonics. This is, presumably, for writing out
/// the mnemonics for the assembly writer.
@@ -184,11 +194,7 @@ public:
/// getParamAlignment - Return the alignment for the specified function
/// parameter.
unsigned getParamAlignment(unsigned Idx) const {
- Attributes Align = getAttributes(Idx) & Attribute::Alignment;
- if (Align == 0)
- return 0;
-
- return 1ull << ((Align >> 16) - 1);
+ return Attribute::getAlignmentFromAttrs(getAttributes(Idx));
}
/// hasAttrSomewhere - Return true if the specified attribute is set for at