MCPcopy Create free account
hub / github.com/argotorg/solidity / eliminateVariables

Function eliminateVariables

libyul/optimiser/StackCompressor.cpp:161–183  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

159}
160
161void eliminateVariables(
162 Dialect const& _dialect,
163 Block& _ast,
164 std::map<YulName, int> const& _numVariables,
165 bool _allowMSizeOptimization
166)
167{
168 RematCandidateSelector selector{_dialect};
169 selector(_ast);
170 std::map<YulName, std::map<size_t, std::vector<YulName>>> candidates = selector.candidates();
171
172 std::set<YulName> varsToEliminate;
173 for (auto const& [functionName, numVariables]: _numVariables)
174 {
175 yulAssert(numVariables > 0);
176 varsToEliminate += chooseVarsToEliminate(candidates[functionName], static_cast<size_t>(numVariables));
177 }
178
179 Rematerialiser::run(_dialect, _ast, std::move(varsToEliminate));
180 // Do not remove functions.
181 std::set<YulName> allFunctions = NameCollector{_ast, NameCollector::OnlyFunctions}.names();
182 UnusedPruner::runUntilStabilised(_dialect, _ast, _allowMSizeOptimization, nullptr, allFunctions);
183}
184
185void eliminateVariablesOptimizedCodegen(
186 Dialect const& _dialect,

Callers 1

runMethod · 0.85

Calls 3

chooseVarsToEliminateFunction · 0.85
candidatesMethod · 0.80
namesMethod · 0.80

Tested by

no test coverage detected