Merge pull request #24 from ngrewe/ivar_layout

Test case for misaligned ivars.

This introduces a new failing test for the bug introduced when trying to correctly align vectors.
main
davidchisnall 9 years ago committed by GitHub
commit 25c7038ed4

@ -52,8 +52,36 @@ typedef int v4si __attribute__ ((vector_size (16)));
}
@end
#if __has_attribute(objc_root_class)
__attribute__((objc_root_class))
#endif
@interface StringLikeTest
{
Class isa;
char* c_string;
int len;
}
@end
@implementation StringLikeTest
+ (Class)class
{
return self;
}
@end
int main(void)
{
[[Vector alloc] permute];
[[Foo new] check];
Ivar v_isa = class_getInstanceVariable([StringLikeTest class], "isa");
Ivar v_c_string = class_getInstanceVariable([StringLikeTest class], "c_string");
Ivar v_len = class_getInstanceVariable([StringLikeTest class], "len");
ptrdiff_t o_isa = ivar_getOffset(v_isa);
ptrdiff_t o_c_string = ivar_getOffset(v_c_string);
assert(o_isa == 0);
assert(o_c_string == sizeof(Class));
assert(o_isa < o_c_string);
assert(o_c_string < ivar_getOffset(v_len));
}

Loading…
Cancel
Save