@@ -39,7 +39,10 @@ public func foo(_ x: Double) {
3939
4040 // CHECK: [[FN:%.*]] = function_ref @$s10cf_members3fooyySdFSo10IAMStruct1VSdcfu_ : $@convention(thin) (Double) -> Struct1
4141 // CHECK: [[A:%.*]] = thin_to_thick_function [[FN]]
42- // CHECK: [[BORROWED_A:%.*]] = begin_borrow [[A]]
42+ // CHECK: [[MOVED_A:%.*]] = move_value [var_decl] [[A]]
43+ // CHECK: [[BORROWED_A:%.*]] = begin_borrow [[MOVED_A]]
44+ // CHECK: [[COPIED_A:%.*]] = copy_value [[BORROWED_A]]
45+ // CHECK: [[BORROWED_A:%.*]] = begin_borrow [[COPIED_A]]
4346 let a : ( Double ) -> Struct1 = Struct1 . init ( value: )
4447 // CHECK: [[NEW_Z_VALUE:%.*]] = apply [[BORROWED_A]]([[X]])
4548 // CHECK: end_borrow [[BORROWED_A]]
@@ -78,10 +81,13 @@ public func foo(_ x: Double) {
7881 z = c ( x)
7982 // CHECK: [[THUNK:%.*]] = function_ref @$s10cf_members3fooyySdFSo10IAMStruct1VSdcADcfu2_ : $@convention(thin) (Struct1) -> @owned @callee_guaranteed (Double) -> Struct1
8083 // CHECK: [[THICK:%.*]] = thin_to_thick_function [[THUNK]]
84+ // CHECK: [[MOVED_THICK:%.*]] = move_value [var_decl] [[THICK]]
85+ // CHECK: [[BORROWED_THICK:%.*]] = begin_borrow [[MOVED_THICK]]
86+ // CHECK: [[COPIED_THICK:%.*]] = copy_value [[BORROWED_THICK]]
8187 let d : ( Struct1 ) -> ( Double ) -> Struct1 = Struct1 . translate ( radians: )
8288 // CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[Z]] : $*Struct1
8389 // CHECK: [[ZVAL:%.*]] = load [trivial] [[READ]]
84- // CHECK: [[THICK_BORROW:%.*]] = begin_borrow [[THICK ]]
90+ // CHECK: [[THICK_BORROW:%.*]] = begin_borrow [[COPIED_THICK ]]
8591 // CHECK: apply [[THICK_BORROW]]([[ZVAL]])
8692 // CHECK: end_borrow [[THICK_BORROW]]
8793 z = d ( z) ( x)
@@ -156,8 +162,11 @@ public func foo(_ x: Double) {
156162 var y = Struct1 . staticMethod ( )
157163 // CHECK: [[THUNK:%.*]] = function_ref @$s10cf_members3fooyySdFs5Int32Vycfu8_ : $@convention(thin) () -> Int32
158164 // CHECK: [[I2:%.*]] = thin_to_thick_function [[THUNK]]
165+ // CHECK: [[MOVED_I2:%.*]] = move_value [var_decl] [[I2]]
166+ // CHECK: [[BORROWED_I2:%.*]] = begin_borrow [[MOVED_I2]]
167+ // CHECK: [[COPIED_I2:%.*]] = copy_value [[BORROWED_I2]]
159168 let i = Struct1 . staticMethod
160- // CHECK: [[BORROWED_I2:%.*]] = begin_borrow [[I2 ]]
169+ // CHECK: [[BORROWED_I2:%.*]] = begin_borrow [[COPIED_I2 ]]
161170 // CHECK: apply [[BORROWED_I2]]()
162171 y = i ( )
163172
0 commit comments