@@ -183,3 +183,64 @@ bb0(%0 : $*Int64Wrapper):
183
183
%8 = tuple ()
184
184
return %8 : $()
185
185
}
186
+
187
+ // CHECK-LABEL: @test_copy_addr_initialize
188
+ // CHECK: PAIR #0.
189
+ // CHECK-NEXT: copy_addr %1 to [initialization] %0 : $*C
190
+ // CHECK-NEXT: %0 = argument of bb0 : $*C
191
+ // CHECK-NEXT: r=0,w=1,se=1
192
+ // CHECK: PAIR #1.
193
+ // CHECK-NEXT: copy_addr %1 to [initialization] %0 : $*C
194
+ // CHECK-NEXT: %1 = argument of bb0 : $*C
195
+ // CHECK-NEXT: r=1,w=0,se=0
196
+ // CHECK: PAIR #2.
197
+ // CHECK-NEXT: copy_addr %1 to [initialization] %0 : $*C
198
+ // CHECK-NEXT: %2 = argument of bb0 : $*C
199
+ // CHECK-NEXT: r=0,w=0,se=0
200
+ sil @test_copy_addr_initialize : $@convention(thin) (@inout C, @inout C) -> @out C {
201
+ bb0(%0 : $*C, %1 : $*C, %2: $*C):
202
+ copy_addr %1 to [initialization] %0 : $*C
203
+ %6 = tuple ()
204
+ return %6 : $()
205
+ }
206
+
207
+ // CHECK-LABEL: @test_copy_addr_assign
208
+ // CHECK: PAIR #0.
209
+ // CHECK-NEXT: copy_addr %1 to %0 : $*C
210
+ // CHECK-NEXT: %0 = argument of bb0 : $*C
211
+ // CHECK-NEXT: r=1,w=1,se=1
212
+ // CHECK: PAIR #1.
213
+ // CHECK-NEXT: copy_addr %1 to %0 : $*C
214
+ // CHECK-NEXT: %1 = argument of bb0 : $*C
215
+ // CHECK-NEXT: r=1,w=1,se=1
216
+ // CHECK: PAIR #2.
217
+ // CHECK-NEXT: copy_addr %1 to %0 : $*C
218
+ // CHECK-NEXT: %2 = argument of bb0 : $*C
219
+ // CHECK-NEXT: r=1,w=1,se=1
220
+ sil @test_copy_addr_assign : $@convention(thin) (@inout C, @inout C, @inout C) -> () {
221
+ bb0(%0 : $*C, %1 : $*C, %2: $*C):
222
+ copy_addr %1 to %0 : $*C
223
+ %6 = tuple ()
224
+ return %6 : $()
225
+ }
226
+
227
+ // CHECK-LABEL: @test_copy_addr_take
228
+ // CHECK: PAIR #0.
229
+ // CHECK-NEXT: copy_addr [take] %1 to [initialization] %0 : $*C
230
+ // CHECK-NEXT: %0 = argument of bb0 : $*C
231
+ // CHECK-NEXT: r=0,w=1,se=1
232
+ // CHECK: PAIR #1.
233
+ // CHECK-NEXT: copy_addr [take] %1 to [initialization] %0 : $*C
234
+ // CHECK-NEXT: %1 = argument of bb0 : $*C
235
+ // CHECK-NEXT: r=1,w=1,se=1
236
+ // CHECK: PAIR #2.
237
+ // CHECK-NEXT: copy_addr [take] %1 to [initialization] %0 : $*C
238
+ // CHECK-NEXT: %2 = argument of bb0 : $*C
239
+ // CHECK-NEXT: r=0,w=0,se=0
240
+ sil @test_copy_addr_take : $@convention(thin) (@in C, @inout C) -> @out C {
241
+ bb0(%0 : $*C, %1 : $*C, %2: $*C):
242
+ copy_addr [take] %1 to [initialization] %0 : $*C
243
+ %6 = tuple ()
244
+ return %6 : $()
245
+ }
246
+
0 commit comments