summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-autodiff-unzip.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-04-27 14:30:36 -0700
committerGitHub <noreply@github.com>2023-04-27 14:30:36 -0700
commitd1cc6a8c1e5b378ea34dc4006045bcbd37e0dfd3 (patch)
tree6c4771a8bc91414b38e77c7ef79e5151c66d23b1 /source/slang/slang-ir-autodiff-unzip.cpp
parent7be108c379ccc7da3f46b30a2b5917104155d52b (diff)
Prevent storing loads of global parameters. (#2850)
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-ir-autodiff-unzip.cpp')
-rw-r--r--source/slang/slang-ir-autodiff-unzip.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/source/slang/slang-ir-autodiff-unzip.cpp b/source/slang/slang-ir-autodiff-unzip.cpp
index 60d829324..1b14856e6 100644
--- a/source/slang/slang-ir-autodiff-unzip.cpp
+++ b/source/slang/slang-ir-autodiff-unzip.cpp
@@ -408,7 +408,11 @@ IRFunc* DiffUnzipPass::extractPrimalFunc(
// in a primal block.
while (auto iuse = inst->firstUse)
{
- builder.setInsertBefore(iuse->getUser());
+ auto user = iuse->getUser();
+ if (as<IRDecoration>(user))
+ user = user->getParent();
+ if (!user) continue;
+ builder.setInsertBefore(user);
auto val = builder.emitFieldExtract(
inst->getFullType(),
intermediateVar,