File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change @@ -24,6 +24,25 @@ struct X {
2424 var x16: Int
2525}
2626
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+
2746struct Y {
2847 var y1 : X
2948 var y2: X
@@ -314,3 +333,21 @@ bb0:
314333 %t = tuple ()
315334 return %t : $()
316335}
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