summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-specialize.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-specialize.cpp')
-rw-r--r--source/slang/slang-ir-specialize.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/source/slang/slang-ir-specialize.cpp b/source/slang/slang-ir-specialize.cpp
index 747d0ccdd..cf7acd46c 100644
--- a/source/slang/slang-ir-specialize.cpp
+++ b/source/slang/slang-ir-specialize.cpp
@@ -392,13 +392,14 @@ struct SpecializationContext
{
for (auto decor : genericReturnVal->getDecorations())
{
+ bool specialized = false;
if (decor->getOp() == kIROp_ForwardDerivativeDecoration ||
decor->getOp() == kIROp_UserDefinedBackwardDerivativeDecoration)
{
// If we already have a diff func on this specialize, skip.
if (auto specDiffRef = specInst->findDecorationImpl(decor->getOp()))
{
- return false;
+ continue;
}
auto specDiffFunc = as<IRSpecialize>(decor->getOperand(0));
@@ -443,8 +444,10 @@ struct SpecializationContext
builder.addDecoration(specInst, decor->getOp(), newDiffFunc);
- return true;
+ specialized = true;
}
+ if (specialized)
+ return true;
}
}
return false;