Skip to content

Commit 8fa3d30

Browse files
Merge pull request #69045 from kateinoigakukun/pr-6b4e2fcfd7c38a04580c5b5f8c08e565992a1040
[test][IRGen] Split returnaddress related check into a separate file
2 parents 9d57362 + 7381511 commit 8fa3d30

File tree

2 files changed

+43
-24
lines changed

2 files changed

+43
-24
lines changed

test/IRGen/access_markers.sil

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -86,30 +86,6 @@ bb0(%0 : $A):
8686
return %20 : $()
8787
}
8888

89-
// CHECK-LABEL: define {{.*}}void @testUnpairedExternal(
90-
sil @testUnpairedExternal : $(@guaranteed A, @inout Builtin.UnsafeValueBuffer) -> () {
91-
bb0(%0 : $A, %1 : $*Builtin.UnsafeValueBuffer):
92-
// CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], ptr %0, i32 0, i32 1
93-
%2 = ref_element_addr %0 : $A, #A.property
94-
95-
// CHECK-NEXT: [[PC:%.*]] = call ptr @llvm.returnaddress(i32 0)
96-
// CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH:%1]], [[SIZE]] 33, ptr [[PC]])
97-
begin_unpaired_access [modify] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
98-
99-
// CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
100-
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
101-
102-
// CHECK-NEXT: [[PC:%.*]] = call ptr @llvm.returnaddress(i32 0)
103-
// CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH]], [[SIZE]] 32, ptr [[PC]])
104-
begin_unpaired_access [read] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
105-
106-
// CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
107-
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
108-
109-
%20 = tuple ()
110-
return %20 : $()
111-
}
112-
11389
sil @writeEmptyTuple : $(@inout ()) -> ()
11490
sil @readEmptyTuple : $(@in_guaranteed ()) -> ()
11591

test/IRGen/access_markers_pc.sil

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// RUN: %target-swift-frontend -module-name access_markers -swift-version 4 -enforce-exclusivity=checked %s -emit-ir | %FileCheck %s --check-prefix=CHECK
2+
// WebAssembly does not support llvm.returnaddress.
3+
// UNSUPPORTED: CPU=wasm32
4+
5+
sil_stage canonical
6+
7+
import Builtin
8+
import Swift
9+
10+
class A {
11+
@_hasStorage var property: Int64 { get set }
12+
@_hasStorage var exProperty: Any { get set }
13+
deinit
14+
init()
15+
}
16+
17+
// CHECK-DAG: [[C:%T14access_markers1AC]] = type
18+
19+
sil_vtable A {}
20+
21+
// CHECK-LABEL: define {{.*}}void @testUnpairedExternal(
22+
sil @testUnpairedExternal : $(@guaranteed A, @inout Builtin.UnsafeValueBuffer) -> () {
23+
bb0(%0 : $A, %1 : $*Builtin.UnsafeValueBuffer):
24+
// CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], ptr %0, i32 0, i32 1
25+
%2 = ref_element_addr %0 : $A, #A.property
26+
27+
// CHECK-NEXT: [[PC:%.*]] = call ptr @llvm.returnaddress(i32 0)
28+
// CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH:%1]], [[SIZE:i(32|64)]] 33, ptr [[PC]])
29+
begin_unpaired_access [modify] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
30+
31+
// CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
32+
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
33+
34+
// CHECK-NEXT: [[PC:%.*]] = call ptr @llvm.returnaddress(i32 0)
35+
// CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH]], [[SIZE]] 32, ptr [[PC]])
36+
begin_unpaired_access [read] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
37+
38+
// CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
39+
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
40+
41+
%20 = tuple ()
42+
return %20 : $()
43+
}

0 commit comments

Comments
 (0)