Allow the Rematerializer to be restricted to an exact set of variables.

This commit is contained in:
Daniel Kirchner
2021-09-03 15:29:51 +02:00
parent 8447b32d52
commit 646421fee1
2 changed files with 29 additions and 16 deletions
+9 -4
View File
@@ -50,24 +50,28 @@ public:
static void run(
Dialect const& _dialect,
Block& _ast,
std::set<YulString> _varsToAlwaysRematerialize = {}
std::set<YulString> _varsToAlwaysRematerialize = {},
bool _onlySelectedVariables = false
);
static void run(
Dialect const& _dialect,
FunctionDefinition& _function,
std::set<YulString> _varsToAlwaysRematerialize = {}
std::set<YulString> _varsToAlwaysRematerialize = {},
bool _onlySelectedVariables = false
);
protected:
Rematerialiser(
Dialect const& _dialect,
Block& _ast,
std::set<YulString> _varsToAlwaysRematerialize = {}
std::set<YulString> _varsToAlwaysRematerialize = {},
bool _onlySelectedVariables = false
);
Rematerialiser(
Dialect const& _dialect,
FunctionDefinition& _function,
std::set<YulString> _varsToAlwaysRematerialize = {}
std::set<YulString> _varsToAlwaysRematerialize = {},
bool _onlySelectedVariables = false
);
using DataFlowAnalyzer::operator();
@@ -77,6 +81,7 @@ protected:
std::map<YulString, size_t> m_referenceCounts;
std::set<YulString> m_varsToAlwaysRematerialize;
bool m_onlySelectedVariables = false;
};
/**