@@ -431,11 +431,15 @@ bb0:
431
431
// CHECK: [[BORROWED_BAZ:%.*]] = begin_borrow [[BAZ]] : $Baz
432
432
// CHECK: [[X:%.*]] = struct_extract [[BORROWED_BAZ]] : $Baz, #Baz.x
433
433
// CHECK: [[BAR:%.*]] = struct_extract [[BORROWED_BAZ]] : $Baz, #Baz.bar
434
+
434
435
// CHECK: [[BAR_COPY:%.*]] = copy_value [[BAR]]
436
+ // CHECK: [[BAR_COPY_2:%.*]] = copy_value [[BAR_COPY]]
435
437
// CHECK: [[BAR2:%.*]] = struct_extract [[BORROWED_BAZ]] : $Baz, #Baz.bar
436
438
// CHECK: [[BAR2_COPY:%.*]] = copy_value [[BAR2]]
437
439
// CHECK: [[BAR2_COPY_BORROW:%.*]] = begin_borrow [[BAR2_COPY]]
440
+ // CHECK: [[LOAD_BORROW_EXT:%.*]] = struct_extract [[BORROWED_BAZ]]
438
441
// CHECK: apply {{%.*}}([[BAR_COPY]], [[BAR2_COPY_BORROW]], [[X]])
442
+ // CHECK: apply {{%.*}}([[BAR_COPY_2]], [[LOAD_BORROW_EXT]], [[X]])
439
443
// CHECK: end_borrow [[BAR2_COPY_BORROW]]
440
444
// CHECK: destroy_value [[BAR2_COPY]]
441
445
// CHECK: end_borrow [[BORROWED_BAZ]]
@@ -458,12 +462,17 @@ bb0(%0 : @owned $<τ_0_0> { var τ_0_0 } <Baz>, %1 : @owned $<τ_0_0> { var τ_0
458
462
%1a = project_box %1 : $<τ_0_0> { var τ_0_0 } <Baz>, 0
459
463
%9 = struct_element_addr %1a : $*Baz, #Baz.x
460
464
%10 = struct_element_addr %1a : $*Baz, #Baz.bar
465
+ %10a = struct_element_addr %1a : $*Baz, #Baz.bar
461
466
%11 = load [trivial] %9 : $*Int
462
467
%12 = load [copy] %10 : $*Bar
468
+ %12a = copy_value %12 : $Bar
463
469
%13 = load [copy] %10 : $*Bar
464
470
%14 = begin_borrow %13 : $Bar
465
471
%15 = function_ref @destructured_baz_user : $@convention(thin) (@owned Bar, @guaranteed Bar, Int) -> ()
472
+ %16 = load_borrow %10a : $*Bar
466
473
apply %15(%12, %14, %11) : $@convention(thin) (@owned Bar, @guaranteed Bar, Int) -> ()
474
+ apply %15(%12a, %16, %11) : $@convention(thin) (@owned Bar, @guaranteed Bar, Int) -> ()
475
+ end_borrow %16 : $Bar
467
476
end_borrow %14 : $Bar
468
477
destroy_value %13 : $Bar
469
478
0 commit comments