diff options
author | chriseth <chris@ethereum.org> | 2017-11-27 22:02:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-27 22:02:46 +0800 |
commit | a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a (patch) | |
tree | d17e5ab7a2c9cd5ffacba728851e6c127182fbe0 /libsolidity/inlineasm/AsmAnalysis.cpp | |
parent | a7136dbc16ba7e0cf8a7d6097d50cc40c1248914 (diff) | |
parent | 1d91b65b726d4757b866124d75834f28a9bc9eb9 (diff) | |
download | dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar.gz dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar.bz2 dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar.lz dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar.xz dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.tar.zst dexon-solidity-a1f59cbb17d29ca5f92fa1cc20d17f47026ade5a.zip |
Merge pull request #3220 from ethereum/IuliaIf
If statement for Iulia / Inline Assembly
Diffstat (limited to 'libsolidity/inlineasm/AsmAnalysis.cpp')
-rw-r--r-- | libsolidity/inlineasm/AsmAnalysis.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libsolidity/inlineasm/AsmAnalysis.cpp b/libsolidity/inlineasm/AsmAnalysis.cpp index e5bdc90f..2804ddfc 100644 --- a/libsolidity/inlineasm/AsmAnalysis.cpp +++ b/libsolidity/inlineasm/AsmAnalysis.cpp @@ -286,6 +286,22 @@ bool AsmAnalyzer::operator()(assembly::FunctionCall const& _funCall) return success; } +bool AsmAnalyzer::operator()(If const& _if) +{ + bool success = true; + + if (!expectExpression(*_if.condition)) + success = false; + m_stackHeight--; + + if (!(*this)(_if.body)) + success = false; + + m_info.stackHeightInfo[&_if] = m_stackHeight; + + return success; +} + bool AsmAnalyzer::operator()(Switch const& _switch) { bool success = true; |