diff options
author | chriseth <chris@ethereum.org> | 2016-10-26 22:18:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-26 22:18:25 +0800 |
commit | 410275354eae19751097642ba225721d0c7f0811 (patch) | |
tree | 4fb88fd2b4ef9742af9e65000b49a56ca9f45d33 | |
parent | f9946ec029cf14d973d78b31c265c8735ab9eb05 (diff) | |
parent | 7ac53f5305d83d3f2a220d30753f82341311392c (diff) | |
download | dexon-solidity-410275354eae19751097642ba225721d0c7f0811.tar.gz dexon-solidity-410275354eae19751097642ba225721d0c7f0811.tar.zst dexon-solidity-410275354eae19751097642ba225721d0c7f0811.zip |
Merge pull request #1294 from zigguratt/lll-until-support
LLL: Add support for 'until', the inverse of 'while'.
-rw-r--r-- | liblll/CodeFragment.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/liblll/CodeFragment.cpp b/liblll/CodeFragment.cpp index eadb0140..e76f4974 100644 --- a/liblll/CodeFragment.cpp +++ b/liblll/CodeFragment.cpp @@ -472,14 +472,15 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s) m_asm << end.tag(); m_asm.donePaths(); } - else if (us == "WHILE") + else if (us == "WHILE" || us == "UNTIL") { requireSize(2); requireDeposit(0, 1); auto begin = m_asm.append(); m_asm.append(code[0].m_asm); - m_asm.append(Instruction::ISZERO); + if (us == "WHILE") + m_asm.append(Instruction::ISZERO); auto end = m_asm.appendJumpI(); m_asm.append(code[1].m_asm, 0); m_asm.appendJump(begin); |