@@ -132,35 +132,41 @@ func reabstractDynamicGenericStaticMemberRef<T: Buttable>(t: T.Type) {
132132}
133133
134134// CHECK-LABEL: sil {{.*}} @{{.*}}reabstractExistentialInitializerRef
135+ // CHECK: [[MV:%.*]] = move_value [var_decl] %0 : $@thick any Buttable.Type
135136// CHECK: [[CLOSURE_FN:%.*]] = function_ref {{.*}}u_
136- // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]](%0 )
137+ // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]]([[MV]] )
137138// CHECK: [[CLOSURE_NE:%.*]] = convert_escape_to_noescape [not_guaranteed] [[CLOSURE]]
138139// CHECK: apply {{.*}}<Int, any Buttable>([[CLOSURE_NE]])
139140func reabstractExistentialInitializerRef( butt: any Buttable . Type ) {
140141 gen ( f: butt. init)
141142}
142143
143144// CHECK-LABEL: sil {{.*}} @{{.*}}reabstractExistentialStaticMemberRef
145+ // CHECK: [[MV:%.*]] = move_value [var_decl] %0 : $@thick any Buttable.Type
144146// CHECK: [[CLOSURE_FN:%.*]] = function_ref {{.*}}u_
145- // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]](%0 )
147+ // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]]([[MV]] )
146148// CHECK: [[CLOSURE_NE:%.*]] = convert_escape_to_noescape [not_guaranteed] [[CLOSURE]]
147149// CHECK: apply {{.*}}<Int, any Buttable>([[CLOSURE_NE]])
148150func reabstractExistentialStaticMemberRef( butt: any Buttable . Type ) {
149151 gen ( f: butt. create)
150152}
151153
154+ // TODO: The move_value [var_decl]'s here are an unexpected consequence of how SILGen generates reabstractions.
155+ //
152156// CHECK-LABEL: sil {{.*}} @{{.*}}reabstractClassCompInitializerRefs
153157func reabstractClassCompInitializerRefs< T> (
154158 butt: any ( AbstractGenericButt < T > & Buttable ) . Type
155159) {
160+ // CHECK: [[MV1:%.*]] = move_value [var_decl] %0
156161// CHECK: [[CLOSURE_FN:%.*]] = function_ref {{.*}}u_
157- // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]]<T>(%0 )
162+ // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]]<T>([[MV1]] )
158163// CHECK: [[CLOSURE_C:%.*]] = convert_function [[CLOSURE]]
159164// CHECK: [[CLOSURE_NE:%.*]] = convert_escape_to_noescape [not_guaranteed] [[CLOSURE_C]]
160165// CHECK: apply {{.*}}<Int, any (AbstractGenericButt<T> & Buttable)>([[CLOSURE_NE]])
161166 gen ( f: butt. init ( c: ) )
167+ // CHECK: [[MV2:%.*]] = move_value [var_decl] %0
162168// CHECK: [[CLOSURE_FN:%.*]] = function_ref {{.*}}u0_
163- // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]]<T>(%0 )
169+ // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]]<T>([[MV2]] )
164170// CHECK: [[CLOSURE_C:%.*]] = convert_function [[CLOSURE]]
165171// CHECK: [[CLOSURE_NE:%.*]] = convert_escape_to_noescape [not_guaranteed] [[CLOSURE_C]]
166172// CHECK: apply {{.*}}<Int, any (AbstractGenericButt<T> & Buttable)>([[CLOSURE_NE]])
@@ -171,14 +177,16 @@ func reabstractClassCompInitializerRefs<T>(
171177func reabstractClassCompStaticMemberRefs< T> (
172178 butt: any ( AbstractGenericButt < T > & Buttable ) . Type
173179) {
180+ // CHECK: [[MV1:%.*]] = move_value [var_decl] %0
174181// CHECK: [[CLOSURE_FN:%.*]] = function_ref {{.*}}u_
175- // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]]<T>(%0 )
182+ // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]]<T>([[MV1]] )
176183// CHECK: [[CLOSURE_C:%.*]] = convert_function [[CLOSURE]]
177184// CHECK: [[CLOSURE_NE:%.*]] = convert_escape_to_noescape [not_guaranteed] [[CLOSURE_C]]
178185// CHECK: apply {{.*}}<Int, any (AbstractGenericButt<T> & Buttable)>([[CLOSURE_NE]])
179186 gen ( f: butt. create ( c: ) )
187+ // CHECK: [[MV2:%.*]] = move_value [var_decl] %0
180188// CHECK: [[CLOSURE_FN:%.*]] = function_ref {{.*}}u0_
181- // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]]<T>(%0 )
189+ // CHECK: [[CLOSURE:%.*]] = partial_apply [callee_guaranteed] [[CLOSURE_FN]]<T>([[MV2]] )
182190// CHECK: [[CLOSURE_C:%.*]] = convert_function [[CLOSURE]]
183191// CHECK: [[CLOSURE_NE:%.*]] = convert_escape_to_noescape [not_guaranteed] [[CLOSURE_C]]
184192// CHECK: apply {{.*}}<Int, any (AbstractGenericButt<T> & Buttable)>([[CLOSURE_NE]])
0 commit comments