From b8663a5d93e6e73d5e2d7e737cffd1efac055719 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 29 Jul 2025 19:26:52 -0700 Subject: Fix ICE when immutable value is passed to a bwd_diff function. (#7973) --- tests/diagnostics/lvalue-in-bwd-diff.slang | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tests/diagnostics/lvalue-in-bwd-diff.slang (limited to 'tests/diagnostics/lvalue-in-bwd-diff.slang') diff --git a/tests/diagnostics/lvalue-in-bwd-diff.slang b/tests/diagnostics/lvalue-in-bwd-diff.slang new file mode 100644 index 000000000..2e12bf5c0 --- /dev/null +++ b/tests/diagnostics/lvalue-in-bwd-diff.slang @@ -0,0 +1,23 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv +[Differentiable] +float square(float x, float y) +{ + return x * x + y * y; +} + +void main() +{ + // Forward mode differentiation + let x = diffPair(3.0, 1.0); // x = 3, 𝜕x/𝜕𝛉 = 1 + let y = diffPair(4.0, 1.0); // y = 4, 𝜕y/𝜕𝛄 = 1 + let result = fwd_diff(square)(x, y); + printf("dResult: %f\n", result.d); + + // Backward mode differentiation + let dLdSquare = 1.0f; + // CHECK-NOT: error 30049 + // CHECK: error 30047 + // CHECK-NOT: error 30049 + bwd_diff(square)(x, y, dLdSquare); + printf("dL/dx: %f, dL/dy: %f\n", x.d, y.d); +} -- cgit v1.2.3