File tree Expand file tree Collapse file tree 2 files changed +9
-6
lines changed Expand file tree Collapse file tree 2 files changed +9
-6
lines changed Original file line number Diff line number Diff line change @@ -80,16 +80,17 @@ unwind:
80
80
// CHECK-LABEL: sil @use_yield_big : $@convention(thin) () -> () {
81
81
// CHECK: bb0:
82
82
// CHECK-NEXT: [[TEMP:%.*]] = alloc_stack $BigStruct
83
+ // CHECK-NEXT: [[TEMP2:%.*]] = alloc_stack $BigStruct
83
84
// CHECK-NEXT: // function_ref
84
85
// CHECK-NEXT: [[CORO:%.*]] = function_ref @test_yield_big : $@yield_once @convention(thin) () -> @yields @in_guaranteed BigStruct
85
86
// CHECK-NEXT: ([[ADDR:%.*]], [[TOKEN:%.*]]) = begin_apply [[CORO]]()
86
- // TODO: this isn't very efficient
87
- // CHECK-NEXT: [[T0:%.*]] = load [[ADDR]] : $*BigStruct
88
- // CHECK-NEXT: store [[T0]] to [[TEMP]] : $*BigStruct
87
+ // CHECK-NEXT: copy_addr [take] [[ADDR]] to [init] [[TEMP]] : $*BigStruct
88
+ // CHECK-NEXT: copy_addr [take] [[TEMP]] to [init] [[TEMP2]] : $*BigStruct
89
89
// CHECK-NEXT: // function_ref
90
90
// CHECK-NEXT: [[USE:%.*]] = function_ref @use_big_struct : $@convention(thin) (@in_guaranteed BigStruct) -> ()
91
- // CHECK-NEXT: apply [[USE]]([[TEMP ]])
91
+ // CHECK-NEXT: apply [[USE]]([[TEMP2 ]])
92
92
// CHECK-NEXT: [[RET:%.*]] = end_apply [[TOKEN]] as $()
93
+ // CHECK-NEXT: dealloc_stack [[TEMP2]] : $*BigStruct
93
94
// CHECK-NEXT: dealloc_stack [[TEMP]] : $*BigStruct
94
95
// CHECK-NEXT: return [[RET]] : $()
95
96
sil @use_yield_big : $@convention(thin) () -> () {
Original file line number Diff line number Diff line change @@ -64,9 +64,11 @@ public struct Container2 {
64
64
65
65
// CHECK: sil @$s1t10LargeThingVACycfC : $@convention(method) (@thin LargeThing.Type) -> @out LargeThing {
66
66
// CHECK: bb0(%0 : $*LargeThing, %1 : $@thin LargeThing.Type):
67
- // CHECK: [[T0:%.*]] = alloc_stack $LargeThing
68
- // CHECK: [[T2:%.*]] = struct_element_addr [[T0]] : $*LargeThing, #LargeThing.s0
67
+ // CHECK: [[T0:%.*]] = alloc_stack $LargeThing
68
+ // CHECK: [[T1:%.*]] = alloc_stack [var_decl] $LargeThing
69
+ // CHECK: [[T2:%.*]] = struct_element_addr [[T1]] : $*LargeThing, #LargeThing.s0
69
70
// CHECK: store {{.*}} to [[T2]] : $*String
71
+ // CHECK: copy_addr [take] [[T1]] to [init] [[T0]] : $*LargeThing
70
72
// CHECK: copy_addr [take] [[T0]] to [init] %0 : $*LargeThing
71
73
// CHECK: } // end sil function '$s1t10LargeThingVACycfC'
72
74
You can’t perform that action at this time.
0 commit comments