Support unassigned variables in the SSA value tracker and the data flow analyzer.

This commit is contained in:
chriseth
2018-12-12 18:06:28 +01:00
parent 5e0c312dad
commit 9557dd7e74
10 changed files with 65 additions and 13 deletions
+5 -4
View File
@@ -35,11 +35,12 @@ void SSAValueTracker::operator()(Assignment const& _assignment)
void SSAValueTracker::operator()(VariableDeclaration const& _varDecl)
{
if (_varDecl.variables.size() == 1)
setValue(_varDecl.variables.front().name, _varDecl.value.get());
else if (!_varDecl.value)
static Expression const zero{Literal{{}, LiteralKind::Number, YulString{"0"}, {}}};
if (!_varDecl.value)
for (auto const& var: _varDecl.variables)
setValue(var.name, nullptr);
setValue(var.name, &zero);
else if (_varDecl.variables.size() == 1)
setValue(_varDecl.variables.front().name, _varDecl.value.get());
}
void SSAValueTracker::setValue(YulString _name, Expression const* _value)