Skip to content

Commit f26a9b9

Browse files
committed
tests: fix some memory lifetime violations in SIL lit tests.
1 parent b58f54c commit f26a9b9

16 files changed

+37
-24
lines changed

test/IRGen/archetype_resilience.sil

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ sil [ossa] @copyDynamicMultiEnum : $@convention(method) <T, U where T: AnyObject
2323
bb0(%0 : $*EnumWithClassArchetypeAndDynamicSize<T>):
2424
%1 = alloc_stack $EnumWithClassArchetypeAndDynamicSize<T>
2525
copy_addr %0 to [initialization] %1 : $*EnumWithClassArchetypeAndDynamicSize<T>
26+
destroy_addr %1 : $*EnumWithClassArchetypeAndDynamicSize<T>
2627
dealloc_stack %1 : $*EnumWithClassArchetypeAndDynamicSize<T>
2728
%ret = tuple ()
2829
return %ret : $()

test/Reflection/capture_descriptors.sil

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ sil [ossa] @generic_callee2 : $@convention(thin) <T, U> (@in T, @owned <τ_0_0>
5656
bb0(%i : $*T, %b : @owned $<τ_0_0> { var τ_0_0 } <U>):
5757
%12 = tuple ()
5858
destroy_value %b : $<τ_0_0> { var τ_0_0 } <U>
59+
destroy_addr %i : $*T
5960
return %12 : $()
6061
}
6162

test/SIL/Parser/borrow.sil

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ bb0(%0 : $*Builtin.NativeObject, %1 : @guaranteed $Builtin.NativeObject):
2222
store_borrow %1 to %3 : $*Builtin.NativeObject
2323
end_borrow %3 : $*Builtin.NativeObject
2424
dealloc_stack %3 : $*Builtin.NativeObject
25+
destroy_addr %0 : $*Builtin.NativeObject
2526

2627
%4 = tuple()
2728
return %4 : $()

test/SIL/Parser/generics.sil

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ bb0(%0 : $*I, %1 : $*Self):
104104
%5 = alloc_stack $Self.Assoc // users: %6, %8
105105
%6 = apply %4<I>(%5, %2) : $@convention(witness_method: FooProto) <τ_0_0 where τ_0_0 : FooProto, τ_0_0.Assoc : FooProtoHelper> (@in_guaranteed τ_0_0) -> @out τ_0_0.Assoc
106106
destroy_addr %2 : $*I // id: %7
107+
destroy_addr %5 : $*Self.Assoc // id: %8
107108
dealloc_stack %5 : $*Self.Assoc // id: %8
108109
dealloc_stack %2 : $*I // id: %9
109110
destroy_addr %0 : $*I // id: %10

test/SIL/Parser/ownership_qualified_memopts.sil

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,21 @@ import Builtin
55

66
// CHECK-LABEL: sil [ossa] @non_trivial : $@convention(thin) (@in Builtin.NativeObject, @owned Builtin.NativeObject) -> () {
77
// CHECK: bb0([[ARG1:%[0-9]+]] : $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : @owned $Builtin.NativeObject):
8-
// CHECK: load [take] [[ARG1]] : $*Builtin.NativeObject
98
// CHECK: load [copy] [[ARG1]] : $*Builtin.NativeObject
9+
// CHECK: load [take] [[ARG1]] : $*Builtin.NativeObject
1010
// CHECK: [[COPY_ARG2:%.*]] = copy_value [[ARG2]]
1111
// CHECK: store [[COPY_ARG2]] to [init] [[ARG1]] : $*Builtin.NativeObject
1212
// CHECK: store [[ARG2]] to [assign] [[ARG1]] : $*Builtin.NativeObject
1313
sil [ossa] @non_trivial : $@convention(thin) (@in Builtin.NativeObject, @owned Builtin.NativeObject) -> () {
1414
bb0(%0 : $*Builtin.NativeObject, %1 : @owned $Builtin.NativeObject):
15-
%2 = load [take] %0 : $*Builtin.NativeObject
16-
%3 = load [copy] %0 : $*Builtin.NativeObject
15+
%2 = load [copy] %0 : $*Builtin.NativeObject
16+
%3 = load [take] %0 : $*Builtin.NativeObject
1717
%4 = copy_value %1 : $Builtin.NativeObject
1818
store %4 to [init] %0 : $*Builtin.NativeObject
1919
store %1 to [assign] %0 : $*Builtin.NativeObject
2020
destroy_value %2 : $Builtin.NativeObject
2121
destroy_value %3 : $Builtin.NativeObject
22+
destroy_addr %0 : $*Builtin.NativeObject
2223
%9999 = tuple()
2324
return %9999 : $()
2425
}

test/SIL/Serialization/borrow.sil

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ bb0(%0 : $*Builtin.NativeObject, %1 : @guaranteed $Builtin.NativeObject):
2525
store_borrow %1 to %3 : $*Builtin.NativeObject
2626
end_borrow %3 : $*Builtin.NativeObject
2727
dealloc_stack %3 : $*Builtin.NativeObject
28+
destroy_addr %0 : $*Builtin.NativeObject
2829
%4 = tuple()
2930
return %4 : $()
3031
}

test/SIL/Serialization/ownership_qualified_memopts.sil

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,20 @@ bb0(%0 : $*Builtin.Int32, %1 : $Builtin.Int32):
2323

2424
// CHECK-LABEL: sil [serialized] [ossa] @non_trivial : $@convention(thin) (@in Builtin.NativeObject, @owned Builtin.NativeObject) -> () {
2525
// CHECK: bb0([[ARG1:%[0-9]+]] : $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : @owned $Builtin.NativeObject):
26-
// CHECK: [[ARG1_VAL:%.*]] = load [take] [[ARG1]] : $*Builtin.NativeObject
27-
// CHECK: [[ARG1_VAL_2:%.*]] = load [copy] [[ARG1]] : $*Builtin.NativeObject
26+
// CHECK: [[ARG1_VAL:%.*]] = load [copy] [[ARG1]] : $*Builtin.NativeObject
27+
// CHECK: [[ARG1_VAL_2:%.*]] = load [take] [[ARG1]] : $*Builtin.NativeObject
2828
// CHECK: store [[ARG1_VAL]] to [init] [[ARG1]] : $*Builtin.NativeObject
2929
// CHECK: store [[ARG2]] to [assign] [[ARG1]] : $*Builtin.NativeObject
3030
// CHECK: destroy_value [[ARG1_VAL_2]]
3131
// CHECK: } // end sil function 'non_trivial'
3232
sil [serialized] [ossa] @non_trivial : $@convention(thin) (@in Builtin.NativeObject, @owned Builtin.NativeObject) -> () {
3333
bb0(%0 : $*Builtin.NativeObject, %1 : @owned $Builtin.NativeObject):
34-
%2 = load [take] %0 : $*Builtin.NativeObject
35-
%3 = load [copy] %0 : $*Builtin.NativeObject
34+
%2 = load [copy] %0 : $*Builtin.NativeObject
35+
%3 = load [take] %0 : $*Builtin.NativeObject
3636
store %2 to [init] %0 : $*Builtin.NativeObject
3737
store %1 to [assign] %0 : $*Builtin.NativeObject
3838
destroy_value %3 : $Builtin.NativeObject
39+
destroy_addr %0 : $*Builtin.NativeObject
3940
%9999 = tuple()
4041
return %9999 : $()
4142
}

test/SILOptimizer/allocbox_to_stack_ownership.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ bb0(%0 : @owned $SomeClass):
164164
%1 = alloc_box ${ var SomeClass }
165165
%1a = project_box %1 : ${ var SomeClass }, 0
166166
store %0 to [init] %1a : $*SomeClass
167-
%3 = load [take] %1a : $*SomeClass
167+
%3 = load [copy] %1a : $*SomeClass
168168
destroy_value %1 : ${ var SomeClass }
169169
return %3 : $SomeClass
170170

test/SILOptimizer/capture_promotion_generic_context_ownership.sil

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,15 @@ protocol P {}
3939

4040
// CHECK-LABEL: sil @$s22generic_promotable_boxTf2ni_n : $@convention(thin) <T> (@in T, Builtin.Int32) -> Builtin.Int32
4141
// CHECK: bb0([[ARG0:%.*]] : $*T, [[ARG1:%.*]] : $Builtin.Int32):
42+
// CHECK-NEXT: destroy_addr %0
4243
// CHECK-NEXT: return [[ARG1]] : $Builtin.Int32
4344

4445
sil [ossa] @generic_promotable_box : $@convention(thin) <T> (@in T, @owned <τ_0_0> { var τ_0_0 } <Int>) -> Int {
4546
entry(%0 : $*T, %b : @owned $<τ_0_0> { var τ_0_0 } <Int>):
4647
%a = project_box %b : $<τ_0_0> { var τ_0_0 } <Int>, 0
4748
%v = load [trivial] %a : $*Int
4849
destroy_value %b : $<τ_0_0> { var τ_0_0 } <Int>
50+
destroy_addr %0 : $*T
4951
return %v : $Int
5052
}
5153

test/SILOptimizer/constant_propagation_ownership_objc.sil

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -988,7 +988,7 @@ bb0(%0 : @owned $Array<NSObject>):
988988
checked_cast_addr_br copy_on_success Array<NSObject> in %1 : $*Array<NSObject> to NSArray in %2 : $*NSArray, bb1, bb2
989989

990990
bb1:
991-
destroy_addr %1 : $*Array<NSObject>
991+
destroy_addr %2 : $*NSArray
992992
br bb3
993993

994994
bb2:
@@ -1013,14 +1013,14 @@ bb0(%0 : @owned $Array<NSObject>):
10131013
checked_cast_addr_br take_on_success Array<NSObject> in %1 : $*Array<NSObject> to NSArray in %2 : $*NSArray, bb1, bb2
10141014

10151015
bb1:
1016-
destroy_addr %1 : $*Array<NSObject>
1016+
destroy_addr %2 : $*NSArray
10171017
br bb3
10181018

10191019
bb2:
1020+
destroy_addr %1 : $*Array<NSObject>
10201021
br bb3
10211022

10221023
bb3:
1023-
destroy_addr %1 : $*Array<NSObject>
10241024
dealloc_stack %2 : $*NSArray
10251025
dealloc_stack %1 : $*Array<NSObject>
10261026
%9999 = tuple()
@@ -1038,14 +1038,13 @@ bb0(%0 : @owned $Array<NSObject>):
10381038
checked_cast_addr_br take_always Array<NSObject> in %1 : $*Array<NSObject> to NSArray in %2 : $*NSArray, bb1, bb2
10391039

10401040
bb1:
1041-
destroy_addr %1 : $*Array<NSObject>
1041+
destroy_addr %2 : $*NSArray
10421042
br bb3
10431043

10441044
bb2:
10451045
br bb3
10461046

10471047
bb3:
1048-
destroy_addr %1 : $*Array<NSObject>
10491048
dealloc_stack %2 : $*NSArray
10501049
dealloc_stack %1 : $*Array<NSObject>
10511050
%9999 = tuple()

test/SILOptimizer/copy_propagation.sil

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ bb3(%11 : @owned $T):
118118
//
119119
// A new copy_value is inserted before the consuming store.
120120
// CHECK-NEXT: %3 = copy_value %0 : $T
121-
// CHECK-NEXT: store %3 to [init] %1 : $*T
121+
// CHECK-NEXT: store %3 to [assign] %1 : $*T
122122
//
123123
// The non-consuming use now uses the original value.
124124
// CHECK-NEXT: debug_value %0 : $T
@@ -135,7 +135,7 @@ sil [ossa] @testConsume : $@convention(thin) <T> (@in T, @inout T) -> () {
135135
bb0(%arg : @owned $T, %addr : $*T):
136136
%copy = copy_value %arg : $T
137137
debug_value %copy : $T
138-
store %copy to [init] %addr : $*T
138+
store %copy to [assign] %addr : $*T
139139
debug_value %arg : $T
140140
debug_value_addr %addr : $*T
141141
destroy_value %arg : $T

test/SILOptimizer/definite_init_markuninitialized_var.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ bb0(%0 : $*T, %1 : $*T):
132132
}
133133

134134
// CHECK-LABEL: sil [ossa] @copy_addr2
135-
sil [ossa] @copy_addr2 : $@convention(thin) <T> (@in T) -> @out T {
135+
sil [ossa] @copy_addr2 : $@convention(thin) <T> (@in_guaranteed T) -> @out T {
136136
bb0(%0 : $*T, %1 : $*T):
137137
%3 = alloc_box $<τ_0_0> { var τ_0_0 } <T>
138138
%3a = project_box %3 : $<τ_0_0> { var τ_0_0 } <T>, 0

test/SILOptimizer/devirt_try_apply_ownership.sil

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ bb0(%0 : @owned $Derived1):
212212
%8 = unchecked_ref_cast %7 : $Base to $Derived1
213213
%9 = copy_value %8 : $Derived1
214214
store %8 to [assign] %1 : $*Derived1
215+
destroy_addr %1 : $*Derived1
215216
dealloc_stack %1 : $*Derived1
216217
return %9 : $Derived1
217218
}
@@ -294,6 +295,7 @@ bb0(%0 : @owned $Derived2):
294295
%8 = unchecked_ref_cast %7 : $Base to $Derived2
295296
%9 = copy_value %8 : $Derived2
296297
store %8 to [assign] %1 : $*Derived2
298+
destroy_addr %1 : $*Derived2
297299
dealloc_stack %1 : $*Derived2
298300
return %9 : $Derived2
299301
}
@@ -400,6 +402,7 @@ bb0(%0 : @owned $CP2):
400402
%8 = unchecked_ref_cast %7 : $CP1 to $CP2
401403
%9 = copy_value %8 : $CP2
402404
store %8 to [assign] %1 : $*CP2
405+
destroy_addr %1 : $*CP2
403406
dealloc_stack %1 : $*CP2
404407
return %9 : $CP2
405408
}

test/SILOptimizer/ownership_model_eliminator.sil

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ class C {}
1717
// CHECK-LABEL: sil @load : $@convention(thin) (@in Builtin.NativeObject, @in Builtin.Int32) -> () {
1818
// CHECK: bb0([[ARG1:%[0-9]+]] : $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : $*Builtin.Int32):
1919
// CHECK: [[LOAD2:%[0-9]+]] = load [[ARG1]] : $*Builtin.NativeObject
20+
// CHECK: strong_retain [[LOAD2]]
2021
// CHECK: apply {{%[0-9]+}}([[LOAD2]])
2122
// CHECK: [[LOAD3:%[0-9]+]] = load [[ARG1]] : $*Builtin.NativeObject
22-
// CHECK: strong_retain [[LOAD3]]
2323
// CHECK: apply {{%[0-9]+}}([[LOAD3]])
2424
// CHECK: [[LOAD4:%[0-9]+]] = load [[ARG2]] : $*Builtin.Int32
2525
// CHECK: apply {{%[0-9]+}}([[LOAD4]])
@@ -28,10 +28,10 @@ bb0(%0 : $*Builtin.NativeObject, %1 : $*Builtin.Int32):
2828
%use_native_object_func = function_ref @use_native_object : $@convention(thin) (@owned Builtin.NativeObject) -> ()
2929
%use_int32_func = function_ref @use_int32 : $@convention(thin) (Builtin.Int32) -> ()
3030

31-
%3 = load [take] %0 : $*Builtin.NativeObject
31+
%3 = load [copy] %0 : $*Builtin.NativeObject
3232
apply %use_native_object_func(%3) : $@convention(thin) (@owned Builtin.NativeObject) -> ()
3333

34-
%4 = load [copy] %0 : $*Builtin.NativeObject
34+
%4 = load [take] %0 : $*Builtin.NativeObject
3535
apply %use_native_object_func(%4) : $@convention(thin) (@owned Builtin.NativeObject) -> ()
3636

3737
%5 = load [trivial] %1 : $*Builtin.Int32
@@ -41,7 +41,7 @@ bb0(%0 : $*Builtin.NativeObject, %1 : $*Builtin.Int32):
4141
return %9999 : $()
4242
}
4343

44-
// CHECK-LABEL: sil @store : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject, @in Builtin.Int32, Builtin.Int32) -> ()
44+
// CHECK-LABEL: sil @store : $@convention(thin) (Builtin.NativeObject, @in Builtin.Int32, Builtin.Int32) -> @out Builtin.NativeObject {
4545
// CHECK: bb0([[ARG1:%[0-9]+]] : $*Builtin.NativeObject, [[ARG2:%[0-9]+]] : $Builtin.NativeObject, [[ARG3:%[0-9]+]] : $*Builtin.Int32, [[ARG4:%[0-9]+]] : $Builtin.Int32):
4646
// CHECK: strong_retain [[ARG2]]
4747
// CHECK: strong_retain [[ARG2]]
@@ -50,7 +50,7 @@ bb0(%0 : $*Builtin.NativeObject, %1 : $*Builtin.Int32):
5050
// CHECK: store [[ARG2]] to [[ARG1]] : $*Builtin.NativeObject
5151
// CHECK: strong_release [[OLDVAL]]
5252
// CHECK: store [[ARG4]] to [[ARG3]] : $*Builtin.Int32
53-
sil [ossa] @store : $@convention(thin) (@in Builtin.NativeObject, Builtin.NativeObject, @in Builtin.Int32, Builtin.Int32) -> () {
53+
sil [ossa] @store : $@convention(thin) (Builtin.NativeObject, @in Builtin.Int32, Builtin.Int32) -> @out Builtin.NativeObject {
5454
bb0(%0 : $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject, %2 : $*Builtin.Int32, %3 : $Builtin.Int32):
5555
%4 = copy_value %1 : $Builtin.NativeObject
5656
%5 = copy_value %1 : $Builtin.NativeObject
@@ -61,12 +61,12 @@ bb0(%0 : $*Builtin.NativeObject, %1 : @unowned $Builtin.NativeObject, %2 : $*Bui
6161
return %9999 : $()
6262
}
6363

64-
// CHECK-LABEL: sil @borrow : $@convention(thin) (@in Builtin.NativeObject) -> () {
64+
// CHECK-LABEL: sil @borrow : $@convention(thin) (@in_guaranteed Builtin.NativeObject) -> () {
6565
// CHECK: bb0([[ARG:%[0-9]+]] : $*Builtin.NativeObject):
6666
// CHECK: [[BORROWED_VALUE:%[0-9]+]] = load [[ARG]] : $*Builtin.NativeObject
6767
// CHECK: unchecked_ref_cast [[BORROWED_VALUE]]
6868
// CHECK-NOT: end_borrow
69-
sil [ossa] @borrow : $@convention(thin) (@in Builtin.NativeObject) -> () {
69+
sil [ossa] @borrow : $@convention(thin) (@in_guaranteed Builtin.NativeObject) -> () {
7070
bb0(%0 : $*Builtin.NativeObject):
7171
%1 = load_borrow %0 : $*Builtin.NativeObject
7272
%2 = unchecked_ref_cast %1 : $Builtin.NativeObject to $Builtin.NativeObject

test/SILOptimizer/predictable_deadalloc_elim_ownership.sil

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ bb1:
242242
br bb3
243243

244244
bb2:
245+
destroy_addr %1 : $*Builtin.NativeObject
245246
br bb3
246247

247248
bb3:
@@ -273,6 +274,7 @@ bb1:
273274
br bb3
274275

275276
bb2:
277+
destroy_addr %1 : $*Builtin.NativeObject
276278
br bb3
277279

278280
bb3:

test/SILOptimizer/raw_sil_inst_lowering.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ bb0(%0 : $*SomeClass, %1 : @owned $SomeClass):
3636
}
3737

3838
// CHECK-LABEL: sil [ossa] @non_box_assign_init
39-
sil [ossa] @non_box_assign_init : $@convention(thin) (@inout SomeClass, @owned SomeClass) -> () {
39+
sil [ossa] @non_box_assign_init : $@convention(thin) (@owned SomeClass) -> @out SomeClass {
4040
bb0(%0 : $*SomeClass, %1 : @owned $SomeClass):
4141
// Explicitly check that assign [init] is treated as store [init]
4242
//

0 commit comments

Comments
 (0)