blob: ab60bfa918cbe634ac40dfe06567e93eaf26e0e2 [file] [log] [blame]
/* APPLE LOCAL file radar 5781140 */
/* Check for correct outputing of ivar layout when last fields are bitfields. */
/* { dg-do run { target powerpc*-*-darwin* i?86*-*-darwin* } } */
/* { dg-options "-mmacosx-version-min=10.5 -framework Foundation -fobjc-gc" } */
/* { dg-require-effective-target objc_gc } */
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
@interface Foo : NSObject {
id ivar;
uintptr_t bitfield :31;
uintptr_t bitfield2 :1;
#if __LP64__
uintptr_t bitfield3 :32;
#endif
}
@end
@implementation Foo @end
int main()
{
if (!objc_collecting_enabled()) {
abort ();
}
size_t size = class_getInstanceSize([Foo class]);
if (size != 3*sizeof(void*)) {
abort ();
}
const char *layout = class_getIvarLayout([Foo class]);
// Desired layout: skip 0, scan 2 (isa, ivar); skip 1 (bitfield), scan 0.
if (!layout || 0 != strcmp(layout, "\x02\x10")) {
abort ();
}
return 0;
}