annotate clang/test/CodeGenObjC/block-byref-debuginfo.m @ 223:5f17cb93ff66 llvm-original

LLVM13 (2021/7/18)
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 18 Jul 2021 22:43:00 +0900
parents 1d019706d866
children c4bab56944e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -fblocks -fobjc-arc -fobjc-runtime-has-weak -debug-info-kind=limited -triple x86_64-apple-darwin -emit-llvm %s -o - | FileCheck %s
anatofuz
parents:
diff changeset
2
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
3 // CHECK: define internal void @__Block_byref_object_copy_({{.*}} !dbg ![[BYREF_COPY_SP:.*]] {
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
4 // CHECK: getelementptr inbounds {{.*}}, !dbg ![[BYREF_COPY_LOC:.*]]
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
5
150
anatofuz
parents:
diff changeset
6 // CHECK: !DILocalVariable(name: "foo", {{.*}}type: ![[FOOTY:[0-9]+]])
anatofuz
parents:
diff changeset
7 // CHECK: ![[FOOTY]] = {{.*}}!DICompositeType({{.*}}, name: "Foo"
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 // CHECK-NOT: DIFlagBlockByrefStruct
anatofuz
parents:
diff changeset
10 // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "__block_literal_1",
anatofuz
parents:
diff changeset
11 // CHECK-SAME: size: 320, elements: ![[BL_ELTS:[0-9]+]])
anatofuz
parents:
diff changeset
12 // CHECK: ![[BL_ELTS]] = !{{.*}}![[WFOO:[0-9]+]]}
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14 // Test that the foo is aligned at an 8 byte boundary in the DWARF
anatofuz
parents:
diff changeset
15 // expression (256) that locates it inside of the byref descriptor:
anatofuz
parents:
diff changeset
16 // CHECK: ![[WFOO]] = !DIDerivedType(tag: DW_TAG_member, name: "foo",
anatofuz
parents:
diff changeset
17 // CHECK-SAME: baseType: ![[PTR:[0-9]+]]
anatofuz
parents:
diff changeset
18 // CHECK-SAME: offset: 256)
anatofuz
parents:
diff changeset
19
anatofuz
parents:
diff changeset
20 // CHECK: ![[PTR]] = !DIDerivedType(tag: DW_TAG_pointer_type,
anatofuz
parents:
diff changeset
21 // CHECK-SAME: baseType: ![[WRAPPER:[0-9]+]]
anatofuz
parents:
diff changeset
22 // CHECK: ![[WRAPPER]] = !DICompositeType(tag: DW_TAG_structure_type, scope:
anatofuz
parents:
diff changeset
23 // CHECK: elements: ![[WR_ELTS:[0-9]+]])
anatofuz
parents:
diff changeset
24 // CHECK: ![[WR_ELTS]] = !{{.*}}![[WFOO:[0-9]+]]}
anatofuz
parents:
diff changeset
25 // CHECK: ![[WFOO]] = !DIDerivedType(tag: DW_TAG_member, name: "foo",
anatofuz
parents:
diff changeset
26 // CHECK-SAME: baseType: ![[FOOTY]]
anatofuz
parents:
diff changeset
27
anatofuz
parents:
diff changeset
28 // CHECK: !DILocalVariable(name: "foo", {{.*}}type: ![[FOOTY]])
anatofuz
parents:
diff changeset
29
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
30 // CHECK: ![[BYREF_COPY_SP]] = distinct !DISubprogram(linkageName: "__Block_byref_object_copy_",
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
31 // CHECK: ![[BYREF_COPY_LOC]] = !DILocation(line: 0, scope: ![[BYREF_COPY_SP]])
150
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 struct Foo {
anatofuz
parents:
diff changeset
34 unsigned char *data;
anatofuz
parents:
diff changeset
35 };
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
36
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
37 struct Foo2 {
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
38 id f0;
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
39 };
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
40
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
41 void (^bptr)(void);
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
42
150
anatofuz
parents:
diff changeset
43 int func() {
anatofuz
parents:
diff changeset
44 __attribute__((__blocks__(byref))) struct Foo foo;
anatofuz
parents:
diff changeset
45 ^{ foo.data = 0; }();
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
46 __block struct Foo2 foo2;
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
47 bptr = ^{ foo2.f0 =0; };
150
anatofuz
parents:
diff changeset
48 return 0;
anatofuz
parents:
diff changeset
49 }