OSDN Git Service

Add a new Attribute::getAlignmentFromAttrs method.
authorChris Lattner <sabre@nondot.org>
Wed, 31 Dec 2008 08:41:38 +0000 (08:41 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 31 Dec 2008 08:41:38 +0000 (08:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61517 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Attributes.h

index ab09378..972dbfa 100644 (file)
@@ -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