Browse Source

Bugfix: Swap before mod and div.

cl-refactor
Christian 10 years ago
parent
commit
4dbc566a14
  1. 2
      libsolidity/Compiler.cpp
  2. 2
      test/solidityCompiler.cpp

2
libsolidity/Compiler.cpp

@ -336,9 +336,11 @@ void ExpressionCompiler::appendArithmeticOperatorCode(Token::Value _operator, Ty
append(eth::Instruction::MUL);
break;
case Token::DIV:
append(eth::Instruction::SWAP1);
append(isSigned ? eth::Instruction::SDIV : eth::Instruction::DIV);
break;
case Token::MOD:
append(eth::Instruction::SWAP1);
append(isSigned ? eth::Instruction::SMOD : eth::Instruction::MOD);
break;
default:

2
test/solidityCompiler.cpp

@ -193,7 +193,9 @@ BOOST_AUTO_TEST_CASE(arithmetics)
byte(eth::Instruction::SWAP1),
byte(eth::Instruction::SUB),
byte(eth::Instruction::ADD),
byte(eth::Instruction::SWAP1),
byte(eth::Instruction::MOD),
byte(eth::Instruction::SWAP1),
byte(eth::Instruction::DIV),
byte(eth::Instruction::MUL)});
BOOST_CHECK_EQUAL_COLLECTIONS(code.begin(), code.end(), expectation.begin(), expectation.end());

Loading…
Cancel
Save