mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Test updates.
This commit is contained in:
parent
c30839888f
commit
91a92a01d5
@ -11,10 +11,7 @@ object \"C_6\" {
|
||||
codecopy(0, dataoffset(\"C_6_deployed\"), datasize(\"C_6_deployed\"))
|
||||
return(0, datasize(\"C_6_deployed\"))
|
||||
function fun_f_5()
|
||||
{
|
||||
for { let return_flag := 1 } return_flag { }
|
||||
{ break }
|
||||
}
|
||||
{ }
|
||||
}
|
||||
object \"C_6_deployed\" {
|
||||
code {
|
||||
@ -48,10 +45,7 @@ object \"C_6\" {
|
||||
mstore(64, newFreePtr)
|
||||
}
|
||||
function fun_f_5()
|
||||
{
|
||||
for { let return_flag := 1 } return_flag { }
|
||||
{ break }
|
||||
}
|
||||
{ }
|
||||
function shift_right_224_unsigned(value) -> newValue
|
||||
{ newValue := shr(224, value) }
|
||||
}
|
||||
|
@ -19,10 +19,7 @@ object \"C_6\" {
|
||||
|
||||
|
||||
function fun_f_5() {
|
||||
for { let return_flag := 1 } return_flag {} {
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -70,10 +67,7 @@ object \"C_6\" {
|
||||
}
|
||||
|
||||
function fun_f_5() {
|
||||
for { let return_flag := 1 } return_flag {} {
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
function shift_right_224_unsigned(value) -> newValue {
|
||||
|
@ -31,7 +31,7 @@ object "object" {
|
||||
|
||||
|
||||
Binary representation:
|
||||
60056032565b505050505050505050505050505050601a6032565b5050505050505050505050505050508082555050609a565b60006000600060006000600060006000600060006000600060006000600060006001808155806002558060035580600455806005558060065580600755806008558060095580600a5580600b5580600c5580600d5550909192939495969798999a9b9c9d9e9f565b
|
||||
60056032565b505050505050505050505050505050601a6032565b5050505050505050505050505050508082555050609b565b60006000600060006000600060006000600060006000600060006000600060006001808155806002558060035580600455806005558060065580600755806008558060095580600a5580600b5580600c5580600d55505b909192939495969798999a9b9c9d9e9f565b
|
||||
|
||||
Text representation:
|
||||
/* "yul_stack_opt/input.sol":495:500 */
|
||||
@ -181,6 +181,7 @@ tag_2:
|
||||
sstore
|
||||
pop
|
||||
/* "yul_stack_opt/input.sol":85:423 */
|
||||
tag_5:
|
||||
swap1
|
||||
swap2
|
||||
swap3
|
||||
|
@ -171,7 +171,7 @@ BOOST_AUTO_TEST_CASE(function_trivial)
|
||||
function f() { }
|
||||
})";
|
||||
BOOST_CHECK_EQUAL(assemble(in),
|
||||
"PUSH1 0x5 JUMP JUMPDEST JUMP JUMPDEST "
|
||||
"PUSH1 0x6 JUMP JUMPDEST JUMPDEST JUMP JUMPDEST "
|
||||
);
|
||||
}
|
||||
|
||||
@ -181,8 +181,8 @@ BOOST_AUTO_TEST_CASE(function_retparam)
|
||||
function f() -> x, y { }
|
||||
})";
|
||||
BOOST_CHECK_EQUAL(assemble(in),
|
||||
"PUSH1 0xB JUMP "
|
||||
"JUMPDEST PUSH1 0x0 PUSH1 0x0 SWAP1 SWAP2 JUMP "
|
||||
"PUSH1 0xC JUMP "
|
||||
"JUMPDEST PUSH1 0x0 PUSH1 0x0 JUMPDEST SWAP1 SWAP2 JUMP "
|
||||
"JUMPDEST "
|
||||
);
|
||||
}
|
||||
@ -192,7 +192,7 @@ BOOST_AUTO_TEST_CASE(function_params)
|
||||
string in = R"({
|
||||
function f(a, b) { }
|
||||
})";
|
||||
BOOST_CHECK_EQUAL(assemble(in), "PUSH1 0x7 JUMP JUMPDEST POP POP JUMP JUMPDEST ");
|
||||
BOOST_CHECK_EQUAL(assemble(in), "PUSH1 0x8 JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST ");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_params_and_retparams)
|
||||
@ -205,7 +205,7 @@ BOOST_AUTO_TEST_CASE(function_params_and_retparams)
|
||||
// layout for a function is still fixed, even though parameters
|
||||
// can be re-used.
|
||||
BOOST_CHECK_EQUAL(assemble(in),
|
||||
"PUSH1 0x10 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST "
|
||||
"PUSH1 0x11 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST "
|
||||
);
|
||||
}
|
||||
|
||||
@ -215,12 +215,12 @@ BOOST_AUTO_TEST_CASE(function_params_and_retparams_partly_unused)
|
||||
function f(a, b, c, d) -> x, y { b := 3 let s := 9 y := 2 mstore(s, y) }
|
||||
})";
|
||||
BOOST_CHECK_EQUAL(assemble(in),
|
||||
"PUSH1 0x1E JUMP "
|
||||
"PUSH1 0x1F JUMP "
|
||||
"JUMPDEST PUSH1 0x0 PUSH1 0x0 "
|
||||
"PUSH1 0x3 SWAP4 POP "
|
||||
"PUSH1 0x9 PUSH1 0x2 SWAP2 POP "
|
||||
"DUP2 DUP2 MSTORE "
|
||||
"POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP "
|
||||
"POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP "
|
||||
"JUMPDEST "
|
||||
);
|
||||
}
|
||||
@ -237,12 +237,12 @@ BOOST_AUTO_TEST_CASE(function_with_body_embedded)
|
||||
})";
|
||||
BOOST_CHECK_EQUAL(assemble(in),
|
||||
"PUSH1 0x3 PUSH1 "
|
||||
"0x16 JUMP "
|
||||
"0x17 JUMP "
|
||||
"JUMPDEST PUSH1 0x0 " // start of f, initialize t
|
||||
"DUP2 POP " // let x := a
|
||||
"PUSH1 0x3 SWAP2 POP "
|
||||
"DUP2 SWAP1 POP "
|
||||
"SWAP3 SWAP2 POP POP JUMP "
|
||||
"JUMPDEST SWAP3 SWAP2 POP POP JUMP "
|
||||
"JUMPDEST PUSH1 0x7 SWAP1 "
|
||||
"POP POP "
|
||||
);
|
||||
@ -257,9 +257,9 @@ BOOST_AUTO_TEST_CASE(function_call)
|
||||
})";
|
||||
BOOST_CHECK_EQUAL(assemble(in),
|
||||
"PUSH1 0x9 PUSH1 0x2 PUSH1 0x1 PUSH1 0xD JUMP "
|
||||
"JUMPDEST PUSH1 0x15 JUMP " // jump over f
|
||||
"JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP " // f
|
||||
"JUMPDEST PUSH1 0x1F PUSH1 0x4 PUSH1 0x3 PUSH1 0xD JUMP "
|
||||
"JUMPDEST PUSH1 0x16 JUMP " // jump over f
|
||||
"JUMPDEST PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP " // f
|
||||
"JUMPDEST PUSH1 0x20 PUSH1 0x4 PUSH1 0x3 PUSH1 0xD JUMP "
|
||||
"JUMPDEST SWAP1 POP POP "
|
||||
);
|
||||
}
|
||||
@ -277,15 +277,15 @@ BOOST_AUTO_TEST_CASE(functions_multi_return)
|
||||
let unused := 7
|
||||
})";
|
||||
BOOST_CHECK_EQUAL(assemble(in),
|
||||
"PUSH1 0x13 JUMP "
|
||||
"JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP " // f
|
||||
"JUMPDEST PUSH1 0x0 PUSH1 0x0 SWAP1 SWAP2 JUMP " // g
|
||||
"JUMPDEST PUSH1 0x1D PUSH1 0x2 PUSH1 0x1 PUSH1 0x3 JUMP " // f(1, 2)
|
||||
"JUMPDEST PUSH1 0x27 PUSH1 0x4 PUSH1 0x3 PUSH1 0x3 JUMP " // f(3, 4)
|
||||
"PUSH1 0x15 JUMP "
|
||||
"JUMPDEST PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP " // f
|
||||
"JUMPDEST PUSH1 0x0 PUSH1 0x0 JUMPDEST SWAP1 SWAP2 JUMP " // g
|
||||
"JUMPDEST PUSH1 0x1F PUSH1 0x2 PUSH1 0x1 PUSH1 0x3 JUMP " // f(1, 2)
|
||||
"JUMPDEST PUSH1 0x29 PUSH1 0x4 PUSH1 0x3 PUSH1 0x3 JUMP " // f(3, 4)
|
||||
"JUMPDEST SWAP1 POP " // assignment to x
|
||||
"POP " // remove x
|
||||
"PUSH1 0x30 PUSH1 0xB JUMP " // g()
|
||||
"JUMPDEST PUSH1 0x36 PUSH1 0xB JUMP " // g()
|
||||
"PUSH1 0x32 PUSH1 0xC JUMP " // g()
|
||||
"JUMPDEST PUSH1 0x38 PUSH1 0xC JUMP " // g()
|
||||
"JUMPDEST SWAP2 POP SWAP2 POP " // assignments
|
||||
"POP POP " // removal of y and z
|
||||
"PUSH1 0x7 POP "
|
||||
@ -299,9 +299,9 @@ BOOST_AUTO_TEST_CASE(reuse_slots_function)
|
||||
let a, b, c, d := f() let x1 := 2 let y1 := 3 mstore(x1, a) mstore(y1, c)
|
||||
})";
|
||||
BOOST_CHECK_EQUAL(assemble(in),
|
||||
"PUSH1 0x11 JUMP "
|
||||
"JUMPDEST PUSH1 0x0 PUSH1 0x0 PUSH1 0x0 PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP4 JUMP "
|
||||
"JUMPDEST PUSH1 0x17 PUSH1 0x3 JUMP "
|
||||
"PUSH1 0x12 JUMP "
|
||||
"JUMPDEST PUSH1 0x0 PUSH1 0x0 PUSH1 0x0 PUSH1 0x0 JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 JUMP "
|
||||
"JUMPDEST PUSH1 0x18 PUSH1 0x3 JUMP "
|
||||
// Stack: a b c d
|
||||
"JUMPDEST POP " // d is unused
|
||||
// Stack: a b c
|
||||
@ -327,9 +327,9 @@ BOOST_AUTO_TEST_CASE(reuse_slots_function_with_gaps)
|
||||
BOOST_CHECK_EQUAL(assemble(in),
|
||||
"PUSH1 0x5 PUSH1 0x6 PUSH1 0x7 "
|
||||
"DUP2 DUP4 MSTORE "
|
||||
"PUSH1 0x1A JUMP " // jump across function
|
||||
"JUMPDEST PUSH1 0x0 PUSH1 0x0 PUSH1 0x0 PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP4 JUMP "
|
||||
"JUMPDEST PUSH1 0x20 PUSH1 0xC JUMP "
|
||||
"PUSH1 0x1B JUMP " // jump across function
|
||||
"JUMPDEST PUSH1 0x0 PUSH1 0x0 PUSH1 0x0 PUSH1 0x0 JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 JUMP "
|
||||
"JUMPDEST PUSH1 0x21 PUSH1 0xC JUMP "
|
||||
// stack: x1 x2 x3 a b c d
|
||||
"JUMPDEST SWAP6 POP " // move d into x1
|
||||
// stack: d x2 x3 a b c
|
||||
|
@ -12,10 +12,12 @@ object "Contract" {
|
||||
// jump(tag_1)
|
||||
// tag_2:
|
||||
// /* "source":46:48 */
|
||||
// tag_3:
|
||||
// jump
|
||||
// /* "source":53:68 */
|
||||
// tag_3:
|
||||
// tag_4:
|
||||
// /* "source":66:68 */
|
||||
// tag_5:
|
||||
// jump
|
||||
// tag_1:
|
||||
// /* "source":83:84 */
|
||||
@ -24,5 +26,5 @@ object "Contract" {
|
||||
// 0x00
|
||||
// /* "source":73:85 */
|
||||
// sstore
|
||||
// Bytecode: 6007565b565b565b6001600055
|
||||
// Opcodes: PUSH1 0x7 JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE
|
||||
// Bytecode: 6009565b5b565b5b565b6001600055
|
||||
// Opcodes: PUSH1 0x9 JUMP JUMPDEST JUMPDEST JUMP JUMPDEST JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE
|
||||
|
Loading…
Reference in New Issue
Block a user