| // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o %t %s |
| // RUN: grep objc_assign_global %t | count 3 |
| // RUN: grep objc_assign_strongCast %t | count 2 |
| // RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o %t %s |
| // RUN: grep objc_assign_global %t | count 3 |
| // RUN: grep objc_assign_strongCast %t | count 2 |
| |
| @interface A |
| @end |
| |
| typedef struct s0 { |
| A *a[4]; |
| } T; |
| |
| T g0; |
| |
| void f0(id x) { |
| g0.a[0] = x; |
| } |
| |
| void f1(id x) { |
| ((T*) &g0)->a[0] = x; |
| } |
| |
| void f2(unsigned idx) |
| { |
| id *keys; |
| keys[idx] = 0; |
| } |
| |