summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-expr.cpp
diff options
context:
space:
mode:
authorSai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com>2023-07-21 16:28:22 -0400
committerGitHub <noreply@github.com>2023-07-21 13:28:22 -0700
commitb40b711f54748145ed1340f2a3aa626dcb42b699 (patch)
tree5c63286c13d55c79b4f21f899e8e338393049f8f /source/slang/slang-check-expr.cpp
parent32043a48b6503fe3e493082c33eac02865503031 (diff)
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 <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-check-expr.cpp')
-rw-r--r--source/slang/slang-check-expr.cpp2
1 files changed, 2 insertions, 0 deletions
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<DeclRefExpr>(checkedInvokeExpr->functionExpr))
{
if (auto calleeDecl = as<FunctionDeclBase>(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