[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