diff options
| author | Yong He <yonghe@outlook.com> | 2020-07-15 11:39:11 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-15 11:39:11 -0700 |
| commit | e9d5ecbf19147af6e1473020b64ced4286b79079 (patch) | |
| tree | 93413fe8490cea74e36f45678ad720d92d2b5e3e /source/slang/slang-lower-to-ir.cpp | |
| parent | 723c9b1b3607ba910abbeb72f4f13bdff3cbd502 (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.cpp | 23 |
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); |
