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