diff options
author | void <void@91177308-0d34-0410-b5e6-96231b3b80d8> | 2012-09-21 16:07:28 +0000 |
---|---|---|
committer | void <void@91177308-0d34-0410-b5e6-96231b3b80d8> | 2012-09-21 16:07:28 +0000 |
commit | d1bae61cafdcd24164c0cd95fb779891745c9217 (patch) | |
tree | 4b0921e110a9705cb5c77a176d449125ef41232d /include | |
parent | c051adfee8add4c89c8c8aa5ea699a4b7f359864 (diff) |
Encapsulate the "construct*AlignmentFromInt" functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164373 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Attributes.h | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/include/llvm/Attributes.h b/include/llvm/Attributes.h index 6b3d122f5e..9dc2c1aa57 100644 --- a/include/llvm/Attributes.h +++ b/include/llvm/Attributes.h @@ -223,6 +223,30 @@ public: return 1U << ((getRawStackAlignment() >> 26) - 1); } + /// This turns an int alignment (a power of 2, normally) into the form used + /// internally in Attributes. + static Attributes constructAlignmentFromInt(unsigned i) { + // Default alignment, allow the target to define how to align it. + if (i == 0) + return Attribute::None; + + assert(isPowerOf2_32(i) && "Alignment must be a power of two."); + assert(i <= 0x40000000 && "Alignment too large."); + return Attributes((Log2_32(i)+1) << 16); + } + + /// This turns an int stack alignment (which must be a power of 2) into the + /// form used internally in Attributes. + static Attributes constructStackAlignmentFromInt(unsigned i) { + // Default alignment, allow the target to define how to align it. + if (i == 0) + return Attribute::None; + + assert(isPowerOf2_32(i) && "Alignment must be a power of two."); + assert(i <= 0x100 && "Alignment too large."); + return Attributes((Log2_32(i)+1) << 26); + } + // This is a "safe bool() operator". operator const void *() const { return Bits ? this : 0; } bool isEmptyOrSingleton() const { return (Bits & (Bits - 1)) == 0; } @@ -300,30 +324,6 @@ const AttrConst MutuallyIncompatible[5] = { /// @brief Which attributes cannot be applied to a type. Attributes typeIncompatible(Type *Ty); -/// This turns an int alignment (a power of 2, normally) into the -/// form used internally in Attributes. -inline Attributes constructAlignmentFromInt(unsigned i) { - // Default alignment, allow the target to define how to align it. - if (i == 0) - return None; - - assert(isPowerOf2_32(i) && "Alignment must be a power of two."); - assert(i <= 0x40000000 && "Alignment too large."); - return Attributes((Log2_32(i)+1) << 16); -} - -/// This turns an int stack alignment (which must be a power of 2) into -/// the form used internally in Attributes. -inline Attributes constructStackAlignmentFromInt(unsigned i) { - // Default alignment, allow the target to define how to align it. - if (i == 0) - return None; - - assert(isPowerOf2_32(i) && "Alignment must be a power of two."); - assert(i <= 0x100 && "Alignment too large."); - return Attributes((Log2_32(i)+1) << 26); -} - /// This returns an integer containing an encoding of all the /// LLVM attributes found in the given attribute bitset. Any /// change to this encoding is a breaking change to bitcode @@ -362,7 +362,7 @@ inline Attributes decodeLLVMAttributesForBitcode(uint64_t EncodedAttrs) { Attributes Attrs(EncodedAttrs & 0xffff); if (Alignment) - Attrs |= Attribute::constructAlignmentFromInt(Alignment); + Attrs |= Attributes::constructAlignmentFromInt(Alignment); Attrs |= Attributes((EncodedAttrs & (0xfffull << 32)) >> 11); return Attrs; |