1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
// First parse this and then emit a *.sib. Then read in the *.sib, then recreate
// RUN: %empty-directory(%t)
// RUN: %target-sil-opt %s -emit-sib -o %t/tmp.sib -module-name ownershipflags
// RUN: %target-sil-opt %t/tmp.sib -module-name ownershipflags | %FileCheck %s
sil_stage canonical
import Builtin
class Klass {}
// CHECK-LABEL: sil [serialized] [ossa] @test_movevalue_escaping :
// CHECK: %1 = move_value [pointer_escape] %0 : $Klass
// CHECK-LABEL: } // end sil function 'test_movevalue_escaping'
sil [serialized] [ossa] @test_movevalue_escaping : $@convention(thin) (@owned Klass) -> @owned Klass {
bb0(%0 : @owned $Klass):
%1 = move_value [pointer_escape] %0 : $Klass
%2 = unchecked_bitwise_cast %1 : $Klass to $Builtin.Int64
return %1 : $Klass
}
// CHECK-LABEL: sil [serialized] [ossa] @test_allocbox_escaping :
// CHECK: %0 = alloc_box [pointer_escape] ${ var Klass }
// CHECK-LABEL: } // end sil function 'test_allocbox_escaping'
sil [serialized] [ossa] @test_allocbox_escaping : $@convention(thin) () -> () {
bb0:
%0 = alloc_box [pointer_escape] ${ var Klass }
dealloc_box %0 : ${ var Klass }
%9999 = tuple()
return %9999 : $()
}
// CHECK-LABEL: sil [serialized] [ossa] @test_beginborrow_escaping :
// CHECK: %1 = begin_borrow [pointer_escape] %0 : $Klass
// CHECK-LABEL: } // end sil function 'test_beginborrow_escaping'
sil [serialized] [ossa] @test_beginborrow_escaping : $@convention(thin) (@owned Klass) -> () {
bb0(%0 : @owned $Klass):
%1 = begin_borrow [pointer_escape] %0 : $Klass
%2 = unchecked_bitwise_cast %1 : $Klass to $Builtin.Int64
end_borrow %1 : $Klass
destroy_value %0 : $Klass
%t = tuple ()
return %t : $()
}
// CHECK-LABEL: sil [serialized] [ossa] @test_reborrow : $@convention(thin) (@owned Klass) -> () {
// CHECK: bb3([[ARG:%.*]] : @reborrow @guaranteed $Klass):
// CHECK: } // end sil function 'test_reborrow'
sil [serialized] [ossa] @test_reborrow : $@convention(thin) (@owned Klass) -> () {
bb0(%0 : @owned $Klass):
cond_br undef, bb1, bb2
bb1:
%b1 = begin_borrow %0 : $Klass
br bb3(%b1 : $Klass)
bb2:
%b2 = begin_borrow %0 : $Klass
br bb3(%b2 : $Klass)
bb3(%r : @reborrow @guaranteed $Klass):
end_borrow %r : $Klass
destroy_value %0 : $Klass
%9999 = tuple()
return %9999 : $()
}
|