1
- // RUN: %target-swift-frontend %use_no_opaque_pointers -swift-version 4 -enforce-exclusivity=checked %s -emit-ir | %FileCheck %s --check-prefix=CHECK
2
- // RUN: %target-swift-frontend -swift-version 4 -enforce-exclusivity=checked %s -emit-ir
1
+ // RUN: %target-swift-frontend -swift-version 4 -enforce-exclusivity=checked %s -emit-ir | %FileCheck %s --check-prefix=CHECK
3
2
4
3
sil_stage canonical
5
4
@@ -27,37 +26,31 @@ bb0(%0 : @guaranteed $A):
27
26
// CHECK: [[SCRATCH1:%.*]] = alloca [[BUFFER:.* x i8.]], align
28
27
// CHECK: [[SCRATCH2:%.*]] = alloca [[BUFFER]], align
29
28
30
- // CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], [[C]]* %0, i32 0, i32 1
29
+ // CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], ptr %0, i32 0, i32 1
31
30
%2 = ref_element_addr %0 : $A, #A.property
32
31
33
- // CHECK-NEXT: [[T0:%.*]] = bitcast [[BUFFER]]* [[SCRATCH1]] to i8*
34
- // CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 {{.*}}, i8* [[T0]])
35
- // CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
36
- // CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH1]], [[SIZE:i(32|64)]] 33, i8* null)
32
+ // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 {{.*}}, ptr [[SCRATCH1]])
33
+ // CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH1]], [[SIZE:i(32|64)]] 33, ptr null)
37
34
%3 = begin_access [modify] [dynamic] %2 : $*Int64
38
35
39
- // CHECK-NEXT: getelementptr inbounds %Ts5Int64V, %Ts5Int64V* [[PROPERTY]], i32 0, i32 0
40
- // CHECK-NEXT: load i64, i64*
36
+ // CHECK-NEXT: getelementptr inbounds %Ts5Int64V, ptr [[PROPERTY]], i32 0, i32 0
37
+ // CHECK-NEXT: load i64, ptr
41
38
%4 = load [trivial] %3 : $*Int64
42
39
43
- // CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH1]])
44
- // CHECK-NEXT: [[T0:%.*]] = bitcast [[BUFFER]]* [[SCRATCH1]] to i8*
45
- // CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 {{.*}}, i8* [[T0]])
40
+ // CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH1]])
41
+ // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 {{.*}}, ptr [[SCRATCH1]])
46
42
end_access %3 : $*Int64
47
43
48
- // CHECK-NEXT: [[T0:%.*]] = bitcast [[BUFFER]]* [[SCRATCH2]] to i8*
49
- // CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 {{.*}}, i8* [[T0]])
50
- // CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
51
- // CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH2]], [[SIZE]] 32, i8* null)
44
+ // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 {{.*}}, ptr [[SCRATCH2]])
45
+ // CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH2]], [[SIZE]] 32, ptr null)
52
46
%6 = begin_access [read] [dynamic] %2 : $*Int64
53
47
54
- // CHECK-NEXT: getelementptr inbounds %Ts5Int64V, %Ts5Int64V* [[PROPERTY]], i32 0, i32 0
55
- // CHECK-NEXT: load i64, i64*
48
+ // CHECK-NEXT: getelementptr inbounds %Ts5Int64V, ptr [[PROPERTY]], i32 0, i32 0
49
+ // CHECK-NEXT: load i64, ptr
56
50
%7 = load [trivial] %6 : $*Int64
57
51
58
- // CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH2]])
59
- // CHECK-NEXT: [[T0:%.*]] = bitcast [[BUFFER]]* [[SCRATCH2]] to i8*
60
- // CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 {{.*}}, i8* [[T0]])
52
+ // CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH2]])
53
+ // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 {{.*}}, ptr [[SCRATCH2]])
61
54
end_access %6 : $*Int64
62
55
63
56
apply %func(%4, %7) : $@convention(thin) (Int64, Int64) -> ()
@@ -72,21 +65,19 @@ bb0(%0 : $A):
72
65
// CHECK: [[SCRATCH:%.*]] = alloca [[BUFFER:.* x i8.]], align
73
66
%1 = alloc_stack $Builtin.UnsafeValueBuffer
74
67
75
- // CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], [[C]]* %0, i32 0, i32 1
68
+ // CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], ptr %0, i32 0, i32 1
76
69
%2 = ref_element_addr %0 : $A, #A.property
77
70
78
- // CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
79
- // CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH]], [[SIZE]] 33, i8* null)
71
+ // CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH]], [[SIZE]] 33, ptr null)
80
72
begin_unpaired_access [modify] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
81
73
82
- // CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH]])
74
+ // CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
83
75
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
84
76
85
- // CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
86
- // CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH]], [[SIZE]] 32, i8* null)
77
+ // CHECK-NEXT: call void @swift_beginAccess(ptr [[PROPERTY]], ptr [[SCRATCH]], [[SIZE]] 32, ptr null)
87
78
begin_unpaired_access [read] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
88
79
89
- // CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH]])
80
+ // CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
90
81
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
91
82
92
83
dealloc_stack %1 : $*Builtin.UnsafeValueBuffer
@@ -98,23 +89,21 @@ bb0(%0 : $A):
98
89
// CHECK-LABEL: define {{.*}}void @testUnpairedExternal(
99
90
sil @testUnpairedExternal : $(@guaranteed A, @inout Builtin.UnsafeValueBuffer) -> () {
100
91
bb0(%0 : $A, %1 : $*Builtin.UnsafeValueBuffer):
101
- // CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], [[C]]* %0, i32 0, i32 1
92
+ // CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], ptr %0, i32 0, i32 1
102
93
%2 = ref_element_addr %0 : $A, #A.property
103
94
104
- // CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
105
- // CHECK-NEXT: [[PC:%.*]] = call i8* @llvm.returnaddress(i32 0)
106
- // CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH:%1]], [[SIZE]] 33, i8* [[PC]])
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]])
107
97
begin_unpaired_access [modify] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
108
98
109
- // CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH]])
99
+ // CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
110
100
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
111
101
112
- // CHECK-NEXT: [[T1:%.*]] = bitcast [[INT]]* [[PROPERTY]] to i8*
113
- // CHECK-NEXT: [[PC:%.*]] = call i8* @llvm.returnaddress(i32 0)
114
- // CHECK-NEXT: call void @swift_beginAccess(i8* [[T1]], [[BUFFER]]* [[SCRATCH]], [[SIZE]] 32, i8* [[PC]])
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]])
115
104
begin_unpaired_access [read] [dynamic] %2 : $*Int64, %1 : $*Builtin.UnsafeValueBuffer
116
105
117
- // CHECK-NEXT: call void @swift_endAccess([[BUFFER]]* [[SCRATCH]])
106
+ // CHECK-NEXT: call void @swift_endAccess(ptr [[SCRATCH]])
118
107
end_unpaired_access [dynamic] %1 : $*Builtin.UnsafeValueBuffer
119
108
120
109
%20 = tuple ()
@@ -130,13 +119,13 @@ sil @testPairedBox : $(@guaranteed { var () }) -> () {
130
119
bb0(%0 : ${ var () }):
131
120
// CHECK: entry:
132
121
%2 = project_box %0 : ${ var () }, 0
133
- // CHECK-NEXT: call {{.*}}void @writeEmptyTuple(%swift.opaque* nocapture undef)
122
+ // CHECK-NEXT: call {{.*}}void @writeEmptyTuple(ptr nocapture undef)
134
123
%3 = begin_access [modify] [dynamic] %2 : $*()
135
124
%write_fn = function_ref @writeEmptyTuple : $@convention(thin) (@inout ()) -> ()
136
125
apply %write_fn(%3) : $@convention(thin) (@inout ()) -> ()
137
126
end_access %3 : $*()
138
127
139
- // CHECK-NEXT: call {{.*}}void @readEmptyTuple(%swift.opaque* noalias nocapture undef)
128
+ // CHECK-NEXT: call {{.*}}void @readEmptyTuple(ptr noalias nocapture undef)
140
129
%5 = begin_access [read] [dynamic] %2 : $*()
141
130
%read_fn = function_ref @readEmptyTuple : $@convention(thin) (@in_guaranteed ()) -> ()
142
131
apply %read_fn(%5) : $@convention(thin) (@in_guaranteed ()) -> ()
@@ -166,15 +155,15 @@ bb0(%0 : $A):
166
155
sil @testNontracking : $(@guaranteed A) -> () {
167
156
bb0(%0 : $A):
168
157
%1 = alloc_stack $Int64
169
- // CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], [[C]]* %0, i32 0, i32 1
158
+ // CHECK: [[PROPERTY:%.*]] = getelementptr inbounds [[C]], ptr %0, i32 0, i32 1
170
159
%2 = ref_element_addr %0 : $A, #A.property
171
- // CHECK: call void @swift_beginAccess(i8* %{{.*}}, [[BUFFER]]* %{{.*}}, [[SIZE]] 0, i8* null)
160
+ // CHECK: call void @swift_beginAccess(ptr %{{.*}}, ptr %{{.*}}, [[SIZE]] 0, ptr null)
172
161
%3 = begin_access [read] [dynamic] [no_nested_conflict] %2 : $*Int64
173
162
copy_addr %3 to [init] %1 : $*Int64
174
163
// CHECK-NOT: end_access
175
164
end_access %3 : $*Int64
176
165
%9 = alloc_stack $Builtin.UnsafeValueBuffer
177
- // CHECK: call void @swift_beginAccess(i8* %{{.*}}, [[BUFFER]]* %{{.*}}, [[SIZE]] 0, i8* null)
166
+ // CHECK: call void @swift_beginAccess(ptr %{{.*}}, ptr %{{.*}}, [[SIZE]] 0, ptr null)
178
167
begin_unpaired_access [read] [dynamic] [no_nested_conflict] %2 : $*Int64, %9 : $*Builtin.UnsafeValueBuffer
179
168
copy_addr %2 to %1 : $*Int64
180
169
dealloc_stack %9 : $*Builtin.UnsafeValueBuffer
0 commit comments