aboutsummaryrefslogtreecommitdiffstats
path: root/libyul/optimiser/Metrics.cpp
diff options
context:
space:
mode:
authorDaniel Kirchner <daniel@ekpyron.org>2019-01-17 23:11:55 +0800
committerDaniel Kirchner <daniel@ekpyron.org>2019-01-18 04:05:32 +0800
commit29f66b267426535c7ffe8eda09c3b50888dcdfc0 (patch)
treec7429889d3050b4d13770e29e2c430c03955c68c /libyul/optimiser/Metrics.cpp
parentfd1658572463a246f602ae0fe161430429daa9e0 (diff)
downloaddexon-solidity-29f66b267426535c7ffe8eda09c3b50888dcdfc0.tar
dexon-solidity-29f66b267426535c7ffe8eda09c3b50888dcdfc0.tar.gz
dexon-solidity-29f66b267426535c7ffe8eda09c3b50888dcdfc0.tar.bz2
dexon-solidity-29f66b267426535c7ffe8eda09c3b50888dcdfc0.tar.lz
dexon-solidity-29f66b267426535c7ffe8eda09c3b50888dcdfc0.tar.xz
dexon-solidity-29f66b267426535c7ffe8eda09c3b50888dcdfc0.tar.zst
dexon-solidity-29f66b267426535c7ffe8eda09c3b50888dcdfc0.zip
Stabilize SSAReverser.
Diffstat (limited to 'libyul/optimiser/Metrics.cpp')
-rw-r--r--libyul/optimiser/Metrics.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/libyul/optimiser/Metrics.cpp b/libyul/optimiser/Metrics.cpp
index df919682..e13940aa 100644
--- a/libyul/optimiser/Metrics.cpp
+++ b/libyul/optimiser/Metrics.cpp
@@ -134,3 +134,15 @@ void CodeCost::visit(Expression const& _expression)
++m_cost;
ASTWalker::visit(_expression);
}
+
+void AssignmentCounter::operator()(Assignment const& _assignment)
+{
+ for (auto const& variable: _assignment.variableNames)
+ ++m_assignmentCounters[variable.name];
+}
+
+size_t AssignmentCounter::assignmentCount(YulString _name) const
+{
+ auto it = m_assignmentCounters.find(_name);
+ return (it == m_assignmentCounters.end()) ? 0 : it->second;
+}