Fariborz Jahanian | ac423ba | 2009-09-08 19:45:47 +0000 | [diff] [blame] | 1 | // RUN: clang-cc -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o %t %s && |
Fariborz Jahanian | 7f4f86a | 2009-09-08 23:38:54 +0000 | [diff] [blame^] | 2 | // RUN: grep objc_assign_strongCast %t | count 7 && |
Fariborz Jahanian | ac423ba | 2009-09-08 19:45:47 +0000 | [diff] [blame] | 3 | // RUN: true |
| 4 | |
| 5 | struct Slice { |
| 6 | void *__strong * items; |
| 7 | }; |
| 8 | |
| 9 | typedef struct Slice Slice; |
| 10 | |
| 11 | @interface ISlice { |
| 12 | @public |
Fariborz Jahanian | 7f4f86a | 2009-09-08 23:38:54 +0000 | [diff] [blame^] | 13 | void *__strong * IvarItem; |
Fariborz Jahanian | ac423ba | 2009-09-08 19:45:47 +0000 | [diff] [blame] | 14 | } |
| 15 | @end |
| 16 | |
Fariborz Jahanian | 7f4f86a | 2009-09-08 23:38:54 +0000 | [diff] [blame^] | 17 | void foo (int i) { |
| 18 | // storing into an array of strong pointer types. |
| 19 | void *__strong* items; |
| 20 | items[i] = 0; |
| 21 | |
| 22 | // storing indirectly into an array of strong pointer types. |
| 23 | void *__strong* *vitems; |
| 24 | *vitems[i] = 0; |
| 25 | |
Fariborz Jahanian | ac423ba | 2009-09-08 19:45:47 +0000 | [diff] [blame] | 26 | Slice *slice; |
| 27 | slice->items = 0; |
Fariborz Jahanian | 7f4f86a | 2009-09-08 23:38:54 +0000 | [diff] [blame^] | 28 | // storing into a struct element of an array of strong pointer types. |
| 29 | slice->items[i] = 0; |
Fariborz Jahanian | ac423ba | 2009-09-08 19:45:47 +0000 | [diff] [blame] | 30 | |
| 31 | ISlice *islice; |
Fariborz Jahanian | 7f4f86a | 2009-09-08 23:38:54 +0000 | [diff] [blame^] | 32 | islice->IvarItem = 0; |
| 33 | // Storing into an ivar of an array of strong pointer types. |
| 34 | islice->IvarItem[i] = (void*)0; |
Fariborz Jahanian | ac423ba | 2009-09-08 19:45:47 +0000 | [diff] [blame] | 35 | } |