blob: d567fb3566c7632e4c106fbd1732a62abc7a0536 [file] [log] [blame]
// RUN: not --crash %target-swift-emit-ir -primary-file %s
// REQUIRES: asserts
// TF-756: IRGen crash for `witness_method` instruction generated by the
// differentiation transform.
struct Tensor<Scalar> {}
extension Tensor: Differentiable where Scalar == Float {}
extension Tensor where Scalar == Float {
// Arbitrary `@differentiable` operation with >1 parameter, so that index
// subset thunk may be generated.
@differentiable
static func + (_ lhs: Tensor, _ rhs: Tensor) -> Tensor {
return lhs
}
@derivative(of: +)
static func _vjpAdd(lhs: Tensor, rhs: Tensor)
-> (value: Tensor, pullback: (TangentVector) -> (TangentVector, TangentVector)) {
return (lhs + rhs, { v in (v, v) })
}
}
@differentiable
func TF_756(input: Tensor<Float>) -> Tensor<Float> {
let other = Tensor<Float>()
return other + input
}
// Assertion failed: (!type->hasArchetype() && !type->hasTypeParameter()), function getAddrOfTypeMetadataAccessFunction, file /Users/danielzheng/swift-merge/swift/lib/IRGen/GenDecl.cpp, line 3352.
// Stack dump:
// ...
// 1. Swift version 5.1.1-dev (Swift 3943c1e36b)
// 2. While emitting IR SIL function "@AD__$s4main6TensorVAASfRszlE13TangentVectorVySf_GA2FIegyyd_A2FIegyd_TR_src_0_wrt_1_differential_index_subset_thunk".
// for expression at [/Users/danielzheng/swift-merge/swift/test/AutoDiff/compiler_crashers/tf756-irgen-witness-method-archetype.swift:27:16 - line:27:16] RangeText=""