summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-autodiff.cpp
diff options
context:
space:
mode:
authorSai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com>2023-05-06 03:03:25 -0400
committerGitHub <noreply@github.com>2023-05-06 00:03:25 -0700
commit271dc1b98d3887b6297c5407dc67692716687f4d (patch)
treea714a41f6a490000545e82cadd20561a020b0a1e /source/slang/slang-ir-autodiff.cpp
parent0602eaaba32bdbaf3f99ab8987e97419cba395aa (diff)
Don't store loop induction values + fix minor issue (#2872)
Diffstat (limited to 'source/slang/slang-ir-autodiff.cpp')
-rw-r--r--source/slang/slang-ir-autodiff.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/source/slang/slang-ir-autodiff.cpp b/source/slang/slang-ir-autodiff.cpp
index f6a977994..6d56736ad 100644
--- a/source/slang/slang-ir-autodiff.cpp
+++ b/source/slang/slang-ir-autodiff.cpp
@@ -1909,7 +1909,7 @@ IRUse* findUniqueStoredVal(IRVar* var)
// the final value to it, this method will return the call inst for this case.
IRUse* findLatestUniqueWriteUse(IRVar* var)
{
- IRUse* storeUse = nullptr;
+ IRUse* callUse = nullptr;
for (auto use = var->firstUse; use; use = use->nextUse)
{
if (const auto callInst = as<IRCall>(use->getUser()))
@@ -1917,10 +1917,14 @@ IRUse* findLatestUniqueWriteUse(IRVar* var)
// Ignore uses from differential blocks.
if (callInst->getParent()->findDecoration<IRDifferentialInstDecoration>())
continue;
- SLANG_RELEASE_ASSERT(!storeUse);
- storeUse = use;
+ SLANG_RELEASE_ASSERT(!callUse);
+ callUse = use;
}
}
+
+ if (callUse)
+ return callUse;
+
// If no unique call found, try to look for a store.
return findUniqueStoredVal(var);
}