@@ -1010,3 +1010,26 @@ bb0:
10101010 return %t : $()
10111011}
10121012
1013+ // CHECK-LABEL: sil [ossa] @test_aggreate_tail_addr :
1014+ // CHECK: ref_tail_addr
1015+ // CHECK: ref_tail_addr
1016+ // CHECK-LABEL: } // end sil function 'test_aggreate_tail_addr'
1017+ sil [ossa] @test_aggreate_tail_addr : $@convention(thin) (@owned _NativeDictionary<Int, Klass>) -> () {
1018+ bb0(%0 : @owned $_NativeDictionary<Int, Klass>):
1019+ %1 = move_value [lexical] %0 : $_NativeDictionary<Int, Klass>
1020+ %2 = begin_borrow %1 : $_NativeDictionary<Int, Klass>
1021+ %3 = struct_extract %2 : $_NativeDictionary<Int, Klass>, #_NativeDictionary._storage
1022+ %4 = copy_value %3 : $__RawDictionaryStorage
1023+ %5 = ref_tail_addr %3 : $__RawDictionaryStorage, $_UnsafeBitset.Word
1024+ %6 = load [trivial] %5 : $*_UnsafeBitset.Word
1025+ end_borrow %2 : $_NativeDictionary<Int, Klass>
1026+ %8 = begin_borrow %4 : $__RawDictionaryStorage
1027+ %9 = ref_tail_addr %8 : $__RawDictionaryStorage, $_UnsafeBitset.Word
1028+ %10 = struct_element_addr %9 : $*_UnsafeBitset.Word, #_UnsafeBitset.Word.value
1029+ %11 = struct_element_addr %10 : $*UInt, #UInt._value
1030+ %12 = load [trivial] %11 : $*Builtin.Int64
1031+ end_borrow %8 : $__RawDictionaryStorage
1032+ destroy_value %4 : $__RawDictionaryStorage
1033+ destroy_value %1 : $_NativeDictionary<Int, Klass>
1034+ unreachable
1035+ }
0 commit comments