| // 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 |