File tree 1 file changed +37
-0
lines changed 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change @@ -24,6 +24,25 @@ struct X {
24
24
var x16: Int
25
25
}
26
26
27
+ struct X2 {
28
+ var x1 : Int
29
+ var x2 : Int
30
+ var x3 : Int
31
+ var x4: Int
32
+ var x5: Int
33
+ var x6: Int
34
+ var x7: Int
35
+ var x8: Int
36
+ var x9: Int
37
+ var x10: Int
38
+ var x11: Int
39
+ var x12: Int
40
+ var x13: Int
41
+ var x14: Int
42
+ var x15: Int
43
+ var x16: Int
44
+ }
45
+
27
46
struct Y {
28
47
var y1 : X
29
48
var y2: X
@@ -314,3 +333,21 @@ bb0:
314
333
%t = tuple ()
315
334
return %t : $()
316
335
}
336
+
337
+ // CHECK: sil @test13
338
+ // CHECK: [[ADDR:%.*]] = unchecked_addr_cast %1 : $*X to $*Y
339
+ // CHECK: copy_addr [take] [[ADDR]] to [init] %2 : $*Y
340
+ // CHECK: } // end sil function 'test13'
341
+ sil @test13 : $@convention(thin) (@in X) -> () {
342
+ bb0(%0 : $*X):
343
+ %1 = alloc_stack $Y
344
+ %2 = alloc_stack $X
345
+ copy_addr [take] %0 to [init] %2 : $*X
346
+ %4 = load %2 : $*X
347
+ %7 = unchecked_bitwise_cast %4 : $X to $Y
348
+ store %7 to %1: $*Y
349
+ %13 = tuple ()
350
+ dealloc_stack %2 : $*X
351
+ dealloc_stack %1 : $*Y
352
+ return %13 : $()
353
+ }
You can’t perform that action at this time.
0 commit comments