diff options
Diffstat (limited to 'source/slang/slang-ir-specialize-target-switch.cpp')
| -rw-r--r-- | source/slang/slang-ir-specialize-target-switch.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/source/slang/slang-ir-specialize-target-switch.cpp b/source/slang/slang-ir-specialize-target-switch.cpp index 46ea51192..e3ef06e18 100644 --- a/source/slang/slang-ir-specialize-target-switch.cpp +++ b/source/slang/slang-ir-specialize-target-switch.cpp @@ -9,6 +9,16 @@ namespace Slang { void specializeTargetSwitch(TargetRequest* target, IRGlobalValueWithCode* code, DiagnosticSink* sink) { + if (auto gen = as<IRGeneric>(code)) + { + auto retVal = findGenericReturnVal(gen); + if (auto innerCode = as<IRGlobalValueWithCode>(retVal)) + { + specializeTargetSwitch(target, innerCode, sink); + return; + } + } + bool changed = false; for (auto block : code->getBlocks()) { @@ -76,14 +86,6 @@ namespace Slang if (auto code = as<IRGlobalValueWithCode>(globalInst)) { specializeTargetSwitch(target, code, sink); - if (auto gen = as<IRGeneric>(code)) - { - auto retVal = findGenericReturnVal(gen); - if (auto innerCode = as<IRGlobalValueWithCode>(retVal)) - { - specializeTargetSwitch(target, innerCode, sink); - } - } } } } |
