Skip to content

Commit ca0ad84

Browse files
committed
Add a new test case in sil_combine_ossa.sil
To test finding transitive address uses
1 parent a336bcd commit ca0ad84

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

test/SILOptimizer/sil_combine_ossa.sil

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,21 @@ struct NativeObjectStruct {
6161
var ele : Builtin.NativeObject
6262
}
6363

64+
struct MyContiguousArrayBody {
65+
@_hasStorage var count: Builtin.Int64 { get }
66+
init(count: Builtin.Int64)
67+
}
68+
69+
class MyContiguousArrayStorage {
70+
@_hasStorage var body: MyContiguousArrayBody { get }
71+
@objc deinit
72+
}
73+
74+
struct MyContiguousArray {
75+
@_hasStorage var storage: MyContiguousArrayStorage { get set }
76+
init(storage: MyContiguousArrayStorage)
77+
}
78+
6479
sil [global_init] @global_init_fun : $@convention(thin) () -> Builtin.RawPointer
6580

6681
sil [ossa] @user : $@convention(thin) (@owned Builtin.NativeObject) -> ()
@@ -5123,3 +5138,20 @@ bb0(%0 : @owned $Klass, %1 : @owned $Klass):
51235138
return %7 : $()
51245139
}
51255140

5141+
// CHECK-LABEL: sil [ossa] @testTransitiveAddressUse : $@convention(thin) (Builtin.Int64, @owned MyContiguousArrayStorage) -> () {
5142+
// CHECK: [[VAL:%.*]] = struct $MyContiguousArrayBody (%0 : $Builtin.Int64)
5143+
// CHECK: store [[VAL]] to [trivial] %{{.*}} : $*MyContiguousArrayBody
5144+
// CHECK-LABEL: } // end sil function 'testTransitiveAddressUse'
5145+
sil [ossa] @testTransitiveAddressUse : $@convention(thin) (Builtin.Int64, @owned MyContiguousArrayStorage) -> () {
5146+
bb0(%0 : $Builtin.Int64, %1 : @owned $MyContiguousArrayStorage):
5147+
%2 = struct $MyContiguousArray (%1 : $MyContiguousArrayStorage)
5148+
%3 = begin_borrow %2 : $MyContiguousArray
5149+
%4 = struct_extract %3 : $MyContiguousArray, #MyContiguousArray.storage
5150+
%5 = ref_element_addr %4 : $MyContiguousArrayStorage, #MyContiguousArrayStorage.body
5151+
%6 = struct_element_addr %5 : $*MyContiguousArrayBody, #MyContiguousArrayBody.count
5152+
store %0 to [trivial] %6 : $*Builtin.Int64
5153+
end_borrow %3 : $MyContiguousArray
5154+
destroy_value %2 : $MyContiguousArray
5155+
%10 = tuple ()
5156+
return %10 : $()
5157+
}

0 commit comments

Comments
 (0)