mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +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.
26 lines
1.1 KiB
Swift
26 lines
1.1 KiB
Swift
// RUN: %target-swift-emit-silgen -Xllvm -sil-print-types %s | %FileCheck %s
|
|
// RUN: %target-swift-emit-sil -Xllvm -sil-print-types %s -verify
|
|
|
|
struct NC : ~Copyable {}
|
|
|
|
func loadClosure(_ umrp: UnsafeMutableRawPointer) {
|
|
typealias Enumerator = (borrowing NC) -> Void
|
|
let body = umrp.load(as: Enumerator.self)
|
|
_ = body
|
|
}
|
|
|
|
// CHECK-LABEL: sil {{.*}} @$s13rdar1287100642NCVytIegnr_ACIegg_TR : {{.*}} {
|
|
// CHECK: bb0(
|
|
// CHECK-SAME: [[NC:%[^,]+]] :
|
|
// CHECK-SAME: , [[CLOSURE:%[^,]+]] :
|
|
// CHECK-SAME: ):
|
|
// CHECK: [[NC_INDIRECT_ADDR:%[^,]+]] = alloc_stack $NC
|
|
// CHECK: [[NC_INDIRECT_CHECK:%[^,]+]] = mark_unresolved_non_copyable_value [consumable_and_assignable] [[NC_INDIRECT_ADDR]]
|
|
// CHECK: [[NC_INDIRECT:%[^,]+]] = store_borrow [[NC]] to [[NC_INDIRECT_CHECK]]
|
|
// CHECK: [[OUT:%[^,]+]] = alloc_stack $()
|
|
// CHECK: apply [[CLOSURE]]([[OUT]], [[NC_INDIRECT]])
|
|
// CHECK: dealloc_stack [[OUT]] : $*()
|
|
// CHECK: end_borrow [[NC_INDIRECT]]
|
|
// CHECK: dealloc_stack [[NC_INDIRECT_ADDR]]
|
|
// CHECK-LABEL: } // end sil function '$s13rdar1287100642NCVytIegnr_ACIegg_TR'
|