[llvm-commits] [llvm-gcc-4.2] r83329 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Chris Lattner clattner at apple.com
Mon Oct 5 15:22:02 PDT 2009


On Oct 5, 2009, at 3:16 PM, Eric Christopher wrote:

> Author: echristo
> Date: Mon Oct  5 17:16:12 2009
> New Revision: 83329
>
> URL: http://llvm.org/viewvc/llvm-project?rev=83329&view=rev
> Log:
> Use FUNCTION_BOUNDARY for default function alignment. Use  
> BITS_PER_UNIT
> instead of 8 for computing alignment size - this is almost always
> 8 anyhow.

The last time I did this, Duncan pointed out that it is actually  
wrong.  LLVM does alignment in bytes, so if BITS_PER_UNIT is (e.g.)  
32, then we'd get the wrong results.

-Chris

>
> Modified:
>    llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
>
> Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=83329&r1=83328&r2=83329&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
> +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Mon Oct  5 17:16:12 2009
> @@ -504,8 +504,8 @@
>   handleVisibility(FnDecl, Fn);
>
>   // Handle attribute "aligned".
> -  if (DECL_ALIGN (FnDecl) != 8)
> -    Fn->setAlignment(DECL_ALIGN (FnDecl) / 8);
> +  if (DECL_ALIGN (FnDecl) != FUNCTION_BOUNDARY)
> +    Fn->setAlignment(DECL_ALIGN (FnDecl) / BITS_PER_UNIT);
>
>   // Handle functions in specified sections.
>   if (DECL_SECTION_NAME(FnDecl))
> @@ -1324,7 +1324,7 @@
>   const Type *LLVMTy = ConvertType(type);
>   unsigned NumElts = CountAggregateElements(LLVMTy);
>   if (TREE_CODE(TYPE_SIZE(type)) == INTEGER_CST &&
> -      (NumElts == 1 ||
> +      (NumElts == 1 ||
>        TREE_INT_CST_LOW(TYPE_SIZE_UNIT(type)) <
>        TARGET_LLVM_MIN_BYTES_COPY_BY_MEMCPY)) {
>
> @@ -1614,7 +1614,7 @@
>   if (DECL_ALIGN(decl)) {
>     unsigned TargetAlign = getTargetData().getABITypeAlignment(Ty);
>     if (DECL_USER_ALIGN(decl) || 8 * TargetAlign <  
> (unsigned)DECL_ALIGN(decl))
> -      Alignment = DECL_ALIGN(decl) / 8;
> +      Alignment = DECL_ALIGN(decl) / BITS_PER_UNIT;
>   }
>
>   const char *Name;      // Name of variable
> @@ -6628,7 +6628,8 @@
>     if (BitStart == 0 && // llvm pointer points to it.
>         !isBitfield(FieldDecl) &&  // bitfield computation might  
> offset pointer.
>         DECL_ALIGN(FieldDecl))
> -      LVAlign = std::max(LVAlign, unsigned(DECL_ALIGN(FieldDecl)) /  
> 8);
> +      LVAlign = std::max(LVAlign,
> +			 unsigned(DECL_ALIGN(FieldDecl)) / BITS_PER_UNIT);
> #endif
>
>     // If the FIELD_DECL has an annotate attribute on it, emit it.
> @@ -6838,7 +6839,7 @@
>   unsigned Alignment = Ty->isSized() ? TD.getABITypeAlignment(Ty) : 1;
>   if (DECL_ALIGN(exp)) {
>     if (DECL_USER_ALIGN(exp) || 8 * Alignment <  
> (unsigned)DECL_ALIGN(exp))
> -      Alignment = DECL_ALIGN(exp) / 8;
> +      Alignment = DECL_ALIGN(exp) / BITS_PER_UNIT;
>   }
>
>   return LValue(BitCastToType(Decl, PTy), Alignment);
>
>
> _______________________________________________
> 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