Files
swift-mirror/test/SIL/Serialization/basic2_moveonly.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

40 lines
1.5 KiB
Plaintext

// RUN: %empty-directory(%t)
// RUN: %target-sil-opt -sil-print-types %s -emit-sib -o %t/tmp.sib -module-name basic2
// RUN: %target-sil-opt -sil-print-types %t/tmp.sib -o %t/tmp.2.sib -module-name basic2
// RUN: %target-sil-opt -sil-print-types %t/tmp.2.sib -module-name basic2 -emit-sorted-sil | %FileCheck %s
// Once move only is no longer behind a feature flag, merge this into basic2.
sil_stage raw
import Swift
class Klass {}
struct MoveOnlyPair: ~Copyable {
var lhs: Klass
var rhs: Klass
}
// CHECK-LABEL: sil [ossa] @testMarkUnresolvedNonCopyableValueInst : $@convention(thin) (@guaranteed Klass) -> () {
// CHECK: mark_unresolved_non_copyable_value [consumable_and_assignable] %{{[0-9]+}} : $*MoveOnlyPair
// CHECK: } // end sil function 'testMarkUnresolvedNonCopyableValueInst'
sil [ossa] @testMarkUnresolvedNonCopyableValueInst : $@convention(thin) (@guaranteed Klass) -> () {
bb0(%0 : @guaranteed $Klass):
%1 = alloc_box ${ var MoveOnlyPair }
%2 = project_box %1 : ${ var MoveOnlyPair }, 0
%3 = mark_unresolved_non_copyable_value [consumable_and_assignable] %2 : $*MoveOnlyPair
%3c = begin_access [modify] [static] %3 : $*MoveOnlyPair
%3a = struct_element_addr %3c : $*MoveOnlyPair, #MoveOnlyPair.lhs
%3b = struct_element_addr %3c : $*MoveOnlyPair, #MoveOnlyPair.rhs
%0a = copy_value %0 : $Klass
%0b = copy_value %0 : $Klass
store %0a to [init] %3a : $*Klass
store %0b to [init] %3b : $*Klass
end_access %3c : $*MoveOnlyPair
destroy_value %1 : ${ var MoveOnlyPair }
%9999 = tuple()
return %9999 : $()
}