Files
swift-mirror/test/SIL/Serialization/ownershipflags.sil
Erik Eckstein 7cceaff5f3 SIL: don't print operand types in textual SIL
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.
2024-11-21 18:49:52 +01:00

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 : $()
}