From e9d5ecbf19147af6e1473020b64ced4286b79079 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 15 Jul 2020 11:39:11 -0700 Subject: Refactor lower-generics pass into separate subpasses. (#1442) --- source/slang/slang-lower-to-ir.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'source/slang/slang-lower-to-ir.cpp') 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 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); -- cgit v1.2.3