Fariborz Jahanian | 3ca23d7 | 2012-11-14 17:15:51 +0000 | [diff] [blame^] | 1 | // RUN: %clang_cc1 -fblocks -fobjc-arc -fobjc-runtime-has-weak -triple x86_64-apple-darwin -O0 -emit-llvm %s -o - | FileCheck %s |
| 2 | |
| 3 | int main() { |
| 4 | __block __weak id wid; |
| 5 | __block long XXX; |
| 6 | __block id ID; |
| 7 | __block struct S { |
| 8 | int iS; |
| 9 | double iD; |
| 10 | void *pv; |
| 11 | __unsafe_unretained id unsunr; |
| 12 | } import; |
| 13 | void (^c)() = ^{ |
| 14 | // Inline flag for BYREF variable layout (1107296256): BLOCK_BYREF_HAS_COPY_DISPOSE BLOCK_BYREF_LAYOUT_WEAK |
| 15 | // CHECK: store i32 1107296256, i32* [[T0:%.*]] |
| 16 | wid = 0; |
| 17 | |
| 18 | // Inline flag for BYREF variable layout (536870912): BLOCK_BYREF_LAYOUT_NON_OBJECT |
| 19 | // CHECK: store i32 536870912, i32* [[T1:%.*]] |
| 20 | XXX = 12345; |
| 21 | |
| 22 | // Inline flag for BYREF variable layout (838860800): BLOCK_BYREF_HAS_COPY_DISPOSE BLOCK_BYREF_LAYOUT_STRONG |
| 23 | // CHECK: store i32 838860800, i32* [[T2:%.*]] |
| 24 | ID = 0; |
| 25 | |
| 26 | // Inline flag for BYREF variable layout (268435456): BLOCK_BYREF_LAYOUT_EXTENDED |
| 27 | // BYREF variable layout: BL_NON_OBJECT_WORD:3, BL_UNRETAINED:1, BL_OPERATOR:0 |
| 28 | // CHECK: store i32 268435456, i32* [[T3:%.*]] |
| 29 | import.iD = 3.14; |
| 30 | |
| 31 | }; |
| 32 | c(); |
| 33 | } |