// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-fragile-abi -fobjc-gc -emit-llvm -o %t %s // RUN: grep objc_assign_ivar %t | count 0 // RUN: grep objc_assign_strongCast %t | count 8 // RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-fragile-abi -fobjc-gc -emit-llvm -o %t %s // RUN: grep objc_assign_ivar %t | count 0 // RUN: grep objc_assign_strongCast %t | count 8 @interface TestUnarchiver { void *allUnarchivedObjects; } @end @implementation TestUnarchiver struct unarchive_list { int ifield; id *list; }; - (id)init { (*((struct unarchive_list *)allUnarchivedObjects)).list = 0; ((struct unarchive_list *)allUnarchivedObjects)->list = 0; (**((struct unarchive_list **)allUnarchivedObjects)).list = 0; (*((struct unarchive_list **)allUnarchivedObjects))->list = 0; return 0; } @end // rdar://10191569 @interface I { struct S { id _timer; } *p_animationState; } @end @implementation I - (void) Meth { p_animationState->_timer = 0; (*p_animationState)._timer = 0; (&(*p_animationState))->_timer = 0; } @end