mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #6698 from ethereum/asmPrinterOneLine
Format short blocks and loops on a single line.
This commit is contained in:
commit
54a3116ab8
@ -191,7 +191,11 @@ string AsmPrinter::operator()(FunctionCall const& _functionCall) const
|
||||
string AsmPrinter::operator()(If const& _if) const
|
||||
{
|
||||
solAssert(_if.condition, "Invalid if condition.");
|
||||
return "if " + boost::apply_visitor(*this, *_if.condition) + "\n" + (*this)(_if.body);
|
||||
string body = (*this)(_if.body);
|
||||
char delim = '\n';
|
||||
if (body.find('\n') == string::npos)
|
||||
delim = ' ';
|
||||
return "if " + boost::apply_visitor(*this, *_if.condition) + delim + (*this)(_if.body);
|
||||
}
|
||||
|
||||
string AsmPrinter::operator()(Switch const& _switch) const
|
||||
@ -212,15 +216,19 @@ string AsmPrinter::operator()(Switch const& _switch) const
|
||||
string AsmPrinter::operator()(ForLoop const& _forLoop) const
|
||||
{
|
||||
solAssert(_forLoop.condition, "Invalid for loop condition.");
|
||||
string out = "for ";
|
||||
out += (*this)(_forLoop.pre);
|
||||
out += "\n";
|
||||
out += boost::apply_visitor(*this, *_forLoop.condition);
|
||||
out += "\n";
|
||||
out += (*this)(_forLoop.post);
|
||||
out += "\n";
|
||||
out += (*this)(_forLoop.body);
|
||||
return out;
|
||||
string pre = (*this)(_forLoop.pre);
|
||||
string condition = boost::apply_visitor(*this, *_forLoop.condition);
|
||||
string post = (*this)(_forLoop.post);
|
||||
char delim = '\n';
|
||||
if (
|
||||
pre.size() + condition.size() + post.size() < 60 &&
|
||||
pre.find('\n') == string::npos &&
|
||||
post.find('\n') == string::npos
|
||||
)
|
||||
delim = ' ';
|
||||
return
|
||||
("for " + move(pre) + delim + move(condition) + delim + move(post) + "\n") +
|
||||
(*this)(_forLoop.body);
|
||||
}
|
||||
|
||||
string AsmPrinter::operator()(Break const&) const
|
||||
@ -236,13 +244,18 @@ string AsmPrinter::operator()(Continue const&) const
|
||||
string AsmPrinter::operator()(Block const& _block) const
|
||||
{
|
||||
if (_block.statements.empty())
|
||||
return "{\n}";
|
||||
return "{ }";
|
||||
string body = boost::algorithm::join(
|
||||
_block.statements | boost::adaptors::transformed(boost::apply_visitor(*this)),
|
||||
"\n"
|
||||
);
|
||||
boost::replace_all(body, "\n", "\n ");
|
||||
return "{\n " + body + "\n}";
|
||||
if (body.size() < 30 && body.find('\n') == string::npos)
|
||||
return "{ " + body + " }";
|
||||
else
|
||||
{
|
||||
boost::replace_all(body, "\n", "\n ");
|
||||
return "{\n " + body + "\n}";
|
||||
}
|
||||
}
|
||||
|
||||
string AsmPrinter::formatTypedName(TypedName _variable) const
|
||||
|
@ -1 +1 @@
|
||||
{"contracts":{"A":{"C":{"irOptimized":"/*******************************************************\n * WARNING *\n * Solidity to Yul compilation is still EXPERIMENTAL *\n * It can result in LOSS OF FUNDS or worse *\n * !USE AT YOUR OWN RISK! *\n *******************************************************/\n\nobject \"C_6\" {\n code {\n mstore(64, 128)\n codecopy(0, dataoffset(\"C_6_deployed\"), datasize(\"C_6_deployed\"))\n return(0, datasize(\"C_6_deployed\"))\n }\n object \"C_6_deployed\" {\n code {\n mstore(64, 128)\n if iszero(lt(calldatasize(), 4))\n {\n let selector := shift_right_224_unsigned(calldataload(0))\n switch selector\n case 0x26121ff0 {\n if callvalue()\n {\n revert(0, 0)\n }\n abi_decode_tuple_(4, calldatasize())\n fun_f_5()\n let memPos := allocateMemory(0)\n let memEnd := abi_encode_tuple__to__fromStack(memPos)\n return(memPos, sub(memEnd, memPos))\n }\n default {\n }\n }\n revert(0, 0)\n function abi_decode_tuple_(headStart, dataEnd)\n {\n if slt(sub(dataEnd, headStart), 0)\n {\n revert(0, 0)\n }\n }\n function abi_encode_tuple__to__fromStack(headStart) -> tail\n {\n tail := add(headStart, 0)\n }\n function allocateMemory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, size)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr))\n {\n revert(0, 0)\n }\n mstore(64, newFreePtr)\n }\n function fun_f_5()\n {\n for {\n let return_flag := 1\n }\n return_flag\n {\n }\n {\n break\n }\n }\n function shift_right_224_unsigned(value) -> newValue\n {\n newValue := shr(224, value)\n }\n }\n }\n}\n"}}},"sources":{"A":{"id":0}}}
|
||||
{"contracts":{"A":{"C":{"irOptimized":"/*******************************************************\n * WARNING *\n * Solidity to Yul compilation is still EXPERIMENTAL *\n * It can result in LOSS OF FUNDS or worse *\n * !USE AT YOUR OWN RISK! *\n *******************************************************/\n\nobject \"C_6\" {\n code {\n mstore(64, 128)\n codecopy(0, dataoffset(\"C_6_deployed\"), datasize(\"C_6_deployed\"))\n return(0, datasize(\"C_6_deployed\"))\n }\n object \"C_6_deployed\" {\n code {\n mstore(64, 128)\n if iszero(lt(calldatasize(), 4))\n {\n let selector := shift_right_224_unsigned(calldataload(0))\n switch selector\n case 0x26121ff0 {\n if callvalue() { revert(0, 0) }\n abi_decode_tuple_(4, calldatasize())\n fun_f_5()\n let memPos := allocateMemory(0)\n let memEnd := abi_encode_tuple__to__fromStack(memPos)\n return(memPos, sub(memEnd, memPos))\n }\n default { }\n }\n revert(0, 0)\n function abi_decode_tuple_(headStart, dataEnd)\n {\n if slt(sub(dataEnd, headStart), 0) { revert(0, 0) }\n }\n function abi_encode_tuple__to__fromStack(headStart) -> tail\n { tail := add(headStart, 0) }\n function allocateMemory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, size)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { revert(0, 0) }\n mstore(64, newFreePtr)\n }\n function fun_f_5()\n {\n for { let return_flag := 1 } return_flag { }\n { break }\n }\n function shift_right_224_unsigned(value) -> newValue\n { newValue := shr(224, value) }\n }\n }\n}\n"}}},"sources":{"A":{"id":0}}}
|
||||
|
@ -1 +1 @@
|
||||
{"contracts":{"A":{"NamedObject":{"evm":{"assembly":" data_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45\n /* \"A\":80:81 */\n 0x00\n /* \"A\":76:77 */\n 0x00\n /* \"A\":73:74 */\n dup3\n /* \"A\":69:78 */\n add\n /* \"A\":62:82 */\n sstore\n /* \"A\":28:84 */\n pop\nstop\ndata_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45 616263\n\nsub_0: assembly {\n /* \"A\":147:148 */\n 0x00\n /* \"A\":144:145 */\n 0x00\n /* \"A\":137:149 */\n revert\n}\n","bytecode":{"linkReferences":{},"object":"600b6000600082015550fe616263","opcodes":"PUSH1 0xB PUSH1 0x0 PUSH1 0x0 DUP3 ADD SSTORE POP INVALID PUSH2 0x6263 ","sourceMap":""}},"ir":"object \"NamedObject\" {\n code {\n let x := dataoffset(\"DataName\")\n sstore(add(x, 0), 0)\n }\n data \"DataName\" hex\"616263\"\n object \"OtherObject\" {\n code {\n revert(0, 0)\n }\n }\n}\n","irOptimized":"object \"NamedObject\" {\n code {\n let x := dataoffset(\"DataName\")\n sstore(add(x, 0), 0)\n }\n data \"DataName\" hex\"616263\"\n object \"OtherObject\" {\n code {\n revert(0, 0)\n }\n }\n}\n"}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]}
|
||||
{"contracts":{"A":{"NamedObject":{"evm":{"assembly":" data_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45\n /* \"A\":80:81 */\n 0x00\n /* \"A\":76:77 */\n 0x00\n /* \"A\":73:74 */\n dup3\n /* \"A\":69:78 */\n add\n /* \"A\":62:82 */\n sstore\n /* \"A\":28:84 */\n pop\nstop\ndata_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45 616263\n\nsub_0: assembly {\n /* \"A\":147:148 */\n 0x00\n /* \"A\":144:145 */\n 0x00\n /* \"A\":137:149 */\n revert\n}\n","bytecode":{"linkReferences":{},"object":"600b6000600082015550fe616263","opcodes":"PUSH1 0xB PUSH1 0x0 PUSH1 0x0 DUP3 ADD SSTORE POP INVALID PUSH2 0x6263 ","sourceMap":""}},"ir":"object \"NamedObject\" {\n code {\n let x := dataoffset(\"DataName\")\n sstore(add(x, 0), 0)\n }\n data \"DataName\" hex\"616263\"\n object \"OtherObject\" {\n code { revert(0, 0) }\n }\n}\n","irOptimized":"object \"NamedObject\" {\n code {\n let x := dataoffset(\"DataName\")\n sstore(add(x, 0), 0)\n }\n data \"DataName\" hex\"616263\"\n object \"OtherObject\" {\n code { revert(0, 0) }\n }\n}\n"}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]}
|
||||
|
@ -1 +1 @@
|
||||
{"contracts":{"A":{"object":{"evm":{"assembly":" /* \"A\":17:18 */\n 0x00\n 0x00\n /* \"A\":11:19 */\n mload\n /* \"A\":20:40 */\n sstore\n","bytecode":{"linkReferences":{},"object":"600060005155","opcodes":"PUSH1 0x0 PUSH1 0x0 MLOAD SSTORE ","sourceMap":""}},"ir":"object \"object\" {\n code {\n let x := mload(0)\n sstore(add(x, 0), 0)\n }\n}\n","irOptimized":"object \"object\" {\n code {\n {\n sstore(mload(0), 0)\n }\n }\n}\n"}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]}
|
||||
{"contracts":{"A":{"object":{"evm":{"assembly":" /* \"A\":17:18 */\n 0x00\n 0x00\n /* \"A\":11:19 */\n mload\n /* \"A\":20:40 */\n sstore\n","bytecode":{"linkReferences":{},"object":"600060005155","opcodes":"PUSH1 0x0 PUSH1 0x0 MLOAD SSTORE ","sourceMap":""}},"ir":"object \"object\" {\n code {\n let x := mload(0)\n sstore(add(x, 0), 0)\n }\n}\n","irOptimized":"object \"object\" {\n code { { sstore(mload(0), 0) } }\n}\n"}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]}
|
||||
|
@ -555,7 +555,7 @@ BOOST_AUTO_TEST_SUITE(Printing)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(print_smoke)
|
||||
{
|
||||
parsePrintCompare("{\n}");
|
||||
parsePrintCompare("{ }");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(print_instructions)
|
||||
@ -570,7 +570,7 @@ BOOST_AUTO_TEST_CASE(print_subblock)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(print_functional)
|
||||
{
|
||||
parsePrintCompare("{\n let x := mul(sload(0x12), 7)\n}");
|
||||
parsePrintCompare("{ let x := mul(sload(0x12), 7) }");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(print_label)
|
||||
@ -585,7 +585,7 @@ BOOST_AUTO_TEST_CASE(print_assignments)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(print_multi_assignments)
|
||||
{
|
||||
parsePrintCompare("{\n function f() -> x, y\n {\n }\n let x, y := f()\n}");
|
||||
parsePrintCompare("{\n function f() -> x, y\n { }\n let x, y := f()\n}");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(print_string_literals)
|
||||
@ -596,48 +596,45 @@ BOOST_AUTO_TEST_CASE(print_string_literals)
|
||||
BOOST_AUTO_TEST_CASE(print_string_literal_unicode)
|
||||
{
|
||||
string source = "{ let x := \"\\u1bac\" }";
|
||||
string parsed = "object \"object\" {\n code {\n let x := \"\\xe1\\xae\\xac\"\n }\n}\n";
|
||||
string parsed = "object \"object\" {\n code { let x := \"\\xe1\\xae\\xac\" }\n}\n";
|
||||
AssemblyStack stack(dev::test::Options::get().evmVersion(), AssemblyStack::Language::Assembly, OptimiserSettings::none());
|
||||
BOOST_REQUIRE(stack.parseAndAnalyze("", source));
|
||||
BOOST_REQUIRE(stack.errors().empty());
|
||||
BOOST_CHECK_EQUAL(stack.print(), parsed);
|
||||
|
||||
string parsedInner = "{\n let x := \"\\xe1\\xae\\xac\"\n}";
|
||||
string parsedInner = "{ let x := \"\\xe1\\xae\\xac\" }";
|
||||
parsePrintCompare(parsedInner);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(print_if)
|
||||
{
|
||||
parsePrintCompare("{\n if 2\n {\n pop(mload(0))\n }\n}");
|
||||
parsePrintCompare("{ if 2 { pop(mload(0)) } }");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(print_switch)
|
||||
{
|
||||
parsePrintCompare("{\n switch 42\n case 1 {\n }\n case 2 {\n }\n default {\n }\n}");
|
||||
parsePrintCompare("{\n switch 42\n case 1 { }\n case 2 { }\n default { }\n}");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(print_for)
|
||||
{
|
||||
parsePrintCompare("{\n let ret := 5\n for {\n let i := 1\n }\n lt(i, 15)\n {\n i := add(i, 1)\n }\n {\n ret := mul(ret, i)\n }\n}");
|
||||
parsePrintCompare("{\n let ret := 5\n for { let i := 1 } lt(i, 15) { i := add(i, 1) }\n { ret := mul(ret, i) }\n}");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_definitions_multiple_args)
|
||||
{
|
||||
parsePrintCompare("{\n function f(a, d)\n {\n mstore(a, d)\n }\n function g(a, d) -> x, y\n {\n }\n}");
|
||||
parsePrintCompare("{\n function f(a, d)\n { mstore(a, d) }\n function g(a, d) -> x, y\n { }\n}");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(function_calls)
|
||||
{
|
||||
string source = R"({
|
||||
function y()
|
||||
{
|
||||
}
|
||||
{ }
|
||||
function f(a) -> b
|
||||
{
|
||||
}
|
||||
{ }
|
||||
function g(a, b, c)
|
||||
{
|
||||
}
|
||||
{ }
|
||||
g(1, mul(2, address()), f(mul(2, caller())))
|
||||
y()
|
||||
})";
|
||||
|
@ -228,14 +228,10 @@ BOOST_AUTO_TEST_CASE(to_string)
|
||||
string expectation = R"(object "O" {
|
||||
code {
|
||||
let x := mload(0)
|
||||
if x
|
||||
{
|
||||
sstore(0, 1)
|
||||
}
|
||||
if x { sstore(0, 1) }
|
||||
}
|
||||
object "i" {
|
||||
code {
|
||||
}
|
||||
code { }
|
||||
data "j" hex"646566"
|
||||
}
|
||||
data "j" hex"616263"
|
||||
|
@ -7,14 +7,6 @@
|
||||
// step: blockFlattener
|
||||
// ----
|
||||
// {
|
||||
// for {
|
||||
// let a := 1
|
||||
// }
|
||||
// iszero(eq(a, 10))
|
||||
// {
|
||||
// a := add(a, 1)
|
||||
// }
|
||||
// {
|
||||
// a := add(a, 1)
|
||||
// }
|
||||
// for { let a := 1 } iszero(eq(a, 10)) { a := add(a, 1) }
|
||||
// { a := add(a, 1) }
|
||||
// }
|
||||
|
@ -12,15 +12,12 @@
|
||||
// {
|
||||
// let a := 1
|
||||
// let b := codesize()
|
||||
// for {
|
||||
// }
|
||||
// for { }
|
||||
// lt(1, b)
|
||||
// {
|
||||
// mstore(1, b)
|
||||
// a := add(a, b)
|
||||
// }
|
||||
// {
|
||||
// mstore(1, b)
|
||||
// }
|
||||
// { mstore(1, b) }
|
||||
// mstore(1, b)
|
||||
// }
|
||||
|
@ -8,9 +8,6 @@
|
||||
// ----
|
||||
// {
|
||||
// let b := 1
|
||||
// if b
|
||||
// {
|
||||
// b := b
|
||||
// }
|
||||
// if b { b := b }
|
||||
// let c := 1
|
||||
// }
|
||||
|
@ -2,5 +2,4 @@
|
||||
// ====
|
||||
// step: commonSubexpressionEliminator
|
||||
// ----
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
|
@ -18,17 +18,9 @@
|
||||
// ----
|
||||
// {
|
||||
// let a := 20
|
||||
// for {
|
||||
// }
|
||||
// lt(a, 40)
|
||||
// {
|
||||
// a := add(a, 2)
|
||||
// }
|
||||
// for { } lt(a, 40) { a := add(a, 2) }
|
||||
// {
|
||||
// a := a
|
||||
// if lt(a, 0)
|
||||
// {
|
||||
// break
|
||||
// }
|
||||
// if lt(a, 0) { break }
|
||||
// }
|
||||
// }
|
||||
|
@ -19,12 +19,7 @@
|
||||
// ----
|
||||
// {
|
||||
// let a := 20
|
||||
// for {
|
||||
// }
|
||||
// lt(a, 40)
|
||||
// {
|
||||
// a := add(a, 2)
|
||||
// }
|
||||
// for { } lt(a, 40) { a := add(a, 2) }
|
||||
// {
|
||||
// a := a
|
||||
// break
|
||||
|
@ -19,12 +19,7 @@
|
||||
// ----
|
||||
// {
|
||||
// let a := 20
|
||||
// for {
|
||||
// }
|
||||
// lt(a, 40)
|
||||
// {
|
||||
// a := add(a, 2)
|
||||
// }
|
||||
// for { } lt(a, 40) { a := add(a, 2) }
|
||||
// {
|
||||
// a := a
|
||||
// continue
|
||||
|
@ -7,6 +7,4 @@
|
||||
// ====
|
||||
// step: deadCodeEliminator
|
||||
// ----
|
||||
// {
|
||||
// stop()
|
||||
// }
|
||||
// { stop() }
|
||||
|
@ -19,7 +19,5 @@
|
||||
// fun()
|
||||
// revert(0, 0)
|
||||
// function fun()
|
||||
// {
|
||||
// return(1, 1)
|
||||
// }
|
||||
// { return(1, 1) }
|
||||
// }
|
||||
|
@ -18,14 +18,10 @@
|
||||
// {
|
||||
// let y := mload(0)
|
||||
// switch y
|
||||
// case 0 {
|
||||
// y := 8
|
||||
// }
|
||||
// case 0 { y := 8 }
|
||||
// case 1 {
|
||||
// y := 9
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// default {
|
||||
// y := 10
|
||||
// }
|
||||
// default { y := 10 }
|
||||
// }
|
||||
|
@ -8,8 +8,6 @@
|
||||
// step: deadCodeEliminator
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// { revert(0, 0) }
|
||||
// mstore(0, 0)
|
||||
// }
|
||||
|
@ -17,12 +17,7 @@
|
||||
// ----
|
||||
// {
|
||||
// let a := 20
|
||||
// for {
|
||||
// }
|
||||
// lt(a, 40)
|
||||
// {
|
||||
// a := add(a, 2)
|
||||
// }
|
||||
// for { } lt(a, 40) { a := add(a, 2) }
|
||||
// {
|
||||
// a := a
|
||||
// break
|
||||
|
@ -17,12 +17,7 @@
|
||||
// ----
|
||||
// {
|
||||
// let a := 20
|
||||
// for {
|
||||
// }
|
||||
// lt(a, 40)
|
||||
// {
|
||||
// a := add(a, 2)
|
||||
// }
|
||||
// for { } lt(a, 40) { a := add(a, 2) }
|
||||
// {
|
||||
// a := a
|
||||
// continue
|
||||
|
@ -21,12 +21,7 @@
|
||||
// {
|
||||
// let b := 20
|
||||
// let a := 20
|
||||
// for {
|
||||
// }
|
||||
// lt(a, 40)
|
||||
// {
|
||||
// a := add(a, 2)
|
||||
// }
|
||||
// for { } lt(a, 40) { a := add(a, 2) }
|
||||
// {
|
||||
// a := a
|
||||
// mstore(0, a)
|
||||
|
@ -11,19 +11,9 @@
|
||||
// yul: true
|
||||
// ----
|
||||
// {
|
||||
// { let a:u256, b:u256 }
|
||||
// {
|
||||
// let a:u256, b:u256
|
||||
// }
|
||||
// {
|
||||
// for {
|
||||
// let a_1:u256
|
||||
// }
|
||||
// a_1
|
||||
// {
|
||||
// a_1 := a_1
|
||||
// }
|
||||
// {
|
||||
// let b_2:u256 := a_1
|
||||
// }
|
||||
// for { let a_1:u256 } a_1 { a_1 := a_1 }
|
||||
// { let b_2:u256 := a_1 }
|
||||
// }
|
||||
// }
|
||||
|
@ -10,14 +10,9 @@
|
||||
// yul: true
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// let a:u256, b:u256, c:u256
|
||||
// }
|
||||
// { let a:u256, b:u256, c:u256 }
|
||||
// {
|
||||
// let a_1:bool
|
||||
// if a_1
|
||||
// {
|
||||
// let b_2:bool := a_1
|
||||
// }
|
||||
// if a_1 { let b_2:bool := a_1 }
|
||||
// }
|
||||
// }
|
||||
|
@ -2,5 +2,4 @@
|
||||
// ====
|
||||
// step: disambiguator
|
||||
// ----
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
|
@ -3,5 +3,4 @@
|
||||
// step: disambiguator
|
||||
// yul: true
|
||||
// ----
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
|
@ -12,17 +12,11 @@
|
||||
// yul: true
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// let a:u256, b:u256, c:u256
|
||||
// }
|
||||
// { let a:u256, b:u256, c:u256 }
|
||||
// {
|
||||
// let a_1:u256
|
||||
// switch a_1
|
||||
// case 0:u256 {
|
||||
// let b_2:u256 := a_1
|
||||
// }
|
||||
// default {
|
||||
// let c_3:u256 := a_1
|
||||
// }
|
||||
// case 0:u256 { let b_2:u256 := a_1 }
|
||||
// default { let c_3:u256 := a_1 }
|
||||
// }
|
||||
// }
|
||||
|
@ -4,10 +4,6 @@
|
||||
// yul: true
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// let a:u256
|
||||
// }
|
||||
// {
|
||||
// let a_1:u256
|
||||
// }
|
||||
// { let a:u256 }
|
||||
// { let a_1:u256 }
|
||||
// }
|
||||
|
@ -8,7 +8,5 @@
|
||||
// let a:u256
|
||||
// let a_1:u256
|
||||
// }
|
||||
// {
|
||||
// let a_2:u256
|
||||
// }
|
||||
// { let a_2:u256 }
|
||||
// }
|
||||
|
@ -15,9 +15,7 @@
|
||||
// let b:u256
|
||||
// }
|
||||
// function f(a:u256, c_1:u256) -> b_2:u256
|
||||
// {
|
||||
// let x:u256
|
||||
// }
|
||||
// { let x:u256 }
|
||||
// {
|
||||
// let a_3:u256
|
||||
// let x_4:u256
|
||||
|
@ -65,51 +65,27 @@
|
||||
// {
|
||||
// switch f1
|
||||
// case 0 {
|
||||
// if f2
|
||||
// {
|
||||
// rf := f3
|
||||
// }
|
||||
// if not(f2)
|
||||
// {
|
||||
// rf := f1
|
||||
// }
|
||||
// }
|
||||
// default {
|
||||
// rf := 3
|
||||
// if f2 { rf := f3 }
|
||||
// if not(f2) { rf := f1 }
|
||||
// }
|
||||
// default { rf := 3 }
|
||||
// }
|
||||
// function g(g1, g2, g3) -> rg
|
||||
// {
|
||||
// switch g1
|
||||
// case 0 {
|
||||
// if g2
|
||||
// {
|
||||
// rg := g3
|
||||
// }
|
||||
// if not(g2)
|
||||
// {
|
||||
// rg := g1
|
||||
// }
|
||||
// }
|
||||
// default {
|
||||
// rg := 3
|
||||
// if g2 { rg := g3 }
|
||||
// if not(g2) { rg := g1 }
|
||||
// }
|
||||
// default { rg := 3 }
|
||||
// }
|
||||
// function h(h1, h2, h3) -> rh
|
||||
// {
|
||||
// switch h1
|
||||
// case 1 {
|
||||
// if h2
|
||||
// {
|
||||
// rh := h3
|
||||
// }
|
||||
// if not(h2)
|
||||
// {
|
||||
// rh := h1
|
||||
// }
|
||||
// }
|
||||
// default {
|
||||
// rh := 3
|
||||
// if h2 { rh := h3 }
|
||||
// if not(h2) { rh := h1 }
|
||||
// }
|
||||
// default { rh := 3 }
|
||||
// }
|
||||
// }
|
||||
|
@ -11,11 +11,7 @@
|
||||
// f()
|
||||
// f()
|
||||
// function f()
|
||||
// {
|
||||
// mstore(1, mload(0))
|
||||
// }
|
||||
// { mstore(1, mload(0)) }
|
||||
// function g()
|
||||
// {
|
||||
// mstore(1, mload(0))
|
||||
// }
|
||||
// { mstore(1, mload(0)) }
|
||||
// }
|
||||
|
@ -13,21 +13,13 @@
|
||||
// function f(x)
|
||||
// {
|
||||
// switch x
|
||||
// case 0 {
|
||||
// mstore(0, 42)
|
||||
// }
|
||||
// case 1 {
|
||||
// mstore(1, 42)
|
||||
// }
|
||||
// case 0 { mstore(0, 42) }
|
||||
// case 1 { mstore(1, 42) }
|
||||
// }
|
||||
// function g(x_1)
|
||||
// {
|
||||
// switch x_1
|
||||
// case 1 {
|
||||
// mstore(1, 42)
|
||||
// }
|
||||
// case 0 {
|
||||
// mstore(0, 42)
|
||||
// }
|
||||
// case 1 { mstore(1, 42) }
|
||||
// case 0 { mstore(0, 42) }
|
||||
// }
|
||||
// }
|
||||
|
@ -7,8 +7,6 @@
|
||||
// ----
|
||||
// {
|
||||
// function f(a) -> x
|
||||
// {
|
||||
// x := add(a, a)
|
||||
// }
|
||||
// { x := add(a, a) }
|
||||
// let y := add(calldatasize(), calldatasize())
|
||||
// }
|
||||
|
@ -8,12 +8,8 @@
|
||||
// ----
|
||||
// {
|
||||
// function f(a) -> x
|
||||
// {
|
||||
// x := add(a, a)
|
||||
// }
|
||||
// { x := add(a, a) }
|
||||
// function g(b, c) -> y
|
||||
// {
|
||||
// y := mul(mload(c), add(b, b))
|
||||
// }
|
||||
// { y := mul(mload(c), add(b, b)) }
|
||||
// let y_1 := mul(mload(7), add(calldatasize(), calldatasize()))
|
||||
// }
|
||||
|
@ -8,9 +8,7 @@
|
||||
// ----
|
||||
// {
|
||||
// function f(a, r) -> x
|
||||
// {
|
||||
// x := g(a, f(r, f(r, r)))
|
||||
// }
|
||||
// { x := g(a, f(r, f(r, r))) }
|
||||
// function g(b, s) -> y
|
||||
// {
|
||||
// y := f(b, g(s, f(s, f(s, s))))
|
||||
|
@ -8,8 +8,6 @@
|
||||
// ----
|
||||
// {
|
||||
// function f(a) -> x
|
||||
// {
|
||||
// x := a
|
||||
// }
|
||||
// { x := a }
|
||||
// let y := f(mload(2))
|
||||
// }
|
||||
|
@ -11,9 +11,7 @@
|
||||
// ----
|
||||
// {
|
||||
// function f(a, b) -> x
|
||||
// {
|
||||
// x := add(b, a)
|
||||
// }
|
||||
// { x := add(b, a) }
|
||||
// function g() -> y
|
||||
// {
|
||||
// y := mload(0)
|
||||
|
@ -8,8 +8,6 @@
|
||||
// ----
|
||||
// {
|
||||
// function f() -> x:u256
|
||||
// {
|
||||
// x := 2:u256
|
||||
// }
|
||||
// { x := 2:u256 }
|
||||
// let y:u256 := 2:u256
|
||||
// }
|
||||
|
@ -8,8 +8,6 @@
|
||||
// ----
|
||||
// {
|
||||
// function f(a:u256) -> x:u256
|
||||
// {
|
||||
// x := a
|
||||
// }
|
||||
// { x := a }
|
||||
// let y:u256 := 7:u256
|
||||
// }
|
||||
|
@ -14,9 +14,6 @@
|
||||
// step: expressionJoiner
|
||||
// ----
|
||||
// {
|
||||
// if add(mload(7), sload(mload(3)))
|
||||
// {
|
||||
// let y := add(mload(3), 3)
|
||||
// }
|
||||
// if add(mload(7), sload(mload(3))) { let y := add(mload(3), 3) }
|
||||
// let t := add(3, 9)
|
||||
// }
|
||||
|
@ -5,12 +5,6 @@
|
||||
// step: expressionJoiner
|
||||
// ----
|
||||
// {
|
||||
// for {
|
||||
// let b := mload(1)
|
||||
// }
|
||||
// b
|
||||
// {
|
||||
// }
|
||||
// {
|
||||
// }
|
||||
// for { let b := mload(1) } b { }
|
||||
// { }
|
||||
// }
|
||||
|
@ -7,11 +7,6 @@
|
||||
// ----
|
||||
// {
|
||||
// let a := mload(0)
|
||||
// for {
|
||||
// }
|
||||
// a
|
||||
// {
|
||||
// }
|
||||
// {
|
||||
// }
|
||||
// for { } a { }
|
||||
// { }
|
||||
// }
|
||||
|
@ -2,5 +2,4 @@
|
||||
// ====
|
||||
// step: expressionJoiner
|
||||
// ----
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
|
@ -19,11 +19,7 @@
|
||||
// ----
|
||||
// {
|
||||
// switch add(mload(7), sload(mload(3)))
|
||||
// case 3 {
|
||||
// let y := add(mload(3), 3)
|
||||
// }
|
||||
// default {
|
||||
// sstore(1, 0)
|
||||
// }
|
||||
// case 3 { let y := add(mload(3), 3) }
|
||||
// default { sstore(1, 0) }
|
||||
// let t := add(3, 9)
|
||||
// }
|
||||
|
@ -8,8 +8,7 @@
|
||||
// ----
|
||||
// {
|
||||
// function f() -> x, z
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// let c, d := f()
|
||||
// let y := add(add(d, c), 7)
|
||||
// }
|
||||
|
@ -2,6 +2,4 @@
|
||||
// ====
|
||||
// step: expressionSimplifier
|
||||
// ----
|
||||
// {
|
||||
// let a := mload(0)
|
||||
// }
|
||||
// { let a := mload(0) }
|
||||
|
@ -2,6 +2,4 @@
|
||||
// ====
|
||||
// step: expressionSimplifier
|
||||
// ----
|
||||
// {
|
||||
// let a := 13
|
||||
// }
|
||||
// { let a := 13 }
|
||||
|
@ -2,6 +2,4 @@
|
||||
// ====
|
||||
// step: expressionSimplifier
|
||||
// ----
|
||||
// {
|
||||
// let a := 0
|
||||
// }
|
||||
// { let a := 0 }
|
||||
|
@ -7,7 +7,6 @@
|
||||
// ----
|
||||
// {
|
||||
// function f() -> a
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// let b := f()
|
||||
// }
|
||||
|
@ -7,12 +7,6 @@
|
||||
// ----
|
||||
// {
|
||||
// let a := 10
|
||||
// for {
|
||||
// }
|
||||
// iszero(iszero(a))
|
||||
// {
|
||||
// a := add(a, 1)
|
||||
// }
|
||||
// {
|
||||
// }
|
||||
// for { } iszero(iszero(a)) { a := add(a, 1) }
|
||||
// { }
|
||||
// }
|
||||
|
@ -7,7 +7,6 @@
|
||||
// ----
|
||||
// {
|
||||
// function f(a) -> b
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// let c := sub(f(0), f(1))
|
||||
// }
|
||||
|
@ -8,10 +8,8 @@
|
||||
// ----
|
||||
// {
|
||||
// function f1() -> a
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// function f2() -> b
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// let c := sub(f1(), f2())
|
||||
// }
|
||||
|
@ -8,7 +8,6 @@
|
||||
// ----
|
||||
// {
|
||||
// function f() -> a
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// let b := sub(f(), f())
|
||||
// }
|
||||
|
@ -9,7 +9,5 @@
|
||||
// ----
|
||||
// {
|
||||
// function f() -> c, d
|
||||
// {
|
||||
// let y := 7
|
||||
// }
|
||||
// { let y := 7 }
|
||||
// }
|
||||
|
@ -4,6 +4,4 @@
|
||||
// ====
|
||||
// step: expressionSimplifier
|
||||
// ----
|
||||
// {
|
||||
// let a := mload(0)
|
||||
// }
|
||||
// { let a := mload(0) }
|
||||
|
@ -2,5 +2,4 @@
|
||||
// ====
|
||||
// step: expressionSimplifier
|
||||
// ----
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
|
@ -19,9 +19,7 @@
|
||||
// let _5 := mul(_4, _2)
|
||||
// if _5
|
||||
// {
|
||||
// for {
|
||||
// let a := 2
|
||||
// }
|
||||
// for { let a := 2 }
|
||||
// lt(a, mload(a))
|
||||
// {
|
||||
// let _6 := 2
|
||||
@ -38,4 +36,4 @@
|
||||
// sstore(b, _12)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
@ -2,5 +2,4 @@
|
||||
// ====
|
||||
// step: expressionSplitter
|
||||
// ----
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
|
@ -12,13 +12,6 @@
|
||||
// let random := 42
|
||||
// let a := 1
|
||||
// let b := 1
|
||||
// for {
|
||||
// }
|
||||
// iszero(eq(a, 10))
|
||||
// {
|
||||
// a := add(a, b)
|
||||
// }
|
||||
// {
|
||||
// a := add(a, 1)
|
||||
// }
|
||||
// for { } iszero(eq(a, 10)) { a := add(a, b) }
|
||||
// { a := add(a, 1) }
|
||||
// }
|
||||
|
@ -9,13 +9,6 @@
|
||||
// ----
|
||||
// {
|
||||
// let a := 1
|
||||
// for {
|
||||
// }
|
||||
// iszero(eq(a, 10))
|
||||
// {
|
||||
// a := add(a, 1)
|
||||
// }
|
||||
// {
|
||||
// a := add(a, 1)
|
||||
// }
|
||||
// for { } iszero(eq(a, 10)) { a := add(a, 1) }
|
||||
// { a := add(a, 1) }
|
||||
// }
|
||||
|
@ -19,31 +19,15 @@
|
||||
// {
|
||||
// let random := 42
|
||||
// let a := 1
|
||||
// for {
|
||||
// }
|
||||
// iszero(eq(a, 10))
|
||||
// {
|
||||
// }
|
||||
// {
|
||||
// a := add(a, 1)
|
||||
// }
|
||||
// for { } iszero(eq(a, 10)) { }
|
||||
// { a := add(a, 1) }
|
||||
// let b := 1
|
||||
// for {
|
||||
// }
|
||||
// for { }
|
||||
// iszero(eq(b, 10))
|
||||
// {
|
||||
// let c := 1
|
||||
// for {
|
||||
// }
|
||||
// iszero(eq(c, 2))
|
||||
// {
|
||||
// c := add(c, 1)
|
||||
// }
|
||||
// {
|
||||
// b := add(b, 1)
|
||||
// }
|
||||
// }
|
||||
// {
|
||||
// mstore(b, b)
|
||||
// for { } iszero(eq(c, 2)) { c := add(c, 1) }
|
||||
// { b := add(b, 1) }
|
||||
// }
|
||||
// { mstore(b, b) }
|
||||
// }
|
||||
|
@ -10,13 +10,6 @@
|
||||
// {
|
||||
// let random := 42
|
||||
// let a := 1
|
||||
// for {
|
||||
// }
|
||||
// iszero(eq(a, 10))
|
||||
// {
|
||||
// a := add(a, 1)
|
||||
// }
|
||||
// {
|
||||
// a := add(a, 1)
|
||||
// }
|
||||
// for { } iszero(eq(a, 10)) { a := add(a, 1) }
|
||||
// { a := add(a, 1) }
|
||||
// }
|
||||
|
@ -18,10 +18,7 @@
|
||||
// let r_11 := 0
|
||||
// a_10 := mload(a_10)
|
||||
// r_11 := add(a_10, calldatasize())
|
||||
// if gt(r_11, _2)
|
||||
// {
|
||||
// sstore(0, 2)
|
||||
// }
|
||||
// if gt(r_11, _2) { sstore(0, 2) }
|
||||
// }
|
||||
// function f(a) -> r
|
||||
// {
|
||||
|
@ -19,9 +19,7 @@
|
||||
// let y_1 := y_10
|
||||
// }
|
||||
// function f(a) -> x
|
||||
// {
|
||||
// x := add(a, a)
|
||||
// }
|
||||
// { x := add(a, a) }
|
||||
// function g(b, c) -> y
|
||||
// {
|
||||
// let a_13 := b
|
||||
|
@ -56,7 +56,5 @@
|
||||
// mstore(1, x_14)
|
||||
// }
|
||||
// function h() -> t
|
||||
// {
|
||||
// t := 2
|
||||
// }
|
||||
// { t := 2 }
|
||||
// }
|
||||
|
@ -14,9 +14,7 @@
|
||||
// ----
|
||||
// {
|
||||
// function f(a) -> b
|
||||
// {
|
||||
// b := sload(mload(a))
|
||||
// }
|
||||
// { b := sload(mload(a)) }
|
||||
// function g() -> x_1
|
||||
// {
|
||||
// let a_20 := 2
|
||||
|
@ -54,7 +54,5 @@
|
||||
// let x_1 := f(f(f(f(f(f(b_57))))))
|
||||
// }
|
||||
// function f(a) -> b
|
||||
// {
|
||||
// b := sload(mload(a))
|
||||
// }
|
||||
// { b := sload(mload(a)) }
|
||||
// }
|
||||
|
@ -13,7 +13,5 @@
|
||||
// sstore(a_3, a_3)
|
||||
// }
|
||||
// function f(a)
|
||||
// {
|
||||
// sstore(a, a)
|
||||
// }
|
||||
// { sstore(a, a) }
|
||||
// }
|
||||
|
@ -19,8 +19,7 @@
|
||||
// sstore(a_3, 0)
|
||||
// r_4 := a_3
|
||||
// let x := r_4
|
||||
// for {
|
||||
// }
|
||||
// for { }
|
||||
// f(x)
|
||||
// {
|
||||
// let a_6 := x
|
||||
|
@ -13,7 +13,5 @@
|
||||
// f(1)
|
||||
// }
|
||||
// function f(a)
|
||||
// {
|
||||
// f(1)
|
||||
// }
|
||||
// { f(1) }
|
||||
// }
|
||||
|
@ -5,6 +5,4 @@
|
||||
// ====
|
||||
// step: fullSimplify
|
||||
// ----
|
||||
// {
|
||||
// mstore(0, 13)
|
||||
// }
|
||||
// { mstore(0, 13) }
|
||||
|
@ -5,6 +5,4 @@
|
||||
// ====
|
||||
// step: fullSimplify
|
||||
// ----
|
||||
// {
|
||||
// mstore(0, 0)
|
||||
// }
|
||||
// { mstore(0, 0) }
|
||||
|
@ -8,7 +8,6 @@
|
||||
// ----
|
||||
// {
|
||||
// function f() -> a
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// mstore(f(), 0)
|
||||
// }
|
||||
|
@ -8,12 +8,6 @@
|
||||
// ----
|
||||
// {
|
||||
// let a := 10
|
||||
// for {
|
||||
// }
|
||||
// iszero(iszero(a))
|
||||
// {
|
||||
// a := add(a, 1)
|
||||
// }
|
||||
// {
|
||||
// }
|
||||
// for { } iszero(iszero(a)) { a := add(a, 1) }
|
||||
// { }
|
||||
// }
|
||||
|
@ -7,8 +7,7 @@
|
||||
// ----
|
||||
// {
|
||||
// function f(a) -> b
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// let _2 := f(1)
|
||||
// let _3 := 0
|
||||
// mstore(_3, sub(f(_3), _2))
|
||||
|
@ -9,10 +9,8 @@
|
||||
// ----
|
||||
// {
|
||||
// function f1() -> a
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// function f2() -> b
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// mstore(0, sub(f1(), f2()))
|
||||
// }
|
||||
|
@ -9,7 +9,6 @@
|
||||
// ----
|
||||
// {
|
||||
// function f() -> a
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// mstore(0, sub(f(), f()))
|
||||
// }
|
||||
|
@ -2,5 +2,4 @@
|
||||
// ====
|
||||
// step: fullSimplify
|
||||
// ----
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
|
@ -1076,10 +1076,7 @@
|
||||
// {
|
||||
// let _1 := mload(1)
|
||||
// let _2 := mload(0)
|
||||
// if slt(sub(_1, _2), 64)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if slt(sub(_1, _2), 64) { revert(0, 0) }
|
||||
// sstore(0, and(calldataload(_2), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
|
||||
// let x0, x1, x2, x3, x4 := abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_enum$_Operation_$1949(mload(7), mload(8))
|
||||
// sstore(x1, x0)
|
||||
@ -1089,39 +1086,21 @@
|
||||
// }
|
||||
// function abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_enum$_Operation_$1949(headStart, dataEnd) -> value0, value1, value2, value3, value4
|
||||
// {
|
||||
// if slt(sub(dataEnd, headStart), 128)
|
||||
// {
|
||||
// revert(value4, value4)
|
||||
// }
|
||||
// if slt(sub(dataEnd, headStart), 128) { revert(value4, value4) }
|
||||
// value0 := and(calldataload(headStart), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
|
||||
// value1 := calldataload(add(headStart, 32))
|
||||
// let offset := calldataload(add(headStart, 64))
|
||||
// let _1 := 0xffffffffffffffff
|
||||
// if gt(offset, _1)
|
||||
// {
|
||||
// revert(value4, value4)
|
||||
// }
|
||||
// if gt(offset, _1) { revert(value4, value4) }
|
||||
// let _2 := add(headStart, offset)
|
||||
// if iszero(slt(add(_2, 0x1f), dataEnd))
|
||||
// {
|
||||
// revert(value4, value4)
|
||||
// }
|
||||
// if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value4, value4) }
|
||||
// let length := calldataload(_2)
|
||||
// if gt(length, _1)
|
||||
// {
|
||||
// revert(value4, value4)
|
||||
// }
|
||||
// if gt(add(add(_2, length), 32), dataEnd)
|
||||
// {
|
||||
// revert(value4, value4)
|
||||
// }
|
||||
// if gt(length, _1) { revert(value4, value4) }
|
||||
// if gt(add(add(_2, length), 32), dataEnd) { revert(value4, value4) }
|
||||
// value2 := add(_2, 32)
|
||||
// value3 := length
|
||||
// let _3 := calldataload(add(headStart, 96))
|
||||
// if iszero(lt(_3, 3))
|
||||
// {
|
||||
// revert(value4, value4)
|
||||
// }
|
||||
// if iszero(lt(_3, 3)) { revert(value4, value4) }
|
||||
// value4 := _3
|
||||
// }
|
||||
// function abi_encode_tuple_t_bytes32_t_address_t_uint256_t_bytes32_t_enum$_Operation_$1949_t_uint256_t_uint256_t_uint256_t_address_t_address_t_uint256__to_t_bytes32_t_address_t_uint256_t_bytes32_t_uint8_t_uint256_t_uint256_t_uint256_t_address_t_address_t_uint256_(headStart, value10, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail
|
||||
@ -1132,10 +1111,7 @@
|
||||
// mstore(add(headStart, 32), and(value1, _1))
|
||||
// mstore(add(headStart, 64), value2)
|
||||
// mstore(add(headStart, 96), value3)
|
||||
// if iszero(lt(value4, 3))
|
||||
// {
|
||||
// invalid()
|
||||
// }
|
||||
// if iszero(lt(value4, 3)) { invalid() }
|
||||
// mstore(add(headStart, 128), value4)
|
||||
// mstore(add(headStart, 160), value5)
|
||||
// mstore(add(headStart, 192), value6)
|
||||
|
@ -469,12 +469,7 @@
|
||||
// pos := 64
|
||||
// let srcPtr := add(_3, _1)
|
||||
// let i := _2
|
||||
// for {
|
||||
// }
|
||||
// lt(i, length)
|
||||
// {
|
||||
// i := add(i, 1)
|
||||
// }
|
||||
// for { } lt(i, length) { i := add(i, 1) }
|
||||
// {
|
||||
// abi_encode_t_array$_t_contract$_C_$55_$3_memory_to_t_array$_t_address_$3_memory_ptr(mload(srcPtr), pos)
|
||||
// srcPtr := add(srcPtr, _1)
|
||||
@ -482,22 +477,13 @@
|
||||
// }
|
||||
// let _4 := mload(64)
|
||||
// let _5 := mload(_1)
|
||||
// if slt(sub(_4, _5), 128)
|
||||
// {
|
||||
// revert(_2, _2)
|
||||
// }
|
||||
// if slt(sub(_4, _5), 128) { revert(_2, _2) }
|
||||
// let offset := calldataload(add(_5, 64))
|
||||
// let _6 := 0xffffffffffffffff
|
||||
// if gt(offset, _6)
|
||||
// {
|
||||
// revert(_2, _2)
|
||||
// }
|
||||
// if gt(offset, _6) { revert(_2, _2) }
|
||||
// let value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(_5, offset), _4)
|
||||
// let offset_1 := calldataload(add(_5, 96))
|
||||
// if gt(offset_1, _6)
|
||||
// {
|
||||
// revert(_2, _2)
|
||||
// }
|
||||
// if gt(offset_1, _6) { revert(_2, _2) }
|
||||
// let value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(_5, offset_1), _4)
|
||||
// sstore(calldataload(_5), calldataload(add(_5, _1)))
|
||||
// sstore(value2, value3)
|
||||
@ -505,10 +491,7 @@
|
||||
// }
|
||||
// function abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(offset, end) -> array
|
||||
// {
|
||||
// if iszero(slt(add(offset, 0x1f), end))
|
||||
// {
|
||||
// revert(array, array)
|
||||
// }
|
||||
// if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }
|
||||
// let length := calldataload(offset)
|
||||
// array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn_memory(length))
|
||||
// let dst := array
|
||||
@ -516,37 +499,18 @@
|
||||
// let _1 := 0x20
|
||||
// dst := add(array, _1)
|
||||
// let src := add(offset, _1)
|
||||
// if gt(add(add(offset, mul(length, 0x40)), _1), end)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if gt(add(add(offset, mul(length, 0x40)), _1), end) { revert(0, 0) }
|
||||
// let i := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(i, length)
|
||||
// for { } lt(i, length) { i := add(i, 1) }
|
||||
// {
|
||||
// i := add(i, 1)
|
||||
// }
|
||||
// {
|
||||
// if iszero(slt(add(src, 0x1f), end))
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if iszero(slt(add(src, 0x1f), end)) { revert(0, 0) }
|
||||
// let dst_1 := allocateMemory(array_allocation_size_t_array$_t_uint256_$2_memory(0x2))
|
||||
// let dst_2 := dst_1
|
||||
// let src_1 := src
|
||||
// let _2 := add(src, 0x40)
|
||||
// if gt(_2, end)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if gt(_2, end) { revert(0, 0) }
|
||||
// let i_1 := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(i_1, 0x2)
|
||||
// {
|
||||
// i_1 := add(i_1, 1)
|
||||
// }
|
||||
// for { } lt(i_1, 0x2) { i_1 := add(i_1, 1) }
|
||||
// {
|
||||
// mstore(dst_1, calldataload(src_1))
|
||||
// dst_1 := add(dst_1, _1)
|
||||
@ -559,10 +523,7 @@
|
||||
// }
|
||||
// function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array
|
||||
// {
|
||||
// if iszero(slt(add(offset, 0x1f), end))
|
||||
// {
|
||||
// revert(array, array)
|
||||
// }
|
||||
// if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }
|
||||
// let length := calldataload(offset)
|
||||
// array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn_memory(length))
|
||||
// let dst := array
|
||||
@ -570,17 +531,9 @@
|
||||
// let _1 := 0x20
|
||||
// dst := add(array, _1)
|
||||
// let src := add(offset, _1)
|
||||
// if gt(add(add(offset, mul(length, _1)), _1), end)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }
|
||||
// let i := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(i, length)
|
||||
// {
|
||||
// i := add(i, 1)
|
||||
// }
|
||||
// for { } lt(i, length) { i := add(i, 1) }
|
||||
// {
|
||||
// mstore(dst, calldataload(src))
|
||||
// dst := add(dst, _1)
|
||||
@ -591,12 +544,7 @@
|
||||
// {
|
||||
// let srcPtr := value
|
||||
// let i := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(i, 0x3)
|
||||
// {
|
||||
// i := add(i, 1)
|
||||
// }
|
||||
// for { } lt(i, 0x3) { i := add(i, 1) }
|
||||
// {
|
||||
// mstore(pos, and(mload(srcPtr), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
|
||||
// srcPtr := add(srcPtr, 0x20)
|
||||
@ -607,26 +555,17 @@
|
||||
// {
|
||||
// memPtr := mload(64)
|
||||
// let newFreePtr := add(memPtr, size)
|
||||
// if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr))
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { revert(0, 0) }
|
||||
// mstore(64, newFreePtr)
|
||||
// }
|
||||
// function array_allocation_size_t_array$_t_address_$dyn_memory(length) -> size
|
||||
// {
|
||||
// if gt(length, 0xffffffffffffffff)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if gt(length, 0xffffffffffffffff) { revert(0, 0) }
|
||||
// size := add(mul(length, 0x20), 0x20)
|
||||
// }
|
||||
// function array_allocation_size_t_array$_t_uint256_$2_memory(length) -> size
|
||||
// {
|
||||
// if gt(length, 0xffffffffffffffff)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if gt(length, 0xffffffffffffffff) { revert(0, 0) }
|
||||
// size := mul(length, 0x20)
|
||||
// }
|
||||
// }
|
||||
|
@ -254,12 +254,7 @@
|
||||
// let b := add(0x300, mul(n, 0x80))
|
||||
// let i := 0
|
||||
// let i_1 := i
|
||||
// for {
|
||||
// }
|
||||
// lt(i, n)
|
||||
// {
|
||||
// i := add(i, 0x01)
|
||||
// }
|
||||
// for { } lt(i, n) { i := add(i, 0x01) }
|
||||
// {
|
||||
// let _1 := add(calldataload(0x04), mul(i, 0xc0))
|
||||
// let noteIndex := add(_1, 0x24)
|
||||
@ -270,14 +265,9 @@
|
||||
// switch eq(_2, n)
|
||||
// case 1 {
|
||||
// k := kn
|
||||
// if eq(m, n)
|
||||
// {
|
||||
// k := sub(gen_order, kn)
|
||||
// }
|
||||
// }
|
||||
// case 0 {
|
||||
// k := calldataload(noteIndex)
|
||||
// if eq(m, n) { k := sub(gen_order, kn) }
|
||||
// }
|
||||
// case 0 { k := calldataload(noteIndex) }
|
||||
// validateCommitment(noteIndex, k, a)
|
||||
// switch gt(_2, m)
|
||||
// case 1 {
|
||||
@ -323,10 +313,7 @@
|
||||
// }
|
||||
// b := add(b, _3)
|
||||
// }
|
||||
// if lt(m, n)
|
||||
// {
|
||||
// validatePairing(0x64)
|
||||
// }
|
||||
// if lt(m, n) { validatePairing(0x64) }
|
||||
// if iszero(eq(mod(keccak256(0x2a0, add(b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), gen_order), challenge))
|
||||
// {
|
||||
// mstore(i_1, 404)
|
||||
@ -388,12 +375,7 @@
|
||||
// function hashCommitments(notes, n)
|
||||
// {
|
||||
// let i := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(i, n)
|
||||
// {
|
||||
// i := add(i, 0x01)
|
||||
// }
|
||||
// for { } lt(i, n) { i := add(i, 0x01) }
|
||||
// {
|
||||
// calldatacopy(add(0x300, mul(i, 0x80)), add(add(notes, mul(i, 0xc0)), 0x60), 0x80)
|
||||
// }
|
||||
|
@ -12,8 +12,4 @@
|
||||
// ====
|
||||
// step: fullSuite
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// mstore(1, 1)
|
||||
// }
|
||||
// }
|
||||
// { { mstore(1, 1) } }
|
||||
|
@ -47,19 +47,10 @@
|
||||
// }
|
||||
// function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length
|
||||
// {
|
||||
// if iszero(slt(add(offset, 0x1f), end))
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }
|
||||
// length := calldataload(offset)
|
||||
// if gt(length, 0xffffffffffffffff)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if gt(length, 0xffffffffffffffff) { revert(0, 0) }
|
||||
// arrayPos := add(offset, 0x20)
|
||||
// if gt(add(add(offset, length), 0x20), end)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }
|
||||
// }
|
||||
// }
|
||||
|
@ -9,8 +9,4 @@
|
||||
// ====
|
||||
// step: fullSuite
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// mstore(9, 0)
|
||||
// }
|
||||
// }
|
||||
// { { mstore(9, 0) } }
|
||||
|
@ -10,8 +10,4 @@
|
||||
// ====
|
||||
// step: fullSuite
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// mstore(10, 0)
|
||||
// }
|
||||
// }
|
||||
// { { mstore(10, 0) } }
|
||||
|
@ -8,11 +8,7 @@
|
||||
// step: functionGrouper
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// let x := 2
|
||||
// }
|
||||
// { let x := 2 }
|
||||
// function f() -> y
|
||||
// {
|
||||
// y := 8
|
||||
// }
|
||||
// { y := 8 }
|
||||
// }
|
||||
|
@ -6,20 +6,13 @@
|
||||
// {
|
||||
// {
|
||||
// let a:u256
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// }
|
||||
// function f() -> x:bool
|
||||
// {
|
||||
// let b:u256 := 4:u256
|
||||
// {
|
||||
// }
|
||||
// for {
|
||||
// }
|
||||
// f()
|
||||
// {
|
||||
// }
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// for { } f() { }
|
||||
// { }
|
||||
// }
|
||||
// }
|
||||
|
@ -8,13 +8,7 @@
|
||||
// step: functionGrouper
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// {
|
||||
// let x := 2
|
||||
// }
|
||||
// }
|
||||
// { { let x := 2 } }
|
||||
// function f() -> y
|
||||
// {
|
||||
// y := 8
|
||||
// }
|
||||
// { y := 8 }
|
||||
// }
|
||||
|
@ -15,11 +15,7 @@
|
||||
// let e:u256
|
||||
// }
|
||||
// function f()
|
||||
// {
|
||||
// let b:u256
|
||||
// }
|
||||
// { let b:u256 }
|
||||
// function g()
|
||||
// {
|
||||
// let d:u256
|
||||
// }
|
||||
// { let d:u256 }
|
||||
// }
|
||||
|
@ -13,16 +13,12 @@
|
||||
// yul: true
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// let a:u256
|
||||
// }
|
||||
// { let a:u256 }
|
||||
// function f()
|
||||
// {
|
||||
// let b:u256
|
||||
// function g()
|
||||
// {
|
||||
// let c:u256
|
||||
// }
|
||||
// { let c:u256 }
|
||||
// let d:u256
|
||||
// }
|
||||
// }
|
||||
|
@ -6,10 +6,7 @@
|
||||
// yul: true
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// let a:u256
|
||||
// }
|
||||
// { let a:u256 }
|
||||
// function f()
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// }
|
||||
|
@ -2,7 +2,4 @@
|
||||
// ====
|
||||
// step: functionGrouper
|
||||
// ----
|
||||
// {
|
||||
// {
|
||||
// }
|
||||
// }
|
||||
// { { } }
|
||||
|
@ -16,12 +16,7 @@
|
||||
// function f() -> x:bool
|
||||
// {
|
||||
// let b:u256 := 4:u256
|
||||
// for {
|
||||
// }
|
||||
// f()
|
||||
// {
|
||||
// }
|
||||
// {
|
||||
// }
|
||||
// for { } f() { }
|
||||
// { }
|
||||
// }
|
||||
// }
|
||||
|
@ -14,11 +14,7 @@
|
||||
// let c:u256
|
||||
// let e:u256
|
||||
// function f()
|
||||
// {
|
||||
// let b:u256
|
||||
// }
|
||||
// { let b:u256 }
|
||||
// function g()
|
||||
// {
|
||||
// let d:u256
|
||||
// }
|
||||
// { let d:u256 }
|
||||
// }
|
||||
|
@ -13,9 +13,7 @@
|
||||
// {
|
||||
// let a:u256
|
||||
// function g()
|
||||
// {
|
||||
// let c:u256
|
||||
// }
|
||||
// { let c:u256 }
|
||||
// function f()
|
||||
// {
|
||||
// let b:u256
|
||||
|
@ -9,6 +9,5 @@
|
||||
// {
|
||||
// let a:u256
|
||||
// function f()
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// }
|
||||
|
@ -3,5 +3,4 @@
|
||||
// ====
|
||||
// step: functionHoister
|
||||
// ----
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
|
@ -15,20 +15,13 @@
|
||||
// function main()
|
||||
// {
|
||||
// let a:u256
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// }
|
||||
// function f() -> x:bool
|
||||
// {
|
||||
// let b:u256 := 4:u256
|
||||
// {
|
||||
// }
|
||||
// for {
|
||||
// }
|
||||
// f()
|
||||
// {
|
||||
// }
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// for { } f() { }
|
||||
// { }
|
||||
// }
|
||||
// }
|
||||
|
@ -17,11 +17,7 @@
|
||||
// let e:u256
|
||||
// }
|
||||
// function f()
|
||||
// {
|
||||
// let b:u256
|
||||
// }
|
||||
// { let b:u256 }
|
||||
// function g()
|
||||
// {
|
||||
// let d:u256
|
||||
// }
|
||||
// { let d:u256 }
|
||||
// }
|
||||
|
@ -12,16 +12,12 @@
|
||||
// ----
|
||||
// {
|
||||
// function main()
|
||||
// {
|
||||
// let a:u256
|
||||
// }
|
||||
// { let a:u256 }
|
||||
// function f()
|
||||
// {
|
||||
// let b:u256
|
||||
// function g()
|
||||
// {
|
||||
// let c:u256
|
||||
// }
|
||||
// { let c:u256 }
|
||||
// let d:u256
|
||||
// }
|
||||
// }
|
||||
|
@ -8,10 +8,7 @@
|
||||
// ----
|
||||
// {
|
||||
// function main()
|
||||
// {
|
||||
// let a:u256
|
||||
// }
|
||||
// { let a:u256 }
|
||||
// function f()
|
||||
// {
|
||||
// }
|
||||
// { }
|
||||
// }
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user