[libsolidity] OptimiserSettings: add enabled flag.

This commit is contained in:
Alexander Arlt 2021-11-12 10:32:04 -05:00
parent 5d748613b7
commit ba62b1a401
2 changed files with 6 additions and 2 deletions

View File

@ -687,13 +687,15 @@ bool CompilerStack::compile(State _stopAfter)
m_contracts[evmAssemblyJsonSource].evmAssembly = make_shared<evmasm::Assembly>(evmAssemblyJsonSource);
m_contracts[evmAssemblyJsonSource].evmAssembly->loadFromAssemblyJSON(m_evmAssemblyJson[evmAssemblyJsonSource]);
// m_contracts[evmAssemblyJsonSource].evmAssembly->optimise(optimiserSettings);
if (m_optimiserSettings.enabled)
m_contracts[evmAssemblyJsonSource].evmAssembly->optimise(optimiserSettings);
m_contracts[evmAssemblyJsonSource].object = m_contracts[evmAssemblyJsonSource].evmAssembly->assemble();
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly = make_shared<evmasm::Assembly>(evmAssemblyJsonSource);
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->setSources(m_contracts[evmAssemblyJsonSource].evmAssembly->sources());
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->loadFromAssemblyJSON(m_evmAssemblyJson[evmAssemblyJsonSource][".data"]["0"], false);
// m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->optimise(optimiserSettings);
if (m_optimiserSettings.enabled)
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->optimise(optimiserSettings);
m_contracts[evmAssemblyJsonSource].runtimeObject = m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly->assemble();
}
else

View File

@ -121,6 +121,8 @@ struct OptimiserSettings
expectedExecutionsPerDeployment == _other.expectedExecutionsPerDeployment;
}
/// Optimizer enabled.
bool enabled = false;
/// Move literals to the right of commutative binary operators during code generation.
/// This helps exploiting associativity.
bool runOrderLiterals = false;