Format short blocks and loops on a single line.

This commit is contained in:
chriseth 2019-05-08 12:41:19 +02:00
parent 6c9c54a657
commit 0532a8cef2
180 changed files with 338 additions and 1089 deletions

View File

@ -191,7 +191,11 @@ string AsmPrinter::operator()(FunctionCall const& _functionCall) const
string AsmPrinter::operator()(If const& _if) const string AsmPrinter::operator()(If const& _if) const
{ {
solAssert(_if.condition, "Invalid if condition."); 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 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 string AsmPrinter::operator()(ForLoop const& _forLoop) const
{ {
solAssert(_forLoop.condition, "Invalid for loop condition."); solAssert(_forLoop.condition, "Invalid for loop condition.");
string out = "for "; string pre = (*this)(_forLoop.pre);
out += (*this)(_forLoop.pre); string condition = boost::apply_visitor(*this, *_forLoop.condition);
out += "\n"; string post = (*this)(_forLoop.post);
out += boost::apply_visitor(*this, *_forLoop.condition); char delim = '\n';
out += "\n"; if (
out += (*this)(_forLoop.post); pre.size() + condition.size() + post.size() < 60 &&
out += "\n"; pre.find('\n') == string::npos &&
out += (*this)(_forLoop.body); post.find('\n') == string::npos
return out; )
delim = ' ';
return
("for " + move(pre) + delim + move(condition) + delim + move(post) + "\n") +
(*this)(_forLoop.body);
} }
string AsmPrinter::operator()(Break const&) const string AsmPrinter::operator()(Break const&) const
@ -236,13 +244,18 @@ string AsmPrinter::operator()(Continue const&) const
string AsmPrinter::operator()(Block const& _block) const string AsmPrinter::operator()(Block const& _block) const
{ {
if (_block.statements.empty()) if (_block.statements.empty())
return "{\n}"; return "{ }";
string body = boost::algorithm::join( string body = boost::algorithm::join(
_block.statements | boost::adaptors::transformed(boost::apply_visitor(*this)), _block.statements | boost::adaptors::transformed(boost::apply_visitor(*this)),
"\n" "\n"
); );
boost::replace_all(body, "\n", "\n "); if (body.size() < 30 && body.find('\n') == string::npos)
return "{\n " + body + "\n}"; return "{ " + body + " }";
else
{
boost::replace_all(body, "\n", "\n ");
return "{\n " + body + "\n}";
}
} }
string AsmPrinter::formatTypedName(TypedName _variable) const string AsmPrinter::formatTypedName(TypedName _variable) const

View File

@ -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}}}

View File

@ -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"}]}

View File

@ -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"}]}

View File

@ -555,7 +555,7 @@ BOOST_AUTO_TEST_SUITE(Printing)
BOOST_AUTO_TEST_CASE(print_smoke) BOOST_AUTO_TEST_CASE(print_smoke)
{ {
parsePrintCompare("{\n}"); parsePrintCompare("{ }");
} }
BOOST_AUTO_TEST_CASE(print_instructions) BOOST_AUTO_TEST_CASE(print_instructions)
@ -570,7 +570,7 @@ BOOST_AUTO_TEST_CASE(print_subblock)
BOOST_AUTO_TEST_CASE(print_functional) 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) BOOST_AUTO_TEST_CASE(print_label)
@ -585,7 +585,7 @@ BOOST_AUTO_TEST_CASE(print_assignments)
BOOST_AUTO_TEST_CASE(print_multi_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) 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) BOOST_AUTO_TEST_CASE(print_string_literal_unicode)
{ {
string source = "{ let x := \"\\u1bac\" }"; 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()); AssemblyStack stack(dev::test::Options::get().evmVersion(), AssemblyStack::Language::Assembly, OptimiserSettings::none());
BOOST_REQUIRE(stack.parseAndAnalyze("", source)); BOOST_REQUIRE(stack.parseAndAnalyze("", source));
BOOST_REQUIRE(stack.errors().empty()); BOOST_REQUIRE(stack.errors().empty());
BOOST_CHECK_EQUAL(stack.print(), parsed); BOOST_CHECK_EQUAL(stack.print(), parsed);
string parsedInner = "{\n let x := \"\\xe1\\xae\\xac\"\n}"; string parsedInner = "{ let x := \"\\xe1\\xae\\xac\" }";
parsePrintCompare(parsedInner); parsePrintCompare(parsedInner);
} }
BOOST_AUTO_TEST_CASE(print_if) 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) 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) 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) 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) BOOST_AUTO_TEST_CASE(function_calls)
{ {
string source = R"({ string source = R"({
function y() function y()
{ { }
}
function f(a) -> b function f(a) -> b
{ { }
}
function g(a, b, c) function g(a, b, c)
{ { }
}
g(1, mul(2, address()), f(mul(2, caller()))) g(1, mul(2, address()), f(mul(2, caller())))
y() y()
})"; })";

View File

@ -228,14 +228,10 @@ BOOST_AUTO_TEST_CASE(to_string)
string expectation = R"(object "O" { string expectation = R"(object "O" {
code { code {
let x := mload(0) let x := mload(0)
if x if x { sstore(0, 1) }
{
sstore(0, 1)
}
} }
object "i" { object "i" {
code { code { }
}
data "j" hex"646566" data "j" hex"646566"
} }
data "j" hex"616263" data "j" hex"616263"

View File

@ -7,14 +7,6 @@
// step: blockFlattener // step: blockFlattener
// ---- // ----
// { // {
// for { // for { let a := 1 } iszero(eq(a, 10)) { a := add(a, 1) }
// let a := 1 // { a := add(a, 1) }
// }
// iszero(eq(a, 10))
// {
// a := add(a, 1)
// }
// {
// a := add(a, 1)
// }
// } // }

View File

@ -12,15 +12,12 @@
// { // {
// let a := 1 // let a := 1
// let b := codesize() // let b := codesize()
// for { // for { }
// }
// lt(1, b) // lt(1, b)
// { // {
// mstore(1, b) // mstore(1, b)
// a := add(a, b) // a := add(a, b)
// } // }
// { // { mstore(1, b) }
// mstore(1, b)
// }
// mstore(1, b) // mstore(1, b)
// } // }

View File

@ -8,9 +8,6 @@
// ---- // ----
// { // {
// let b := 1 // let b := 1
// if b // if b { b := b }
// {
// b := b
// }
// let c := 1 // let c := 1
// } // }

View File

@ -2,5 +2,4 @@
// ==== // ====
// step: commonSubexpressionEliminator // step: commonSubexpressionEliminator
// ---- // ----
// { // { }
// }

View File

@ -18,17 +18,9 @@
// ---- // ----
// { // {
// let a := 20 // let a := 20
// for { // for { } lt(a, 40) { a := add(a, 2) }
// }
// lt(a, 40)
// {
// a := add(a, 2)
// }
// { // {
// a := a // a := a
// if lt(a, 0) // if lt(a, 0) { break }
// {
// break
// }
// } // }
// } // }

View File

@ -19,12 +19,7 @@
// ---- // ----
// { // {
// let a := 20 // let a := 20
// for { // for { } lt(a, 40) { a := add(a, 2) }
// }
// lt(a, 40)
// {
// a := add(a, 2)
// }
// { // {
// a := a // a := a
// break // break

View File

@ -19,12 +19,7 @@
// ---- // ----
// { // {
// let a := 20 // let a := 20
// for { // for { } lt(a, 40) { a := add(a, 2) }
// }
// lt(a, 40)
// {
// a := add(a, 2)
// }
// { // {
// a := a // a := a
// continue // continue

View File

@ -7,6 +7,4 @@
// ==== // ====
// step: deadCodeEliminator // step: deadCodeEliminator
// ---- // ----
// { // { stop() }
// stop()
// }

View File

@ -19,7 +19,5 @@
// fun() // fun()
// revert(0, 0) // revert(0, 0)
// function fun() // function fun()
// { // { return(1, 1) }
// return(1, 1)
// }
// } // }

View File

@ -18,14 +18,10 @@
// { // {
// let y := mload(0) // let y := mload(0)
// switch y // switch y
// case 0 { // case 0 { y := 8 }
// y := 8
// }
// case 1 { // case 1 {
// y := 9 // y := 9
// revert(0, 0) // revert(0, 0)
// } // }
// default { // default { y := 10 }
// y := 10
// }
// } // }

View File

@ -8,8 +8,6 @@
// step: deadCodeEliminator // step: deadCodeEliminator
// ---- // ----
// { // {
// { // { revert(0, 0) }
// revert(0, 0)
// }
// mstore(0, 0) // mstore(0, 0)
// } // }

View File

@ -17,12 +17,7 @@
// ---- // ----
// { // {
// let a := 20 // let a := 20
// for { // for { } lt(a, 40) { a := add(a, 2) }
// }
// lt(a, 40)
// {
// a := add(a, 2)
// }
// { // {
// a := a // a := a
// break // break

View File

@ -17,12 +17,7 @@
// ---- // ----
// { // {
// let a := 20 // let a := 20
// for { // for { } lt(a, 40) { a := add(a, 2) }
// }
// lt(a, 40)
// {
// a := add(a, 2)
// }
// { // {
// a := a // a := a
// continue // continue

View File

@ -21,12 +21,7 @@
// { // {
// let b := 20 // let b := 20
// let a := 20 // let a := 20
// for { // for { } lt(a, 40) { a := add(a, 2) }
// }
// lt(a, 40)
// {
// a := add(a, 2)
// }
// { // {
// a := a // a := a
// mstore(0, a) // mstore(0, a)

View File

@ -11,19 +11,9 @@
// yul: true // 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
// }
// } // }
// } // }

View File

@ -10,14 +10,9 @@
// yul: true // yul: true
// ---- // ----
// { // {
// { // { let a:u256, b:u256, c:u256 }
// let a:u256, b:u256, c:u256
// }
// { // {
// let a_1:bool // let a_1:bool
// if a_1 // if a_1 { let b_2:bool := a_1 }
// {
// let b_2:bool := a_1
// }
// } // }
// } // }

View File

@ -2,5 +2,4 @@
// ==== // ====
// step: disambiguator // step: disambiguator
// ---- // ----
// { // { }
// }

View File

@ -3,5 +3,4 @@
// step: disambiguator // step: disambiguator
// yul: true // yul: true
// ---- // ----
// { // { }
// }

View File

@ -12,17 +12,11 @@
// yul: true // yul: true
// ---- // ----
// { // {
// { // { let a:u256, b:u256, c:u256 }
// let a:u256, b:u256, c:u256
// }
// { // {
// let a_1:u256 // let a_1:u256
// switch a_1 // switch a_1
// case 0:u256 { // case 0:u256 { let b_2:u256 := a_1 }
// let b_2:u256 := a_1 // default { let c_3:u256 := a_1 }
// }
// default {
// let c_3:u256 := a_1
// }
// } // }
// } // }

View File

@ -4,10 +4,6 @@
// yul: true // yul: true
// ---- // ----
// { // {
// { // { let a:u256 }
// let a:u256 // { let a_1:u256 }
// }
// {
// let a_1:u256
// }
// } // }

View File

@ -8,7 +8,5 @@
// let a:u256 // let a:u256
// let a_1:u256 // let a_1:u256
// } // }
// { // { let a_2:u256 }
// let a_2:u256
// }
// } // }

View File

@ -15,9 +15,7 @@
// let b:u256 // let b:u256
// } // }
// function f(a:u256, c_1:u256) -> b_2:u256 // function f(a:u256, c_1:u256) -> b_2:u256
// { // { let x:u256 }
// let x:u256
// }
// { // {
// let a_3:u256 // let a_3:u256
// let x_4:u256 // let x_4:u256

View File

@ -65,51 +65,27 @@
// { // {
// switch f1 // switch f1
// case 0 { // case 0 {
// if f2 // if f2 { rf := f3 }
// { // if not(f2) { rf := f1 }
// rf := f3
// }
// if not(f2)
// {
// rf := f1
// }
// }
// default {
// rf := 3
// } // }
// default { rf := 3 }
// } // }
// function g(g1, g2, g3) -> rg // function g(g1, g2, g3) -> rg
// { // {
// switch g1 // switch g1
// case 0 { // case 0 {
// if g2 // if g2 { rg := g3 }
// { // if not(g2) { rg := g1 }
// rg := g3
// }
// if not(g2)
// {
// rg := g1
// }
// }
// default {
// rg := 3
// } // }
// default { rg := 3 }
// } // }
// function h(h1, h2, h3) -> rh // function h(h1, h2, h3) -> rh
// { // {
// switch h1 // switch h1
// case 1 { // case 1 {
// if h2 // if h2 { rh := h3 }
// { // if not(h2) { rh := h1 }
// rh := h3
// }
// if not(h2)
// {
// rh := h1
// }
// }
// default {
// rh := 3
// } // }
// default { rh := 3 }
// } // }
// } // }

View File

@ -11,11 +11,7 @@
// f() // f()
// f() // f()
// function f() // function f()
// { // { mstore(1, mload(0)) }
// mstore(1, mload(0))
// }
// function g() // function g()
// { // { mstore(1, mload(0)) }
// mstore(1, mload(0))
// }
// } // }

View File

@ -13,21 +13,13 @@
// function f(x) // function f(x)
// { // {
// switch x // switch x
// case 0 { // case 0 { mstore(0, 42) }
// mstore(0, 42) // case 1 { mstore(1, 42) }
// }
// case 1 {
// mstore(1, 42)
// }
// } // }
// function g(x_1) // function g(x_1)
// { // {
// switch x_1 // switch x_1
// case 1 { // case 1 { mstore(1, 42) }
// mstore(1, 42) // case 0 { mstore(0, 42) }
// }
// case 0 {
// mstore(0, 42)
// }
// } // }
// } // }

View File

@ -7,8 +7,6 @@
// ---- // ----
// { // {
// function f(a) -> x // function f(a) -> x
// { // { x := add(a, a) }
// x := add(a, a)
// }
// let y := add(calldatasize(), calldatasize()) // let y := add(calldatasize(), calldatasize())
// } // }

View File

@ -8,12 +8,8 @@
// ---- // ----
// { // {
// function f(a) -> x // function f(a) -> x
// { // { x := add(a, a) }
// x := add(a, a)
// }
// function g(b, c) -> y // 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())) // let y_1 := mul(mload(7), add(calldatasize(), calldatasize()))
// } // }

View File

@ -8,9 +8,7 @@
// ---- // ----
// { // {
// function f(a, r) -> x // 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 // function g(b, s) -> y
// { // {
// y := f(b, g(s, f(s, f(s, s)))) // y := f(b, g(s, f(s, f(s, s))))

View File

@ -8,8 +8,6 @@
// ---- // ----
// { // {
// function f(a) -> x // function f(a) -> x
// { // { x := a }
// x := a
// }
// let y := f(mload(2)) // let y := f(mload(2))
// } // }

View File

@ -11,9 +11,7 @@
// ---- // ----
// { // {
// function f(a, b) -> x // function f(a, b) -> x
// { // { x := add(b, a) }
// x := add(b, a)
// }
// function g() -> y // function g() -> y
// { // {
// y := mload(0) // y := mload(0)

View File

@ -8,8 +8,6 @@
// ---- // ----
// { // {
// function f() -> x:u256 // function f() -> x:u256
// { // { x := 2:u256 }
// x := 2:u256
// }
// let y:u256 := 2:u256 // let y:u256 := 2:u256
// } // }

View File

@ -8,8 +8,6 @@
// ---- // ----
// { // {
// function f(a:u256) -> x:u256 // function f(a:u256) -> x:u256
// { // { x := a }
// x := a
// }
// let y:u256 := 7:u256 // let y:u256 := 7:u256
// } // }

View File

@ -14,9 +14,6 @@
// step: expressionJoiner // step: expressionJoiner
// ---- // ----
// { // {
// if add(mload(7), sload(mload(3))) // if add(mload(7), sload(mload(3))) { let y := add(mload(3), 3) }
// {
// let y := add(mload(3), 3)
// }
// let t := add(3, 9) // let t := add(3, 9)
// } // }

View File

@ -5,12 +5,6 @@
// step: expressionJoiner // step: expressionJoiner
// ---- // ----
// { // {
// for { // for { let b := mload(1) } b { }
// let b := mload(1) // { }
// }
// b
// {
// }
// {
// }
// } // }

View File

@ -7,11 +7,6 @@
// ---- // ----
// { // {
// let a := mload(0) // let a := mload(0)
// for { // for { } a { }
// } // { }
// a
// {
// }
// {
// }
// } // }

View File

@ -2,5 +2,4 @@
// ==== // ====
// step: expressionJoiner // step: expressionJoiner
// ---- // ----
// { // { }
// }

View File

@ -19,11 +19,7 @@
// ---- // ----
// { // {
// switch add(mload(7), sload(mload(3))) // switch add(mload(7), sload(mload(3)))
// case 3 { // case 3 { let y := add(mload(3), 3) }
// let y := add(mload(3), 3) // default { sstore(1, 0) }
// }
// default {
// sstore(1, 0)
// }
// let t := add(3, 9) // let t := add(3, 9)
// } // }

View File

@ -8,8 +8,7 @@
// ---- // ----
// { // {
// function f() -> x, z // function f() -> x, z
// { // { }
// }
// let c, d := f() // let c, d := f()
// let y := add(add(d, c), 7) // let y := add(add(d, c), 7)
// } // }

View File

@ -2,6 +2,4 @@
// ==== // ====
// step: expressionSimplifier // step: expressionSimplifier
// ---- // ----
// { // { let a := mload(0) }
// let a := mload(0)
// }

View File

@ -2,6 +2,4 @@
// ==== // ====
// step: expressionSimplifier // step: expressionSimplifier
// ---- // ----
// { // { let a := 13 }
// let a := 13
// }

View File

@ -2,6 +2,4 @@
// ==== // ====
// step: expressionSimplifier // step: expressionSimplifier
// ---- // ----
// { // { let a := 0 }
// let a := 0
// }

View File

@ -7,7 +7,6 @@
// ---- // ----
// { // {
// function f() -> a // function f() -> a
// { // { }
// }
// let b := f() // let b := f()
// } // }

View File

@ -7,12 +7,6 @@
// ---- // ----
// { // {
// let a := 10 // let a := 10
// for { // for { } iszero(iszero(a)) { a := add(a, 1) }
// } // { }
// iszero(iszero(a))
// {
// a := add(a, 1)
// }
// {
// }
// } // }

View File

@ -7,7 +7,6 @@
// ---- // ----
// { // {
// function f(a) -> b // function f(a) -> b
// { // { }
// }
// let c := sub(f(0), f(1)) // let c := sub(f(0), f(1))
// } // }

View File

@ -8,10 +8,8 @@
// ---- // ----
// { // {
// function f1() -> a // function f1() -> a
// { // { }
// }
// function f2() -> b // function f2() -> b
// { // { }
// }
// let c := sub(f1(), f2()) // let c := sub(f1(), f2())
// } // }

View File

@ -8,7 +8,6 @@
// ---- // ----
// { // {
// function f() -> a // function f() -> a
// { // { }
// }
// let b := sub(f(), f()) // let b := sub(f(), f())
// } // }

View File

@ -9,7 +9,5 @@
// ---- // ----
// { // {
// function f() -> c, d // function f() -> c, d
// { // { let y := 7 }
// let y := 7
// }
// } // }

View File

@ -4,6 +4,4 @@
// ==== // ====
// step: expressionSimplifier // step: expressionSimplifier
// ---- // ----
// { // { let a := mload(0) }
// let a := mload(0)
// }

View File

@ -2,5 +2,4 @@
// ==== // ====
// step: expressionSimplifier // step: expressionSimplifier
// ---- // ----
// { // { }
// }

View File

@ -19,9 +19,7 @@
// let _5 := mul(_4, _2) // let _5 := mul(_4, _2)
// if _5 // if _5
// { // {
// for { // for { let a := 2 }
// let a := 2
// }
// lt(a, mload(a)) // lt(a, mload(a))
// { // {
// let _6 := 2 // let _6 := 2

View File

@ -2,5 +2,4 @@
// ==== // ====
// step: expressionSplitter // step: expressionSplitter
// ---- // ----
// { // { }
// }

View File

@ -12,13 +12,6 @@
// let random := 42 // let random := 42
// let a := 1 // let a := 1
// let b := 1 // let b := 1
// for { // for { } iszero(eq(a, 10)) { a := add(a, b) }
// } // { a := add(a, 1) }
// iszero(eq(a, 10))
// {
// a := add(a, b)
// }
// {
// a := add(a, 1)
// }
// } // }

View File

@ -9,13 +9,6 @@
// ---- // ----
// { // {
// let a := 1 // let a := 1
// for { // for { } iszero(eq(a, 10)) { a := add(a, 1) }
// } // { a := add(a, 1) }
// iszero(eq(a, 10))
// {
// a := add(a, 1)
// }
// {
// a := add(a, 1)
// }
// } // }

View File

@ -19,31 +19,15 @@
// { // {
// let random := 42 // let random := 42
// let a := 1 // let a := 1
// for { // for { } iszero(eq(a, 10)) { }
// } // { a := add(a, 1) }
// iszero(eq(a, 10))
// {
// }
// {
// a := add(a, 1)
// }
// let b := 1 // let b := 1
// for { // for { }
// }
// iszero(eq(b, 10)) // iszero(eq(b, 10))
// { // {
// let c := 1 // let c := 1
// for { // for { } iszero(eq(c, 2)) { c := add(c, 1) }
// } // { b := add(b, 1) }
// iszero(eq(c, 2))
// {
// c := add(c, 1)
// }
// {
// b := add(b, 1)
// }
// }
// {
// mstore(b, b)
// } // }
// { mstore(b, b) }
// } // }

View File

@ -10,13 +10,6 @@
// { // {
// let random := 42 // let random := 42
// let a := 1 // let a := 1
// for { // for { } iszero(eq(a, 10)) { a := add(a, 1) }
// } // { a := add(a, 1) }
// iszero(eq(a, 10))
// {
// a := add(a, 1)
// }
// {
// a := add(a, 1)
// }
// } // }

View File

@ -18,10 +18,7 @@
// let r_11 := 0 // let r_11 := 0
// a_10 := mload(a_10) // a_10 := mload(a_10)
// r_11 := add(a_10, calldatasize()) // r_11 := add(a_10, calldatasize())
// if gt(r_11, _2) // if gt(r_11, _2) { sstore(0, 2) }
// {
// sstore(0, 2)
// }
// } // }
// function f(a) -> r // function f(a) -> r
// { // {

View File

@ -19,9 +19,7 @@
// let y_1 := y_10 // let y_1 := y_10
// } // }
// function f(a) -> x // function f(a) -> x
// { // { x := add(a, a) }
// x := add(a, a)
// }
// function g(b, c) -> y // function g(b, c) -> y
// { // {
// let a_13 := b // let a_13 := b

View File

@ -56,7 +56,5 @@
// mstore(1, x_14) // mstore(1, x_14)
// } // }
// function h() -> t // function h() -> t
// { // { t := 2 }
// t := 2
// }
// } // }

View File

@ -14,9 +14,7 @@
// ---- // ----
// { // {
// function f(a) -> b // function f(a) -> b
// { // { b := sload(mload(a)) }
// b := sload(mload(a))
// }
// function g() -> x_1 // function g() -> x_1
// { // {
// let a_20 := 2 // let a_20 := 2

View File

@ -54,7 +54,5 @@
// let x_1 := f(f(f(f(f(f(b_57)))))) // let x_1 := f(f(f(f(f(f(b_57))))))
// } // }
// function f(a) -> b // function f(a) -> b
// { // { b := sload(mload(a)) }
// b := sload(mload(a))
// }
// } // }

View File

@ -13,7 +13,5 @@
// sstore(a_3, a_3) // sstore(a_3, a_3)
// } // }
// function f(a) // function f(a)
// { // { sstore(a, a) }
// sstore(a, a)
// }
// } // }

View File

@ -19,8 +19,7 @@
// sstore(a_3, 0) // sstore(a_3, 0)
// r_4 := a_3 // r_4 := a_3
// let x := r_4 // let x := r_4
// for { // for { }
// }
// f(x) // f(x)
// { // {
// let a_6 := x // let a_6 := x

View File

@ -13,7 +13,5 @@
// f(1) // f(1)
// } // }
// function f(a) // function f(a)
// { // { f(1) }
// f(1)
// }
// } // }

View File

@ -5,6 +5,4 @@
// ==== // ====
// step: fullSimplify // step: fullSimplify
// ---- // ----
// { // { mstore(0, 13) }
// mstore(0, 13)
// }

View File

@ -5,6 +5,4 @@
// ==== // ====
// step: fullSimplify // step: fullSimplify
// ---- // ----
// { // { mstore(0, 0) }
// mstore(0, 0)
// }

View File

@ -8,7 +8,6 @@
// ---- // ----
// { // {
// function f() -> a // function f() -> a
// { // { }
// }
// mstore(f(), 0) // mstore(f(), 0)
// } // }

View File

@ -8,12 +8,6 @@
// ---- // ----
// { // {
// let a := 10 // let a := 10
// for { // for { } iszero(iszero(a)) { a := add(a, 1) }
// } // { }
// iszero(iszero(a))
// {
// a := add(a, 1)
// }
// {
// }
// } // }

View File

@ -7,8 +7,7 @@
// ---- // ----
// { // {
// function f(a) -> b // function f(a) -> b
// { // { }
// }
// let _2 := f(1) // let _2 := f(1)
// let _3 := 0 // let _3 := 0
// mstore(_3, sub(f(_3), _2)) // mstore(_3, sub(f(_3), _2))

View File

@ -9,10 +9,8 @@
// ---- // ----
// { // {
// function f1() -> a // function f1() -> a
// { // { }
// }
// function f2() -> b // function f2() -> b
// { // { }
// }
// mstore(0, sub(f1(), f2())) // mstore(0, sub(f1(), f2()))
// } // }

View File

@ -9,7 +9,6 @@
// ---- // ----
// { // {
// function f() -> a // function f() -> a
// { // { }
// }
// mstore(0, sub(f(), f())) // mstore(0, sub(f(), f()))
// } // }

View File

@ -2,5 +2,4 @@
// ==== // ====
// step: fullSimplify // step: fullSimplify
// ---- // ----
// { // { }
// }

View File

@ -1076,10 +1076,7 @@
// { // {
// let _1 := mload(1) // let _1 := mload(1)
// let _2 := mload(0) // let _2 := mload(0)
// if slt(sub(_1, _2), 64) // if slt(sub(_1, _2), 64) { revert(0, 0) }
// {
// revert(0, 0)
// }
// sstore(0, and(calldataload(_2), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)) // 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)) // 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) // 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 // 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) // if slt(sub(dataEnd, headStart), 128) { revert(value4, value4) }
// {
// revert(value4, value4)
// }
// value0 := and(calldataload(headStart), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) // value0 := and(calldataload(headStart), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
// value1 := calldataload(add(headStart, 32)) // value1 := calldataload(add(headStart, 32))
// let offset := calldataload(add(headStart, 64)) // let offset := calldataload(add(headStart, 64))
// let _1 := 0xffffffffffffffff // let _1 := 0xffffffffffffffff
// if gt(offset, _1) // if gt(offset, _1) { revert(value4, value4) }
// {
// revert(value4, value4)
// }
// let _2 := add(headStart, offset) // let _2 := add(headStart, offset)
// if iszero(slt(add(_2, 0x1f), dataEnd)) // if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value4, value4) }
// {
// revert(value4, value4)
// }
// let length := calldataload(_2) // let length := calldataload(_2)
// if gt(length, _1) // if gt(length, _1) { revert(value4, value4) }
// { // if gt(add(add(_2, length), 32), dataEnd) { revert(value4, value4) }
// revert(value4, value4)
// }
// if gt(add(add(_2, length), 32), dataEnd)
// {
// revert(value4, value4)
// }
// value2 := add(_2, 32) // value2 := add(_2, 32)
// value3 := length // value3 := length
// let _3 := calldataload(add(headStart, 96)) // let _3 := calldataload(add(headStart, 96))
// if iszero(lt(_3, 3)) // if iszero(lt(_3, 3)) { revert(value4, value4) }
// {
// revert(value4, value4)
// }
// value4 := _3 // 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 // 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, 32), and(value1, _1))
// mstore(add(headStart, 64), value2) // mstore(add(headStart, 64), value2)
// mstore(add(headStart, 96), value3) // mstore(add(headStart, 96), value3)
// if iszero(lt(value4, 3)) // if iszero(lt(value4, 3)) { invalid() }
// {
// invalid()
// }
// mstore(add(headStart, 128), value4) // mstore(add(headStart, 128), value4)
// mstore(add(headStart, 160), value5) // mstore(add(headStart, 160), value5)
// mstore(add(headStart, 192), value6) // mstore(add(headStart, 192), value6)

View File

@ -469,12 +469,7 @@
// pos := 64 // pos := 64
// let srcPtr := add(_3, _1) // let srcPtr := add(_3, _1)
// let i := _2 // let i := _2
// for { // for { } lt(i, length) { i := add(i, 1) }
// }
// 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) // 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) // srcPtr := add(srcPtr, _1)
@ -482,22 +477,13 @@
// } // }
// let _4 := mload(64) // let _4 := mload(64)
// let _5 := mload(_1) // let _5 := mload(_1)
// if slt(sub(_4, _5), 128) // if slt(sub(_4, _5), 128) { revert(_2, _2) }
// {
// revert(_2, _2)
// }
// let offset := calldataload(add(_5, 64)) // let offset := calldataload(add(_5, 64))
// let _6 := 0xffffffffffffffff // let _6 := 0xffffffffffffffff
// if gt(offset, _6) // if gt(offset, _6) { revert(_2, _2) }
// {
// revert(_2, _2)
// }
// let value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(_5, offset), _4) // let value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(_5, offset), _4)
// let offset_1 := calldataload(add(_5, 96)) // let offset_1 := calldataload(add(_5, 96))
// if gt(offset_1, _6) // if gt(offset_1, _6) { revert(_2, _2) }
// {
// revert(_2, _2)
// }
// let value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(_5, offset_1), _4) // 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(calldataload(_5), calldataload(add(_5, _1)))
// sstore(value2, value3) // sstore(value2, value3)
@ -505,10 +491,7 @@
// } // }
// function abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(offset, end) -> array // function abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(offset, end) -> array
// { // {
// if iszero(slt(add(offset, 0x1f), end)) // if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }
// {
// revert(array, array)
// }
// let length := calldataload(offset) // let length := calldataload(offset)
// array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn_memory(length)) // array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn_memory(length))
// let dst := array // let dst := array
@ -516,37 +499,18 @@
// let _1 := 0x20 // let _1 := 0x20
// dst := add(array, _1) // dst := add(array, _1)
// let src := add(offset, _1) // let src := add(offset, _1)
// if gt(add(add(offset, mul(length, 0x40)), _1), end) // if gt(add(add(offset, mul(length, 0x40)), _1), end) { revert(0, 0) }
// {
// revert(0, 0)
// }
// let i := 0 // let i := 0
// for { // for { } lt(i, length) { i := add(i, 1) }
// }
// lt(i, length)
// { // {
// 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_1 := allocateMemory(array_allocation_size_t_array$_t_uint256_$2_memory(0x2))
// let dst_2 := dst_1 // let dst_2 := dst_1
// let src_1 := src // let src_1 := src
// let _2 := add(src, 0x40) // let _2 := add(src, 0x40)
// if gt(_2, end) // if gt(_2, end) { revert(0, 0) }
// {
// revert(0, 0)
// }
// let i_1 := 0 // let i_1 := 0
// for { // for { } lt(i_1, 0x2) { i_1 := add(i_1, 1) }
// }
// lt(i_1, 0x2)
// {
// i_1 := add(i_1, 1)
// }
// { // {
// mstore(dst_1, calldataload(src_1)) // mstore(dst_1, calldataload(src_1))
// dst_1 := add(dst_1, _1) // dst_1 := add(dst_1, _1)
@ -559,10 +523,7 @@
// } // }
// function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array // function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array
// { // {
// if iszero(slt(add(offset, 0x1f), end)) // if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }
// {
// revert(array, array)
// }
// let length := calldataload(offset) // let length := calldataload(offset)
// array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn_memory(length)) // array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn_memory(length))
// let dst := array // let dst := array
@ -570,17 +531,9 @@
// let _1 := 0x20 // let _1 := 0x20
// dst := add(array, _1) // dst := add(array, _1)
// let src := add(offset, _1) // let src := add(offset, _1)
// if gt(add(add(offset, mul(length, _1)), _1), end) // if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }
// {
// revert(0, 0)
// }
// let i := 0 // let i := 0
// for { // for { } lt(i, length) { i := add(i, 1) }
// }
// lt(i, length)
// {
// i := add(i, 1)
// }
// { // {
// mstore(dst, calldataload(src)) // mstore(dst, calldataload(src))
// dst := add(dst, _1) // dst := add(dst, _1)
@ -591,12 +544,7 @@
// { // {
// let srcPtr := value // let srcPtr := value
// let i := 0 // let i := 0
// for { // for { } lt(i, 0x3) { i := add(i, 1) }
// }
// lt(i, 0x3)
// {
// i := add(i, 1)
// }
// { // {
// mstore(pos, and(mload(srcPtr), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)) // mstore(pos, and(mload(srcPtr), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
// srcPtr := add(srcPtr, 0x20) // srcPtr := add(srcPtr, 0x20)
@ -607,26 +555,17 @@
// { // {
// memPtr := mload(64) // memPtr := mload(64)
// let newFreePtr := add(memPtr, size) // let newFreePtr := add(memPtr, size)
// if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) // if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { revert(0, 0) }
// {
// revert(0, 0)
// }
// mstore(64, newFreePtr) // mstore(64, newFreePtr)
// } // }
// function array_allocation_size_t_array$_t_address_$dyn_memory(length) -> size // function array_allocation_size_t_array$_t_address_$dyn_memory(length) -> size
// { // {
// if gt(length, 0xffffffffffffffff) // if gt(length, 0xffffffffffffffff) { revert(0, 0) }
// {
// revert(0, 0)
// }
// size := add(mul(length, 0x20), 0x20) // size := add(mul(length, 0x20), 0x20)
// } // }
// function array_allocation_size_t_array$_t_uint256_$2_memory(length) -> size // function array_allocation_size_t_array$_t_uint256_$2_memory(length) -> size
// { // {
// if gt(length, 0xffffffffffffffff) // if gt(length, 0xffffffffffffffff) { revert(0, 0) }
// {
// revert(0, 0)
// }
// size := mul(length, 0x20) // size := mul(length, 0x20)
// } // }
// } // }

View File

@ -254,12 +254,7 @@
// let b := add(0x300, mul(n, 0x80)) // let b := add(0x300, mul(n, 0x80))
// let i := 0 // let i := 0
// let i_1 := i // let i_1 := i
// for { // for { } lt(i, n) { i := add(i, 0x01) }
// }
// lt(i, n)
// {
// i := add(i, 0x01)
// }
// { // {
// let _1 := add(calldataload(0x04), mul(i, 0xc0)) // let _1 := add(calldataload(0x04), mul(i, 0xc0))
// let noteIndex := add(_1, 0x24) // let noteIndex := add(_1, 0x24)
@ -270,14 +265,9 @@
// switch eq(_2, n) // switch eq(_2, n)
// case 1 { // case 1 {
// k := kn // k := kn
// if eq(m, n) // if eq(m, n) { k := sub(gen_order, kn) }
// {
// k := sub(gen_order, kn)
// }
// }
// case 0 {
// k := calldataload(noteIndex)
// } // }
// case 0 { k := calldataload(noteIndex) }
// validateCommitment(noteIndex, k, a) // validateCommitment(noteIndex, k, a)
// switch gt(_2, m) // switch gt(_2, m)
// case 1 { // case 1 {
@ -323,10 +313,7 @@
// } // }
// b := add(b, _3) // b := add(b, _3)
// } // }
// if lt(m, n) // if lt(m, n) { validatePairing(0x64) }
// {
// validatePairing(0x64)
// }
// if iszero(eq(mod(keccak256(0x2a0, add(b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), gen_order), challenge)) // if iszero(eq(mod(keccak256(0x2a0, add(b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), gen_order), challenge))
// { // {
// mstore(i_1, 404) // mstore(i_1, 404)
@ -388,12 +375,7 @@
// function hashCommitments(notes, n) // function hashCommitments(notes, n)
// { // {
// let i := 0 // let i := 0
// for { // for { } lt(i, n) { i := add(i, 0x01) }
// }
// lt(i, n)
// {
// i := add(i, 0x01)
// }
// { // {
// calldatacopy(add(0x300, mul(i, 0x80)), add(add(notes, mul(i, 0xc0)), 0x60), 0x80) // calldatacopy(add(0x300, mul(i, 0x80)), add(add(notes, mul(i, 0xc0)), 0x60), 0x80)
// } // }

View File

@ -12,8 +12,4 @@
// ==== // ====
// step: fullSuite // step: fullSuite
// ---- // ----
// { // { { mstore(1, 1) } }
// {
// mstore(1, 1)
// }
// }

View File

@ -47,19 +47,10 @@
// } // }
// function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length // function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length
// { // {
// if iszero(slt(add(offset, 0x1f), end)) // if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }
// {
// revert(0, 0)
// }
// length := calldataload(offset) // length := calldataload(offset)
// if gt(length, 0xffffffffffffffff) // if gt(length, 0xffffffffffffffff) { revert(0, 0) }
// {
// revert(0, 0)
// }
// arrayPos := add(offset, 0x20) // arrayPos := add(offset, 0x20)
// if gt(add(add(offset, length), 0x20), end) // if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }
// {
// revert(0, 0)
// }
// } // }
// } // }

View File

@ -9,8 +9,4 @@
// ==== // ====
// step: fullSuite // step: fullSuite
// ---- // ----
// { // { { mstore(9, 0) } }
// {
// mstore(9, 0)
// }
// }

View File

@ -10,8 +10,4 @@
// ==== // ====
// step: fullSuite // step: fullSuite
// ---- // ----
// { // { { mstore(10, 0) } }
// {
// mstore(10, 0)
// }
// }

View File

@ -8,11 +8,7 @@
// step: functionGrouper // step: functionGrouper
// ---- // ----
// { // {
// { // { let x := 2 }
// let x := 2
// }
// function f() -> y // function f() -> y
// { // { y := 8 }
// y := 8
// }
// } // }

View File

@ -6,20 +6,13 @@
// { // {
// { // {
// let a:u256 // let a:u256
// { // { }
// }
// } // }
// function f() -> x:bool // function f() -> x:bool
// { // {
// let b:u256 := 4:u256 // let b:u256 := 4:u256
// { // { }
// } // for { } f() { }
// for { // { }
// }
// f()
// {
// }
// {
// }
// } // }
// } // }

View File

@ -8,13 +8,7 @@
// step: functionGrouper // step: functionGrouper
// ---- // ----
// { // {
// { // { { let x := 2 } }
// {
// let x := 2
// }
// }
// function f() -> y // function f() -> y
// { // { y := 8 }
// y := 8
// }
// } // }

View File

@ -15,11 +15,7 @@
// let e:u256 // let e:u256
// } // }
// function f() // function f()
// { // { let b:u256 }
// let b:u256
// }
// function g() // function g()
// { // { let d:u256 }
// let d:u256
// }
// } // }

View File

@ -13,16 +13,12 @@
// yul: true // yul: true
// ---- // ----
// { // {
// { // { let a:u256 }
// let a:u256
// }
// function f() // function f()
// { // {
// let b:u256 // let b:u256
// function g() // function g()
// { // { let c:u256 }
// let c:u256
// }
// let d:u256 // let d:u256
// } // }
// } // }

View File

@ -6,10 +6,7 @@
// yul: true // yul: true
// ---- // ----
// { // {
// { // { let a:u256 }
// let a:u256
// }
// function f() // function f()
// { // { }
// }
// } // }

View File

@ -2,7 +2,4 @@
// ==== // ====
// step: functionGrouper // step: functionGrouper
// ---- // ----
// { // { { } }
// {
// }
// }

View File

@ -16,12 +16,7 @@
// function f() -> x:bool // function f() -> x:bool
// { // {
// let b:u256 := 4:u256 // let b:u256 := 4:u256
// for { // for { } f() { }
// } // { }
// f()
// {
// }
// {
// }
// } // }
// } // }

View File

@ -14,11 +14,7 @@
// let c:u256 // let c:u256
// let e:u256 // let e:u256
// function f() // function f()
// { // { let b:u256 }
// let b:u256
// }
// function g() // function g()
// { // { let d:u256 }
// let d:u256
// }
// } // }

View File

@ -13,9 +13,7 @@
// { // {
// let a:u256 // let a:u256
// function g() // function g()
// { // { let c:u256 }
// let c:u256
// }
// function f() // function f()
// { // {
// let b:u256 // let b:u256

View File

@ -9,6 +9,5 @@
// { // {
// let a:u256 // let a:u256
// function f() // function f()
// { // { }
// }
// } // }

View File

@ -3,5 +3,4 @@
// ==== // ====
// step: functionHoister // step: functionHoister
// ---- // ----
// { // { }
// }

View File

@ -15,20 +15,13 @@
// function main() // function main()
// { // {
// let a:u256 // let a:u256
// { // { }
// }
// } // }
// function f() -> x:bool // function f() -> x:bool
// { // {
// let b:u256 := 4:u256 // let b:u256 := 4:u256
// { // { }
// } // for { } f() { }
// for { // { }
// }
// f()
// {
// }
// {
// }
// } // }
// } // }

View File

@ -17,11 +17,7 @@
// let e:u256 // let e:u256
// } // }
// function f() // function f()
// { // { let b:u256 }
// let b:u256
// }
// function g() // function g()
// { // { let d:u256 }
// let d:u256
// }
// } // }

View File

@ -12,16 +12,12 @@
// ---- // ----
// { // {
// function main() // function main()
// { // { let a:u256 }
// let a:u256
// }
// function f() // function f()
// { // {
// let b:u256 // let b:u256
// function g() // function g()
// { // { let c:u256 }
// let c:u256
// }
// let d:u256 // let d:u256
// } // }
// } // }

View File

@ -8,10 +8,7 @@
// ---- // ----
// { // {
// function main() // function main()
// { // { let a:u256 }
// let a:u256
// }
// function f() // function f()
// { // { }
// }
// } // }

Some files were not shown because too many files have changed in this diff Show More