summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-emit.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-05-29 18:01:11 -0700
committerGitHub <noreply@github.com>2024-05-29 18:01:11 -0700
commitefdbb954c57b89362e390f955d45f90e59d66878 (patch)
tree7b47d6e52d2de666af99f66a2fd3a5dc387ca5cc /source/slang/slang-emit.cpp
parent83f176ba8a3bae5533470aed6a90663653f894b8 (diff)
Improve compile time performance. (#3857)
* Handle type check cache update on extensions more gracefully. * Correctness fix. * Cache implcit cast overload resolution results. * Fix. * More optimizations. * Cache implicit default ctor resolution. * Disable redundancy removal. * Fix. * Fix test. * Fix. * Correctness fix. * Fix. * Fix, * Fix test. * Small tweak.
Diffstat (limited to 'source/slang/slang-emit.cpp')
-rw-r--r--source/slang/slang-emit.cpp9
1 files changed, 2 insertions, 7 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp
index 428c9bf66..02dab6dfa 100644
--- a/source/slang/slang-emit.cpp
+++ b/source/slang/slang-emit.cpp
@@ -598,13 +598,12 @@ Result linkAndOptimizeIR(
{
applySparseConditionalConstantPropagation(irModule, codeGenContext->getSink());
}
- eliminateDeadCode(irModule, deadCodeEliminationOptions);
-
validateIRModuleIfEnabled(codeGenContext, irModule);
// Inline calls to any functions marked with [__unsafeInlineEarly] again,
// since we may be missing out cases prevented by the functions that we just specialzied.
performMandatoryEarlyInlining(irModule);
+ eliminateDeadCode(irModule, deadCodeEliminationOptions);
// Unroll loops.
if (!fastIRSimplificationOptions.minimalOptimization)
@@ -691,11 +690,7 @@ Result linkAndOptimizeIR(
// do unnecessary work to lower them.
unpinWitnessTables(irModule);
- if (fastIRSimplificationOptions.minimalOptimization)
- {
- eliminateDeadCode(irModule, deadCodeEliminationOptions);
- }
- else
+ if (!fastIRSimplificationOptions.minimalOptimization)
{
simplifyIR(targetProgram, irModule, fastIRSimplificationOptions, sink);
}