[llvm-commits] [llvm] r164308 - in /llvm/trunk: include/llvm/Attributes.h lib/AsmParser/LLParser.cpp lib/CodeGen/MachineFunction.cpp lib/Target/CppBackend/CPPBackend.cpp lib/VMCore/Attributes.cpp

Benjamin Kramer benny.kra at gmail.com
Thu Sep 20 14:08:22 PDT 2012


On 20.09.2012, at 18:27, Bill Wendling <isanbard at gmail.com> wrote:

> Author: void
> Date: Thu Sep 20 11:27:05 2012
> New Revision: 164308
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=164308&view=rev
> Log:
> Make the 'get*AlignmentFromAttr' functions into member functions within the Attributes class.
> 
> Modified:
>    llvm/trunk/include/llvm/Attributes.h
>    llvm/trunk/lib/AsmParser/LLParser.cpp
>    llvm/trunk/lib/CodeGen/MachineFunction.cpp
>    llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp
>    llvm/trunk/lib/VMCore/Attributes.cpp
> 
> Modified: llvm/trunk/include/llvm/Attributes.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Attributes.h?rev=164308&r1=164307&r2=164308&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Attributes.h (original)
> +++ llvm/trunk/include/llvm/Attributes.h Thu Sep 20 11:27:05 2012
> @@ -205,6 +205,24 @@
>     return Bits & Attribute::StackAlignment_i;
>   }
> 
> +  /// This returns the alignment field of an attribute as a byte alignment
> +  /// value.
> +  unsigned getAlignment() const {
> +    if (!hasAlignmentAttr())
> +      return 0;
> +
> +    return 1U << ((getRawAlignment() >> 16) - 1);
> +  }
> +
> +  /// This returns the stack alignment field of an attribute as a byte alignment
> +  /// value.
> +  unsigned getStackAlignment() const {
> +    if (!hasStackAlignmentAttr())
> +      return 0;
> +
> +    return 1U << ((getRawStackAlignment() >> 26) - 1);
> +  }
> +
>   // This is a "safe bool() operator".
>   operator const void *() const { return Bits ? this : 0; }
>   bool isEmptyOrSingleton() const { return (Bits & (Bits - 1)) == 0; }
> @@ -212,8 +230,9 @@
>     return Bits == Attrs.Bits;
>   }
>   bool operator != (const Attributes &Attrs) const {
> -    return Bits != Attrs.Bits;
> +    return !(this == Attrs);

Pointer to Attributes equals reference to Attributes? This compiles due to the conversion operator above, but I don't think it does what you intended it to do.

- Ben

>   }
> +
>   Attributes operator | (const Attributes &Attrs) const {
>     return Attributes(Bits | Attrs.Bits);
>   }
> @@ -294,14 +313,6 @@
>   return Attributes((Log2_32(i)+1) << 16);
> }
> 
> -/// This returns the alignment field of an attribute as a byte alignment value.
> -inline unsigned getAlignmentFromAttrs(Attributes A) {
> -  if (!A.hasAlignmentAttr())
> -    return 0;
> -
> -  return 1U << ((A.getRawAlignment() >> 16) - 1);
> -}
> -
> /// 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) {
> @@ -314,15 +325,6 @@
>   return Attributes((Log2_32(i)+1) << 26);
> }
> 
> -/// This returns the stack alignment field of an attribute as a byte alignment
> -/// value.
> -inline unsigned getStackAlignmentFromAttrs(Attributes A) {
> -  if (!A.hasStackAlignmentAttr())
> -    return 0;
> -
> -  return 1U << ((A.getRawStackAlignment() >> 26) - 1);
> -}
> -
> /// 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
> @@ -450,7 +452,7 @@
>   /// getParamAlignment - Return the alignment for the specified function
>   /// parameter.
>   unsigned getParamAlignment(unsigned Idx) const {
> -    return Attribute::getAlignmentFromAttrs(getAttributes(Idx));
> +    return getAttributes(Idx).getAlignment();
>   }
> 
>   /// hasAttrSomewhere - Return true if the specified attribute is set for at
> 
> Modified: llvm/trunk/lib/AsmParser/LLParser.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.cpp?rev=164308&r1=164307&r2=164308&view=diff
> ==============================================================================
> --- llvm/trunk/lib/AsmParser/LLParser.cpp (original)
> +++ llvm/trunk/lib/AsmParser/LLParser.cpp Thu Sep 20 11:27:05 2012
> @@ -2717,7 +2717,7 @@
> 
>   // If the alignment was parsed as an attribute, move to the alignment field.
>   if (FuncAttrs & Attribute::Alignment) {
> -    Alignment = Attribute::getAlignmentFromAttrs(FuncAttrs);
> +    Alignment = FuncAttrs.getAlignment();
>     FuncAttrs &= ~Attribute::Alignment;
>   }
> 
> 
> Modified: llvm/trunk/lib/CodeGen/MachineFunction.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineFunction.cpp?rev=164308&r1=164307&r2=164308&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/MachineFunction.cpp (original)
> +++ llvm/trunk/lib/CodeGen/MachineFunction.cpp Thu Sep 20 11:27:05 2012
> @@ -60,8 +60,8 @@
>   MFInfo = 0;
>   FrameInfo = new (Allocator) MachineFrameInfo(*TM.getFrameLowering());
>   if (Fn->hasFnAttr(Attribute::StackAlignment))
> -    FrameInfo->ensureMaxAlignment(Attribute::getStackAlignmentFromAttrs(
> -        Fn->getAttributes().getFnAttributes()));
> +    FrameInfo->ensureMaxAlignment(Fn->getAttributes().
> +                                  getFnAttributes().getStackAlignment());
>   ConstantPool = new (Allocator) MachineConstantPool(TM.getTargetData());
>   Alignment = TM.getTargetLowering()->getMinFunctionAlignment();
>   // FIXME: Shouldn't use pref alignment if explicit alignment is set on Fn.
> 
> Modified: llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp?rev=164308&r1=164307&r2=164308&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp (original)
> +++ llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp Thu Sep 20 11:27:05 2012
> @@ -508,7 +508,7 @@
> #undef HANDLE_ATTR
>       if (attrs & Attribute::StackAlignment)
>         Out << " | Attribute::constructStackAlignmentFromInt("
> -            << Attribute::getStackAlignmentFromAttrs(attrs)
> +            << attrs.getStackAlignment()
>             << ")"; 
>       attrs &= ~Attribute::StackAlignment;
>       assert(attrs == 0 && "Unhandled attribute!");
> 
> Modified: llvm/trunk/lib/VMCore/Attributes.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Attributes.cpp?rev=164308&r1=164307&r2=164308&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/Attributes.cpp (original)
> +++ llvm/trunk/lib/VMCore/Attributes.cpp Thu Sep 20 11:27:05 2012
> @@ -80,12 +80,12 @@
>     Result += "address_safety ";
>   if (hasStackAlignmentAttr()) {
>     Result += "alignstack(";
> -    Result += utostr(Attribute::getStackAlignmentFromAttrs(*this));
> +    Result += utostr(getStackAlignment());
>     Result += ") ";
>   }
>   if (hasAlignmentAttr()) {
>     Result += "align ";
> -    Result += utostr(Attribute::getAlignmentFromAttrs(*this));
> +    Result += utostr(getAlignment());
>     Result += " ";
>   }
>   // Trim the trailing space.
> @@ -174,7 +174,7 @@
> 
> #ifndef NDEBUG
>   for (unsigned i = 0, e = Attrs.size(); i != e; ++i) {
> -    assert(Attrs[i].Attrs != Attribute::None && 
> +    assert(Attrs[i].Attrs.hasAttributes() && 
>            "Pointless attribute!");
>     assert((!i || Attrs[i-1].Index < Attrs[i].Index) &&
>            "Misordered AttributesList!");
> @@ -247,13 +247,14 @@
> /// returned.  Attributes for the result are denoted with Idx = 0.
> /// Function notes are denoted with idx = ~0.
> Attributes AttrListPtr::getAttributes(unsigned Idx) const {
> -  if (AttrList == 0) return Attribute::None;
> +  if (AttrList == 0) return Attributes();
> 
>   const SmallVector<AttributeWithIndex, 4> &Attrs = AttrList->Attrs;
>   for (unsigned i = 0, e = Attrs.size(); i != e && Attrs[i].Index <= Idx; ++i)
>     if (Attrs[i].Index == Idx)
>       return Attrs[i].Attrs;
> -  return Attribute::None;
> +
> +  return Attributes();
> }
> 
> /// hasAttrSomewhere - Return true if the specified attribute is set for at
> @@ -274,8 +275,8 @@
> #ifndef NDEBUG
>   // FIXME it is not obvious how this should work for alignment.
>   // For now, say we can't change a known alignment.
> -  unsigned OldAlign = Attribute::getAlignmentFromAttrs(OldAttrs);
> -  unsigned NewAlign = Attribute::getAlignmentFromAttrs(Attrs);
> +  unsigned OldAlign = OldAttrs.getAlignment();
> +  unsigned NewAlign = Attrs.getAlignment();
>   assert((!OldAlign || !NewAlign || OldAlign == NewAlign) &&
>          "Attempt to change alignment!");
> #endif
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list