[cfe-commits] r42473 - in /cfe/trunk: Parse/ParseObjc.cpp Sema/SemaDecl.cpp include/clang/AST/Decl.h

Fariborz Jahanian fjahanian at apple.com
Mon Oct 1 10:02:03 PDT 2007


On Sep 30, 2007, at 12:54 AM, Chris Lattner wrote:

>
> On Sep 29, 2007, at 11:24 AM, Fariborz Jahanian wrote:
>
>> Author: fjahanian
>> Date: Sat Sep 29 13:24:58 2007
>> New Revision: 42473
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=42473&view=rev
>> Log:
>> This patch fixes all issues mentioned in clattner's feedback of
>> September 28, 2007 4:39:24 PM PDT
>> Please let me know if I missed anything.
>
> Thanks Fariborz,
>
> This isn't exactly what I meant, sorry for the confusion.  :(
>
> Here you achieved the same space savings by moving the enum values  
> up the class hierarchy into the Decl class.  However, you can use a  
> nice feature of the itanium C++ ABI to get the same savings, without  
> having to move the ivars up.  The feature is that classes like this:
>
>
> class A {
>  void *P;
>  int X : 1;
>  int Y : 2;
> public:
> ...
> }
>
> class B : public A {
>  int Z : 4;
>  void *Q;
> ...
> }
Cute. If we conform to this ABI, then this is definitely the preferred  
choice.

- fariborz

>
>
> The bitfields in C will pack tightly with the bitfields in A, so  
> this will end up taking 3 words of memory.  The problem with the  
> previous version of the code was that it was defined as:
>
> class C : public A {
>  void *Q;
>  int Z : 4;
> ...
> }
>
> Because the bitfield came after the pointer, the bitfields end up  
> not packing together, requiring 4 words.  Can you please move the  
> ivars back into the class they came from, but reorder them so that  
> the bitfields come first in the subclass?
>
> Thanks, sorry again for the confusion!
>
> -Chris
>
>
>




More information about the cfe-commits mailing list