summaryrefslogtreecommitdiff
path: root/source/slang/slang-lower-to-ir.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2020-07-15 11:39:11 -0700
committerGitHub <noreply@github.com>2020-07-15 11:39:11 -0700
commite9d5ecbf19147af6e1473020b64ced4286b79079 (patch)
tree93413fe8490cea74e36f45678ad720d92d2b5e3e /source/slang/slang-lower-to-ir.cpp
parent723c9b1b3607ba910abbeb72f4f13bdff3cbd502 (diff)
Refactor lower-generics pass into separate subpasses. (#1442)
Diffstat (limited to 'source/slang/slang-lower-to-ir.cpp')
-rw-r--r--source/slang/slang-lower-to-ir.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/source/slang/slang-lower-to-ir.cpp b/source/slang/slang-lower-to-ir.cpp
index cfed09dd0..175f9264f 100644
--- a/source/slang/slang-lower-to-ir.cpp
+++ b/source/slang/slang-lower-to-ir.cpp
@@ -5863,21 +5863,22 @@ struct DeclLoweringVisitor : DeclVisitor<DeclLoweringVisitor, LoweredValInfo>
IRInst* requirementVal = lowerDecl(subContext, requirementDecl).val;
if (requirementVal)
{
- auto reqType = requirementVal->getFullType();
- entry->setRequirementVal(reqType);
- if (!requirementVal->hasUses())
+ switch (requirementVal->op)
+ {
+ case kIROp_Func:
+ case kIROp_Generic:
{
// Remove lowered `IRFunc`s since we only care about
// function types.
- switch (requirementVal->op)
- {
- case kIROp_Func:
- case kIROp_Generic:
+ auto reqType = requirementVal->getFullType();
+ entry->setRequirementVal(reqType);
+ if (!requirementVal->hasUses())
requirementVal->removeAndDeallocate();
- break;
- default:
- break;
- }
+ break;
+ }
+ default:
+ entry->setRequirementVal(requirementVal);
+ break;
}
}
irInterface->setOperand(entryIndex, entry);