mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Type annotations for instruction operands are omitted, e.g. ``` %3 = struct $S(%1, %2) ``` Operand types are redundant anyway and were only used for sanity checking in the SIL parser. But: operand types _are_ printed if the definition of the operand value was not printed yet. This happens: * if the block with the definition appears after the block where the operand's instruction is located * if a block or instruction is printed in isolation, e.g. in a debugger The old behavior can be restored with `-Xllvm -sil-print-types`. This option is added to many existing test files which check for operand types in their check-lines.
69 lines
2.3 KiB
Plaintext
69 lines
2.3 KiB
Plaintext
// First parse this and then emit a *.sib. Then read in the *.sib, then recreate
|
|
|
|
// RUN: %empty-directory(%t)
|
|
// RUN: %target-sil-opt -sil-print-types %s -emit-sib -o %t/tmp.sib -module-name ownershipflags
|
|
// RUN: %target-sil-opt -sil-print-types %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 $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 $Klass):
|
|
%rf = borrowed %r : $Klass from (%0 : $Klass)
|
|
end_borrow %rf : $Klass
|
|
destroy_value %0 : $Klass
|
|
%9999 = tuple()
|
|
return %9999 : $()
|
|
}
|