diff options
| author | Yong He <yonghe@outlook.com> | 2024-05-17 23:07:36 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-17 23:07:36 -0700 |
| commit | 62b7219e715bd4c0f984bcd98c9767fb6422c78f (patch) | |
| tree | 114cc03a796c582882eb649948e64172af636780 /source/slang/slang-ir-ssa-simplification.cpp | |
| parent | 40360431dfac9ec122a0300471d42be9d265f452 (diff) | |
Add `-minimum-slang-optimization` to favor compile time. (#4186)
Diffstat (limited to 'source/slang/slang-ir-ssa-simplification.cpp')
| -rw-r--r-- | source/slang/slang-ir-ssa-simplification.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/source/slang/slang-ir-ssa-simplification.cpp b/source/slang/slang-ir-ssa-simplification.cpp index 6a0fb620e..a0224cea5 100644 --- a/source/slang/slang-ir-ssa-simplification.cpp +++ b/source/slang/slang-ir-ssa-simplification.cpp @@ -15,6 +15,27 @@ namespace Slang { + IRSimplificationOptions IRSimplificationOptions::getDefault(TargetProgram* targetProgram) + { + IRSimplificationOptions result; + result.minimalOptimization = targetProgram->getOptionSet().shouldPerformMinimumOptimizations(); + if (result.minimalOptimization) + result.cfgOptions = CFGSimplificationOptions::getFast(); + else + result.cfgOptions = CFGSimplificationOptions::getDefault(); + result.peepholeOptions = PeepholeOptimizationOptions(); + return result; + } + + IRSimplificationOptions IRSimplificationOptions::getFast(TargetProgram* targetProgram) + { + IRSimplificationOptions result; + result.minimalOptimization = targetProgram->getOptionSet().shouldPerformMinimumOptimizations(); + result.cfgOptions = CFGSimplificationOptions::getFast(); + result.peepholeOptions = PeepholeOptimizationOptions(); + return result; + } + // Run a combination of SSA, SCCP, SimplifyCFG, and DeadCodeElimination pass // until no more changes are possible. void simplifyIR(TargetProgram* target, IRModule* module, IRSimplificationOptions options, DiagnosticSink* sink) @@ -50,7 +71,8 @@ namespace Slang funcChanged = false; funcChanged |= applySparseConditionalConstantPropagation(func, sink); funcChanged |= peepholeOptimize(target, func); - funcChanged |= removeRedundancyInFunc(func); + if (!options.minimalOptimization) + funcChanged |= removeRedundancyInFunc(func); funcChanged |= simplifyCFG(func, options.cfgOptions); eliminateDeadCode(func); funcChanged |= constructSSA(func); @@ -78,7 +100,8 @@ namespace Slang changed = false; changed |= peepholeOptimize(target, module, options.peepholeOptions); - changed |= removeRedundancy(module); + if (!options.minimalOptimization) + changed |= removeRedundancy(module); changed |= simplifyCFG(module, options.cfgOptions); // Note: we disregard the `changed` state from dead code elimination pass since @@ -103,7 +126,8 @@ namespace Slang changed = false; changed |= applySparseConditionalConstantPropagation(func, sink); changed |= peepholeOptimize(target, func); - changed |= removeRedundancyInFunc(func); + if (!options.minimalOptimization) + changed |= removeRedundancyInFunc(func); changed |= simplifyCFG(func, options.cfgOptions); // Note: we disregard the `changed` state from dead code elimination pass since |
