From c40fba44974d7fd88896a69fe7de0c730858ab8e Mon Sep 17 00:00:00 2001 From: Dan Zheng Date: Sat, 9 May 2020 19:07:52 +0000 Subject: [PATCH] [AutoDiff] Add SR-12744 negative test. Add negative test for SR-12744: pullback generation crash for unhandled indirect result. --- ...4-unhandled-pullback-indirect-result.swift | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 test/AutoDiff/compiler_crashers/sr12744-unhandled-pullback-indirect-result.swift diff --git a/test/AutoDiff/compiler_crashers/sr12744-unhandled-pullback-indirect-result.swift b/test/AutoDiff/compiler_crashers/sr12744-unhandled-pullback-indirect-result.swift new file mode 100644 index 0000000000000..24f38b4c6d3f0 --- /dev/null +++ b/test/AutoDiff/compiler_crashers/sr12744-unhandled-pullback-indirect-result.swift @@ -0,0 +1,19 @@ +// RUN: not --crash %target-swift-frontend -emit-sil -verify %s +// REQUIRES: asserts + +// SR-12744: Pullback generation crash for unhandled indirect result. +// May be due to inconsistent derivative function type calculation logic in +// `VJPEmitter::createEmptyPullback`. + +import _Differentiation + +class Class: Differentiable { + @differentiable(wrt: (self, x)) + @differentiable(wrt: x) + func f(_ x: Float) -> Float { x } +} + +func test(_ c: C, _ x: Float) { + _ = gradient(at: c, x) { c, x in c.f(x) } + _ = gradient(at: x) { x in c.f(x) } +}