summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorSai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com>2024-09-26 00:10:45 -0400
committerGitHub <noreply@github.com>2024-09-26 00:10:45 -0400
commit7398e1e09312ed4e19195e060de9a2c9a073fcc1 (patch)
treed5622ffa3095e156f9ada816146d260137145cfd /source
parentd752482c9223eef8deebb0d8f0b13ce9679781c4 (diff)
Always run AD cleanup pass. (#5157)
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-emit.cpp10
-rw-r--r--source/slang/slang-ir-autodiff.cpp2
2 files changed, 6 insertions, 6 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp
index 71ef7ee33..a29142ba1 100644
--- a/source/slang/slang-emit.cpp
+++ b/source/slang/slang-emit.cpp
@@ -834,12 +834,10 @@ Result linkAndOptimizeIR(
if (codeGenContext->shouldReportCheckpointIntermediates())
reportCheckpointIntermediates(codeGenContext, sink, irModule);
- if (requiredLoweringPassSet.autodiff)
- finalizeAutoDiffPass(targetProgram, irModule);
-
- // Remove auto-diff related decorations.
- // We may have an autodiff decoration regardless of if autodiff is being used.
- stripAutoDiffDecorations(irModule);
+ // Finalization is always run so AD-related instructions can be removed,
+ // even the AD pass itself is not run.
+ //
+ finalizeAutoDiffPass(targetProgram, irModule);
finalizeSpecialization(irModule);
diff --git a/source/slang/slang-ir-autodiff.cpp b/source/slang/slang-ir-autodiff.cpp
index 94a605a68..6c729ea63 100644
--- a/source/slang/slang-ir-autodiff.cpp
+++ b/source/slang/slang-ir-autodiff.cpp
@@ -2559,6 +2559,8 @@ bool finalizeAutoDiffPass(TargetProgram* target, IRModule* module)
stripNoDiffTypeAttribute(module);
+ stripAutoDiffDecorations(module);
+
return modified;
}