[SMTChecker] Fix ICE in inlining function calls while short circuiting

This commit is contained in:
Leonardo Alt 2020-05-28 12:17:53 +02:00
parent 097954bc80
commit a73ec6a82f
3 changed files with 3 additions and 2 deletions

View File

@ -25,6 +25,7 @@ Bugfixes:
* Scanner: Fix bug when two empty NatSpec comments lead to scanning past EOL.
* Code Generator: Trigger proper unimplemented errors on certain array copy operations.
* SMTChecker: Fix internal error when applying arithmetic operators to fixed point variables.
* SMTChecker: Fix internal error when short circuiting Boolean expressions with function calls in state variable initialization.
### 0.6.8 (2020-05-14)

View File

@ -1791,7 +1791,6 @@ Expression const* SMTEncoder::leftmostBase(IndexAccess const& _indexAccess)
set<VariableDeclaration const*> SMTEncoder::touchedVariables(ASTNode const& _node)
{
solAssert(!m_callStack.empty(), "");
vector<CallableDeclaration const*> callStack;
for (auto const& call: m_callStack)
callStack.push_back(call.first);

View File

@ -33,7 +33,8 @@ set<VariableDeclaration const*> VariableUsage::touchedVariables(ASTNode const& _
m_touchedVariables.clear();
m_callStack.clear();
m_callStack += _outerCallstack;
m_lastCall = m_callStack.back();
if (!m_callStack.empty())
m_lastCall = m_callStack.back();
_node.accept(*this);
return m_touchedVariables;
}