From b40b711f54748145ed1340f2a3aa626dcb42b699 Mon Sep 17 00:00:00 2001 From: Sai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com> Date: Fri, 21 Jul 2023 16:28:22 -0400 Subject: Fix data-flow analysis not propagating diff property through differentiable calls (#3010) * Add test for nodiff diagnostic for non-diff call propagated through diff call * Add logic to disambiguate calls to differentiable and non-differentiable methods * Add expected results for test * Simplify test * Update slang-ir-check-differentiability.cpp * Added comments for TreatAsDifferentiableExpr flavors --------- Co-authored-by: Yong He --- source/slang/slang-check-expr.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source/slang/slang-check-expr.cpp') diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp index 76af3694f..3c90c3ed8 100644 --- a/source/slang/slang-check-expr.cpp +++ b/source/slang/slang-check-expr.cpp @@ -2265,6 +2265,7 @@ namespace Slang { maybeRegisterDifferentiableType(m_astBuilder, arg->type.type); } + if (auto calleeExpr = as(checkedInvokeExpr->functionExpr)) { if (auto calleeDecl = as(calleeExpr->declRef.getDecl())) @@ -2279,6 +2280,7 @@ namespace Slang newFuncExpr->type = checkedInvokeExpr->type; newFuncExpr->innerExpr = checkedInvokeExpr; newFuncExpr->loc = checkedInvokeExpr->loc; + newFuncExpr->flavor = TreatAsDifferentiableExpr::Flavor::Differentiable; checkedExpr = newFuncExpr; } else -- cgit v1.2.3