[llvm-commits] [llvm-gcc-4.2] r48857 - /llvm-gcc-4.2/trunk/gcc/llvm-types.cpp

Chris Lattner clattner at apple.com
Wed Mar 26 19:23:57 PDT 2008


Nice!

-Chris

On Mar 26, 2008, at 6:56 PM, Devang Patel <dpatel at apple.com> wrote:

> With this patch, now all struct-layout-1.exp tests from llvm-gcc-4.2
> dejagnu test suite passes on x86 darwin (32 bit)!
>
> -
> Devang
> On Mar 26, 2008, at 6:51 PM, Devang Patel wrote:
>
>> Author: dpatel
>> Date: Wed Mar 26 20:51:14 2008
>> New Revision: 48857
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=48857&view=rev
>> Log:
>> Redo entire struct layout when packed field is seen as part of non-
>> packed struct.
>>
>> Modified:
>>   llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
>>
>> Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-types.cpp?rev=48857&r1=48856&r2=48857&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> ===
>> ===================================================================
>> --- llvm-gcc-4.2/trunk/gcc/llvm-types.cpp (original)
>> +++ llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Wed Mar 26 20:51:14 2008
>> @@ -1759,10 +1759,18 @@
>>
>>  // Handle bit-fields specially.
>>  if (isBitfield(Field)) {
>> -    // Unnamed bitfield type does not contribute in struct alignment
>> -    // computations. Use packed llvm structure in such cases.
>> -    if (!DECL_NAME(Field) && !Info.isPacked())
>> -      return false;
>> +    // If this field is forcing packed llvm struct then retry
>> entire struct
>> +    // layout.
>> +    if (!Info.isPacked()) {
>> +      // Unnamed bitfield type does not contribute in struct
>> alignment
>> +      // computations. Use packed llvm structure in such cases.
>> +      if (!DECL_NAME(Field))
>> +        return false;
>> +      // If this field is packed then the struct may need padding
>> fields
>> +      // before this field.
>> +      if (DECL_PACKED(Field))
>> +        return false;
>> +    }
>>    DecodeStructBitField(Field, Info);
>>    return true;
>>  }
>> @@ -1810,10 +1818,6 @@
>>                                         StructTypeConversionInfo
>> &Info) {
>>  unsigned FieldSizeInBits = TREE_INT_CST_LOW(DECL_SIZE(Field));
>>
>> -  if (DECL_PACKED(Field))
>> -    // Individual fields can be packed.
>> -    Info.markAsPacked();
>> -
>>  if (FieldSizeInBits == 0)   // Ignore 'int:0', which just affects
>> layout.
>>    return;
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> -
> Devang
>
>
>
> _______________________________________________
> 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