Do not erase knowledge about storage pointers when another pointer is assigned

This commit is contained in:
Leonardo Alt
2019-08-02 13:09:06 +02:00
parent 967ee944a5
commit 7b5863e583
9 changed files with 144 additions and 2 deletions
+5
View File
@@ -759,6 +759,11 @@ void SMTEncoder::arrayIndexAssignment(Expression const& _expr, smt::Expression c
m_context.resetVariables([&](VariableDeclaration const& _var) {
if (_var == *varDecl)
return false;
// If both are state variables no need to clear knowledge.
if (_var.isStateVariable() && varDecl->isStateVariable())
return false;
TypePointer prefix = _var.type();
TypePointer originalType = typeWithoutPointer(varDecl->type());
while (