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.
34 lines
1.1 KiB
Swift
34 lines
1.1 KiB
Swift
// RUN: %target-swift-frontend -Xllvm -sil-print-types -emit-sil %s | %FileCheck %s
|
|
|
|
// Verify the result type of a subset parameters thunk matches the declaration:
|
|
//
|
|
// CHECK: // autodiff subset parameters thunk for forward-mode derivative from f(x:)
|
|
// CHECK-NEXT: sil shared [transparent] [thunk] @$s17param_thunk_tuple{{.*}} : $@convention(thin) (X)
|
|
// CHECK-SAME: -> (Float, Double, @owned @callee_guaranteed (X.TangentVector) -> Float)
|
|
// CHECK: return
|
|
// CHECK-SAME: %{{.*}} : $(Float, Double, @callee_guaranteed (X.TangentVector) -> Float)
|
|
//
|
|
// CHECK: // autodiff subset parameters thunk for reverse-mode derivative from f(x:)
|
|
// CHECK-NEXT: sil shared [transparent] [thunk] @$s17param_thunk_tuple{{.*}} : $@convention(thin) (X)
|
|
// CHECK-SAME: -> (Float, Double, @owned @callee_guaranteed (Float) -> X.TangentVector)
|
|
// CHECK: return
|
|
// CHECK-SAME: %{{.*}} : $(Float, Double, @callee_guaranteed (Float) -> X.TangentVector)
|
|
|
|
import _Differentiation
|
|
|
|
struct X: Differentiable {
|
|
var a: Float
|
|
var b: Double
|
|
}
|
|
|
|
@differentiable(reverse)
|
|
func f(x: X) -> (Float, Double) {
|
|
(x.a, x.b)
|
|
}
|
|
|
|
@differentiable(reverse)
|
|
func g1(x: X) -> Float {
|
|
f(x: x).0
|
|
}
|
|
|