@@ -1068,6 +1068,28 @@ bb3(%15 : @owned $T):
10681068 return %15 : $T
10691069}
10701070
1071+ // Verify that trivial arguments are loaded trivially and for which no
1072+ // end_borrows were created.
1073+ // CHECK-LABEL: sil [ossa] @f171_subtract_overflow : {{.*}} {
1074+ // CHECK: {{bb[0-9]+}}([[RETVAL:%[^,]+]] : $*Builtin.Int64, [[LHS_ADDR:%[^,]+]] : $*Builtin.Int64, [[RHS_ADDR:%[^,]+]] :
1075+ // CHECK: [[LHS:%[^,]+]] = load [trivial] [[LHS_ADDR]]
1076+ // CHECK: [[RHS:%[^,]+]] = load [trivial] [[RHS_ADDR]]
1077+ // CHECK: [[SUM_AND:%[^,]+]] = apply {{%[^,]+}}([[LHS]], [[RHS]])
1078+ // CHECK-NOT: end_borrow
1079+ // CHECK: ([[SUM:%[^,]+]], [[OVERFLOWED:%[^,]+]]) = destructure_tuple [[SUM_AND]]
1080+ // CHECK: store [[SUM]] to [trivial] [[RETVAL]]
1081+ // CHECK: return [[OVERFLOWED]]
1082+ // CHECK-LABEL: } // end sil function 'f171_subtract_overflow'
1083+ sil [ossa] @f171_subtract_overflow : $@convention(thin) (@in_guaranteed Int, @in_guaranteed Int) -> (@out Int, Bool) {
1084+ bb0(%0 : $Int, %1 : $Int):
1085+ %2 = function_ref @f171_subtract_overflow_callee : $@convention(method) (Int, Int) -> (Int, Bool)
1086+ %3 = apply %2(%0, %1) : $@convention(method) (Int, Int) -> (Int, Bool)
1087+ (%4, %5) = destructure_tuple %3 : $(Int, Bool)
1088+ %6 = tuple (%4 : $Int, %5 : $Bool)
1089+ return %6 : $(Int, Bool)
1090+ }
1091+ sil [ossa] @f171_subtract_overflow_callee : $@convention(method) (Int, Int) -> (Int, Bool)
1092+
10711093// Test switching on a single opaque value.
10721094// CHECK-LABEL: sil [ossa] @f210_testSwitchEnum : $@convention(method) <T> (@in Optional<T>, @inout T) -> () {
10731095// CHECK: bb0(%0 : $*Optional<T>, %1 : $*T):
0 commit comments