diff options
Diffstat (limited to 'source/slang/slang-emit.cpp')
| -rw-r--r-- | source/slang/slang-emit.cpp | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp index 3ec03d0e7..11e0812d9 100644 --- a/source/slang/slang-emit.cpp +++ b/source/slang/slang-emit.cpp @@ -212,22 +212,6 @@ Result linkAndOptimizeIR( // un-specialized IR. dumpIRIfEnabled(codeGenContext, irModule); - switch (target) - { - case CodeGenTarget::CPPSource: - case CodeGenTarget::HostCPPSource: - { - lowerComInterfaces(irModule, artifactDesc.style, sink); - generateDllImportFuncs(codeGenContext->getTargetReq(), irModule, sink); - generateDllExportFuncs(irModule, sink); - break; - } - default: break; - } - - // Lower `Result<T,E>` types into ordinary struct types. - lowerResultType(irModule, sink); - // Replace any global constants with their values. // replaceGlobalConstants(irModule); @@ -323,6 +307,24 @@ Result linkAndOptimizeIR( break; } + lowerOptionalType(irModule, sink); + simplifyIR(irModule); + + switch (target) + { + case CodeGenTarget::CPPSource: + case CodeGenTarget::HostCPPSource: + { + lowerComInterfaces(irModule, artifactDesc.style, sink); + generateDllImportFuncs(codeGenContext->getTargetReq(), irModule, sink); + generateDllExportFuncs(irModule, sink); + break; + } + default: break; + } + + // Lower `Result<T,E>` types into ordinary struct types. + lowerResultType(irModule, sink); // Desguar any union types, since these will be illegal on // various targets. @@ -393,8 +395,6 @@ Result linkAndOptimizeIR( // simplifyIR(irModule); - lowerOptionalType(irModule, sink); - #if 0 dumpIRIfEnabled(codeGenContext, irModule, "AFTER DCE"); #endif |
