aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/inlineasm/AsmAnalysis.cpp
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2018-01-04 20:04:19 +0800
committerGitHub <noreply@github.com>2018-01-04 20:04:19 +0800
commit2cdd789b5d371de6612dadb4ae9a18359cf150df (patch)
tree963ca2fdf9cf4859fb894205576592622ca934da /libsolidity/inlineasm/AsmAnalysis.cpp
parent14db10b21480ef0876e05ececa7e395ae05326a0 (diff)
parentca0d244bf7252e76b640f88fbefd6b497a4e9d09 (diff)
downloaddexon-solidity-2cdd789b5d371de6612dadb4ae9a18359cf150df.tar
dexon-solidity-2cdd789b5d371de6612dadb4ae9a18359cf150df.tar.gz
dexon-solidity-2cdd789b5d371de6612dadb4ae9a18359cf150df.tar.bz2
dexon-solidity-2cdd789b5d371de6612dadb4ae9a18359cf150df.tar.lz
dexon-solidity-2cdd789b5d371de6612dadb4ae9a18359cf150df.tar.xz
dexon-solidity-2cdd789b5d371de6612dadb4ae9a18359cf150df.tar.zst
dexon-solidity-2cdd789b5d371de6612dadb4ae9a18359cf150df.zip
Merge pull request #3297 from ethereum/separate_expression_and_statement
Separate expression and statement
Diffstat (limited to 'libsolidity/inlineasm/AsmAnalysis.cpp')
-rw-r--r--libsolidity/inlineasm/AsmAnalysis.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/libsolidity/inlineasm/AsmAnalysis.cpp b/libsolidity/inlineasm/AsmAnalysis.cpp
index 049af65f..17b7cce0 100644
--- a/libsolidity/inlineasm/AsmAnalysis.cpp
+++ b/libsolidity/inlineasm/AsmAnalysis.cpp
@@ -155,6 +155,16 @@ bool AsmAnalyzer::operator()(FunctionalInstruction const& _instr)
return success;
}
+bool AsmAnalyzer::operator()(assembly::ExpressionStatement const& _statement)
+{
+// size_t initialStackHeight = m_stackHeight;
+ bool success = boost::apply_visitor(*this, _statement.expression);
+// if (!expectDeposit(0, initialStackHeight, _statement.location))
+// success = false;
+ m_info.stackHeightInfo[&_statement] = m_stackHeight;
+ return success;
+}
+
bool AsmAnalyzer::operator()(assembly::StackAssignment const& _assignment)
{
solAssert(!m_julia, "");
@@ -407,13 +417,13 @@ bool AsmAnalyzer::operator()(Block const& _block)
return success;
}
-bool AsmAnalyzer::expectExpression(Statement const& _statement)
+bool AsmAnalyzer::expectExpression(Expression const& _expr)
{
bool success = true;
int const initialHeight = m_stackHeight;
- if (!boost::apply_visitor(*this, _statement))
+ if (!boost::apply_visitor(*this, _expr))
success = false;
- if (!expectDeposit(1, initialHeight, locationOf(_statement)))
+ if (!expectDeposit(1, initialHeight, locationOf(_expr)))
success = false;
return success;
}