File tree Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Original file line number Diff line number Diff line change @@ -661,12 +661,24 @@ bool CompilerStack::compile(State _stopAfter)
661
661
662
662
string const evmAssemblyJsonSource = m_evmAssemblyJson.begin ()->first ;
663
663
664
+ evmasm::Assembly::OptimiserSettings optimiserSettings;
665
+ optimiserSettings.evmVersion = m_evmVersion;
666
+ optimiserSettings.expectedExecutionsPerDeployment = m_optimiserSettings.expectedExecutionsPerDeployment ;
667
+ optimiserSettings.runCSE = m_optimiserSettings.runCSE ;
668
+ optimiserSettings.runConstantOptimiser = m_optimiserSettings.runConstantOptimiser ;
669
+ optimiserSettings.runDeduplicate = m_optimiserSettings.runDeduplicate ;
670
+ optimiserSettings.runInliner = m_optimiserSettings.runInliner ;
671
+ optimiserSettings.runJumpdestRemover = m_optimiserSettings.runJumpdestRemover ;
672
+ optimiserSettings.runPeephole = m_optimiserSettings.runPeephole ;
673
+
664
674
m_contracts[evmAssemblyJsonSource].evmAssembly = make_shared<evmasm::Assembly>(evmAssemblyJsonSource);
665
675
m_contracts[evmAssemblyJsonSource].evmAssembly ->loadFromAssemblyJSON (m_evmAssemblyJson[evmAssemblyJsonSource]);
676
+ m_contracts[evmAssemblyJsonSource].evmAssembly ->optimise (optimiserSettings);
666
677
m_contracts[evmAssemblyJsonSource].object = m_contracts[evmAssemblyJsonSource].evmAssembly ->assemble ();
667
678
668
679
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly = make_shared<evmasm::Assembly>(evmAssemblyJsonSource);
669
680
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly ->loadFromAssemblyJSON (m_evmAssemblyJson[evmAssemblyJsonSource][" .data" ][" 0" ]);
681
+ m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly ->optimise (optimiserSettings);
670
682
m_contracts[evmAssemblyJsonSource].runtimeObject = m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly ->assemble ();
671
683
}
672
684
else
Original file line number Diff line number Diff line change @@ -1218,12 +1218,15 @@ bool CommandLineParser::processArgs()
1218
1218
}
1219
1219
if (m_options.optimizer .enabled && (m_options.assembly .inputLanguage != Input::StrictAssembly && m_options.assembly .inputLanguage != Input::Ewasm))
1220
1220
{
1221
- serr () <<
1222
- " Optimizer can only be used for strict assembly. Use --" <<
1223
- g_strStrictAssembly <<
1224
- " ." <<
1225
- endl;
1226
- return false ;
1221
+ if (m_options.input .mode != InputMode::CompilerWithEvmAssemblyJsonImport)
1222
+ {
1223
+ serr () <<
1224
+ " Optimizer can only be used for strict assembly or with assembly import. Use --" <<
1225
+ g_strStrictAssembly <<
1226
+ " or --" << g_strImportEvmAssemblerJson << " ." <<
1227
+ endl;
1228
+ return false ;
1229
+ }
1227
1230
}
1228
1231
if (m_options.assembly .targetMachine == Machine::Ewasm && m_options.assembly .inputLanguage != Input::StrictAssembly && m_options.assembly .inputLanguage != Input::Ewasm)
1229
1232
{
You can’t perform that action at this time.
0 commit comments