diff options
author | chriseth <chris@ethereum.org> | 2017-05-23 18:18:18 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-23 18:18:18 +0800 |
commit | 14b22150a1e3ad66cdbed70bcfacb5487f66aef8 (patch) | |
tree | f71af087d97b991da73b7d9e80b471c9ed037968 /libsolidity/inlineasm/AsmCodeGen.cpp | |
parent | 74d2e7311aed67e3bb6fcf1f0fa138bc3d304095 (diff) | |
parent | fb46268982f9c19f15e01f0ee50764c58bb351d4 (diff) | |
download | dexon-solidity-14b22150a1e3ad66cdbed70bcfacb5487f66aef8.tar dexon-solidity-14b22150a1e3ad66cdbed70bcfacb5487f66aef8.tar.gz dexon-solidity-14b22150a1e3ad66cdbed70bcfacb5487f66aef8.tar.bz2 dexon-solidity-14b22150a1e3ad66cdbed70bcfacb5487f66aef8.tar.lz dexon-solidity-14b22150a1e3ad66cdbed70bcfacb5487f66aef8.tar.xz dexon-solidity-14b22150a1e3ad66cdbed70bcfacb5487f66aef8.tar.zst dexon-solidity-14b22150a1e3ad66cdbed70bcfacb5487f66aef8.zip |
Merge pull request #2244 from ethereum/inlineasm-let-multi
Support tuple assignment in inline assembly
Diffstat (limited to 'libsolidity/inlineasm/AsmCodeGen.cpp')
-rw-r--r-- | libsolidity/inlineasm/AsmCodeGen.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/libsolidity/inlineasm/AsmCodeGen.cpp b/libsolidity/inlineasm/AsmCodeGen.cpp index b8af9dc6..02d5ced0 100644 --- a/libsolidity/inlineasm/AsmCodeGen.cpp +++ b/libsolidity/inlineasm/AsmCodeGen.cpp @@ -251,11 +251,15 @@ public: void operator()(assembly::VariableDeclaration const& _varDecl) { int height = m_assembly.stackHeight(); + int expectedItems = _varDecl.variables.size(); boost::apply_visitor(*this, *_varDecl.value); - expectDeposit(1, height); - auto& var = boost::get<Scope::Variable>(m_scope.identifiers.at(_varDecl.variable.name)); - var.stackHeight = height; - var.active = true; + expectDeposit(expectedItems, height); + for (auto const& variable: _varDecl.variables) + { + auto& var = boost::get<Scope::Variable>(m_scope.identifiers.at(variable.name)); + var.stackHeight = height++; + var.active = true; + } } void operator()(assembly::Block const& _block) { |