[RISCV][FMV] Support target_clones (#85786)
[llvm-project.git] / clang / test / CodeGenObjC / mrr-captured-block-var-inlined-layout.m
blob7ec98350b39d297f7a9c81227b2b0e3766f13067
1 // RUN: %clang_cc1 -fblocks -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin -print-ivar-layout -emit-llvm -o /dev/null %s > %t-64.layout
2 // RUN: FileCheck --input-file=%t-64.layout %s
3 // RUN: %clang_cc1 -fblocks -fobjc-runtime-has-weak -fobjc-arc -triple i386-apple-darwin -print-ivar-layout -emit-llvm -o /dev/null %s > %t-32.layout
4 // RUN: FileCheck --input-file=%t-32.layout %s
6 void x(id y) {}
7 void y(int a) {}
9 extern id opaque_id(void);
10 __weak id wid;
12 void f(void) {
13     __block int byref_int = 0;
14     const id bar = (id) opaque_id();
15     id baz = 0;
16     __strong id strong_void_sta;
17     __block id byref_bab = (id)0;
18     __block id bl_var1;
20 // block variable layout: BL_STRONG:1, BL_OPERATOR:0
21 // CHECK: Inline block variable layout: 0x0100, BL_STRONG:1, BL_OPERATOR:0
22     void (^b)(void) = ^{
23         x(bar);
24     };    
26 // block variable layout: BL_STRONG:2, BL_BYREF:1, BL_OPERATOR:0
27 // CHECK: Inline block variable layout: 0x0210, BL_STRONG:2, BL_BYREF:1, BL_OPERATOR:0
28     void (^c)(void) = ^{
29         x(bar);
30         x(baz);
31         byref_int = 1;
32     };    
34 // block variable layout: BL_STRONG:2, BL_BYREF:3, BL_OPERATOR:0
35 // CHECK: Inline block variable layout: 0x0230, BL_STRONG:2, BL_BYREF:3, BL_OPERATOR:0
36     void (^d)(void) = ^{
37         x(bar);
38         x(baz);
39         byref_int = 1;
40         bl_var1 = 0;
41         byref_bab = 0;
42     };
44 // block variable layout: BL_STRONG:2, BL_BYREF:3, BL_OPERATOR:0
45 // CHECK: Inline block variable layout: 0x0230, BL_STRONG:2, BL_BYREF:3, BL_OPERATOR:0
46     id (^e)(void) = ^{
47         x(bar);
48         x(baz);
49         byref_int = 1;
50         bl_var1 = 0;
51         byref_bab = 0;
52         return wid;
53     };
55 // CHECK: Inline block variable layout: 0x020, BL_BYREF:2, BL_OPERATOR:0
56     void (^ii)(void) = ^{
57        byref_int = 1;
58        byref_bab = 0;
59     };