brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 7ec9835 Raw
61 lines · plain
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.layout2// RUN: FileCheck --input-file=%t-64.layout %s3// 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.layout4// RUN: FileCheck --input-file=%t-32.layout %s5 6void x(id y) {}7void y(int a) {}8 9extern id opaque_id(void);10__weak id wid;11 12void 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;19 20// block variable layout: BL_STRONG:1, BL_OPERATOR:021// CHECK: Inline block variable layout: 0x0100, BL_STRONG:1, BL_OPERATOR:022    void (^b)(void) = ^{23        x(bar);24    };    25 26// block variable layout: BL_STRONG:2, BL_BYREF:1, BL_OPERATOR:027// CHECK: Inline block variable layout: 0x0210, BL_STRONG:2, BL_BYREF:1, BL_OPERATOR:028    void (^c)(void) = ^{29        x(bar);30        x(baz);31        byref_int = 1;32    };    33 34// block variable layout: BL_STRONG:2, BL_BYREF:3, BL_OPERATOR:035// CHECK: Inline block variable layout: 0x0230, BL_STRONG:2, BL_BYREF:3, BL_OPERATOR:036    void (^d)(void) = ^{37        x(bar);38        x(baz);39        byref_int = 1;40        bl_var1 = 0;41        byref_bab = 0;42    };43 44// block variable layout: BL_STRONG:2, BL_BYREF:3, BL_OPERATOR:045// CHECK: Inline block variable layout: 0x0230, BL_STRONG:2, BL_BYREF:3, BL_OPERATOR:046    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    };54 55// CHECK: Inline block variable layout: 0x020, BL_BYREF:2, BL_OPERATOR:056    void (^ii)(void) = ^{57       byref_int = 1;58       byref_bab = 0;59    };60}61