aboutsummaryrefslogtreecommitdiffstats
path: root/libyul/optimiser/Metrics.h
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.h
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.h')
-rw-r--r--libyul/optimiser/Metrics.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/libyul/optimiser/Metrics.h b/libyul/optimiser/Metrics.h
index 03e1b62a..5364646e 100644
--- a/libyul/optimiser/Metrics.h
+++ b/libyul/optimiser/Metrics.h
@@ -77,4 +77,18 @@ private:
size_t m_cost = 0;
};
+/**
+ * Counts the number of assignments to every variable.
+ * Only works after running the Disambiguator.
+ */
+class AssignmentCounter: public ASTWalker
+{
+public:
+ using ASTWalker::operator();
+ void operator()(Assignment const& _assignment) override;
+ std::size_t assignmentCount(YulString _name) const;
+private:
+ std::map<YulString, size_t> m_assignmentCounters;
+};
+
}