@@ -10829,14 +10829,20 @@ RefPtr<IRModule> generateIRForTranslationUnit(
10829
10829
insertDebugValueStore(module);
10830
10830
}
10831
10831
10832
+
10832
10833
// Next, attempt to promote local variables to SSA
10833
10834
// temporaries and do basic simplifications.
10834
10835
//
10835
10836
constructSSA(module);
10836
- simplifyCFG(module, CFGSimplificationOptions::getDefault());
10837
10837
applySparseConditionalConstantPropagation(module, compileRequest->getSink());
10838
- auto peepholeOptions = PeepholeOptimizationOptions::getPrelinking();
10839
- peepholeOptimize(nullptr, module, peepholeOptions);
10838
+
10839
+ bool minimumOptimizations = linkage->m_optionSet.getBoolOption(CompilerOptionName::MinimumSlangOptimization);
10840
+ if (!minimumOptimizations)
10841
+ {
10842
+ simplifyCFG(module, CFGSimplificationOptions::getFast());
10843
+ auto peepholeOptions = PeepholeOptimizationOptions::getPrelinking();
10844
+ peepholeOptimize(nullptr, module, peepholeOptions);
10845
+ }
10840
10846
10841
10847
IRDeadCodeEliminationOptions dceOptions = IRDeadCodeEliminationOptions();
10842
10848
dceOptions.keepExportsAlive = true;
@@ -10881,20 +10887,18 @@ RefPtr<IRModule> generateIRForTranslationUnit(
10881
10887
// are eliminated from the callee, and not copied into
10882
10888
// call sites.
10883
10889
//
10884
- HashSet<IRInst*>* modifiedFuncs = module->getContainerPool().getHashSet<IRInst>();
10885
- SLANG_DEFER(module->getContainerPool().free(modifiedFuncs));
10886
- bool minimumOptimizations = sharedContextStorage.m_linkage->m_optionSet.getBoolOption(CompilerOptionName::MinimumSlangOptimization);
10890
+ InstHashSet modifiedFuncs(module);
10887
10891
for (;;)
10888
10892
{
10889
10893
bool changed = false;
10890
- modifiedFuncs-> clear();
10891
- changed = performMandatoryEarlyInlining(module, modifiedFuncs);
10894
+ modifiedFuncs. clear();
10895
+ changed = performMandatoryEarlyInlining(module, & modifiedFuncs.getHashSet() );
10892
10896
if (changed)
10893
10897
{
10894
10898
changed = peepholeOptimizeGlobalScope(nullptr, module);
10895
10899
if (!minimumOptimizations)
10896
10900
{
10897
- for (auto func : * modifiedFuncs)
10901
+ for (auto func : modifiedFuncs.getHashSet() )
10898
10902
{
10899
10903
changed |= constructSSA(func);
10900
10904
changed |= applySparseConditionalConstantPropagation(func, compileRequest->getSink());
@@ -10908,7 +10912,7 @@ RefPtr<IRModule> generateIRForTranslationUnit(
10908
10912
}
10909
10913
10910
10914
// Check for using uninitialized out parameters.
10911
- if (! compileRequest->getLinkage()->m_optionSet.getBoolOption(CompilerOptionName::DisableNonEssentialValidations ))
10915
+ if (compileRequest->getLinkage()->m_optionSet.shouldRunNonEssentialValidation( ))
10912
10916
{
10913
10917
// Propagate `constexpr`-ness through the dataflow graph (and the
10914
10918
// call graph) based on constraints imposed by different instructions.
0 commit comments