From 995623f0fa37fdaa6be3dd2d95540fc123ce4248 Mon Sep 17 00:00:00 2001 From: Daniel Kirchner Date: Fri, 4 May 2018 15:58:10 +0200 Subject: Add control flow graph. --- libsolidity/interface/CompilerStack.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'libsolidity/interface/CompilerStack.cpp') diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index 4ff14aa2..195f806a 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -222,6 +223,14 @@ bool CompilerStack::analyze() noErrors = false; } + if (noErrors) + { + CFG cfg(m_errorReporter); + for (Source const* source: m_sourceOrder) + if (!cfg.constructFlow(*source->ast)) + noErrors = false; + } + if (noErrors) { StaticAnalyzer staticAnalyzer(m_errorReporter); -- cgit v1.2.3 From 16e966dea0bdb3293b9958af26d697a1f59205f5 Mon Sep 17 00:00:00 2001 From: Daniel Kirchner Date: Fri, 4 May 2018 15:58:24 +0200 Subject: Add control flow analyzer and test for uninitialized storage returns. --- libsolidity/interface/CompilerStack.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'libsolidity/interface/CompilerStack.cpp') diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index 195f806a..47dc30cf 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -229,6 +230,14 @@ bool CompilerStack::analyze() for (Source const* source: m_sourceOrder) if (!cfg.constructFlow(*source->ast)) noErrors = false; + + if (noErrors) + { + ControlFlowAnalyzer controlFlowAnalyzer(cfg, m_errorReporter); + for (Source const* source: m_sourceOrder) + if (!controlFlowAnalyzer.analyze(*source->ast)) + noErrors = false; + } } if (noErrors) -- cgit v1.2.3