diff options
author | chriseth <chris@ethereum.org> | 2019-01-08 22:19:35 +0800 |
---|---|---|
committer | chriseth <chris@ethereum.org> | 2019-01-08 23:02:14 +0800 |
commit | 5b8b016fae761866a4652285fb193123a0f5f11e (patch) | |
tree | a2da2a750fc17f2b7de81628122e3674594626c5 | |
parent | 884d51c1f2bfc5aca7b69f6efe5fd8c475ce0dcc (diff) | |
download | dexon-solidity-5b8b016fae761866a4652285fb193123a0f5f11e.tar.gz dexon-solidity-5b8b016fae761866a4652285fb193123a0f5f11e.tar.zst dexon-solidity-5b8b016fae761866a4652285fb193123a0f5f11e.zip |
Use the block flattener.
-rw-r--r-- | libyul/optimiser/Suite.cpp | 8 | ||||
-rw-r--r-- | test/libyul/yulOptimizerTests/fullSuite/abi2.yul | 74 | ||||
-rw-r--r-- | test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul | 134 | ||||
-rw-r--r-- | test/libyul/yulOptimizerTests/fullSuite/aztec.yul | 208 | ||||
-rw-r--r-- | test/libyul/yulOptimizerTests/fullSuite/medium.yul | 14 |
5 files changed, 206 insertions, 232 deletions
diff --git a/libyul/optimiser/Suite.cpp b/libyul/optimiser/Suite.cpp index e10916ea..48914cf8 100644 --- a/libyul/optimiser/Suite.cpp +++ b/libyul/optimiser/Suite.cpp @@ -22,6 +22,7 @@ #include <libyul/optimiser/Disambiguator.h> #include <libyul/optimiser/VarDeclInitializer.h> +#include <libyul/optimiser/BlockFlattener.h> #include <libyul/optimiser/FunctionGrouper.h> #include <libyul/optimiser/FunctionHoister.h> #include <libyul/optimiser/ExpressionSplitter.h> @@ -59,8 +60,10 @@ void OptimiserSuite::run( (VarDeclInitializer{})(ast); (FunctionHoister{})(ast); + (BlockFlattener{})(ast); (FunctionGrouper{})(ast); (ForLoopInitRewriter{})(ast); + (BlockFlattener{})(ast); StructuralSimplifier{_dialect}(ast); NameDispenser dispenser{_dialect, ast}; @@ -75,6 +78,7 @@ void OptimiserSuite::run( CommonSubexpressionEliminator{_dialect}(ast); ExpressionSimplifier::run(_dialect, ast); StructuralSimplifier{_dialect}(ast); + (BlockFlattener{})(ast); SSATransform::run(ast, dispenser); RedundantAssignEliminator::run(_dialect, ast); RedundantAssignEliminator::run(_dialect, ast); @@ -95,12 +99,16 @@ void OptimiserSuite::run( RedundantAssignEliminator::run(_dialect, ast); RedundantAssignEliminator::run(_dialect, ast); CommonSubexpressionEliminator{_dialect}(ast); + + (FunctionGrouper{})(ast); FullInliner{ast, dispenser}.run(); + SSATransform::run(ast, dispenser); RedundantAssignEliminator::run(_dialect, ast); RedundantAssignEliminator::run(_dialect, ast); ExpressionSimplifier::run(_dialect, ast); StructuralSimplifier{_dialect}(ast); + (BlockFlattener{})(ast); CommonSubexpressionEliminator{_dialect}(ast); SSATransform::run(ast, dispenser); RedundantAssignEliminator::run(_dialect, ast); diff --git a/test/libyul/yulOptimizerTests/fullSuite/abi2.yul b/test/libyul/yulOptimizerTests/fullSuite/abi2.yul index d61980ba..092acfbe 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/abi2.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/abi2.yul @@ -1059,54 +1059,36 @@ // ---- // fullSuite // { +// let _1 := 1 +// let _2 := mload(_1) +// let _3 := 0 +// let _1017 := mload(_3) +// if slt(sub(_2, _1017), 64) // { -// let _1 := 1 -// let _2 := mload(_1) -// let _3 := 0 -// let _1017 := mload(_3) -// let abi_decode_value0_156 := _3 -// if slt(sub(_2, _1017), 64) -// { -// revert(_3, _3) -// } -// { -// abi_decode_value0_156 := and(calldataload(_1017), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) -// } -// sstore(_3, abi_decode_value0_156) -// let _1019 := mload(8) -// let _1021 := mload(7) -// let abi_decode_value0_57 := _3 -// let abi_decode_value1_58 := _3 -// let abi_decode_value2_59 := _3 -// let abi_decode_value3 := _3 -// let abi_decode_value4 := _3 -// if slt(sub(_1019, _1021), 128) -// { -// revert(_3, _3) -// } -// { -// abi_decode_value0_57 := and(calldataload(_1021), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) -// } -// { -// abi_decode_value1_58 := calldataload(add(_1021, 32)) -// } -// { -// let abi_decode_offset_62 := calldataload(add(_1021, 64)) -// if gt(abi_decode_offset_62, 0xffffffffffffffff) -// { -// revert(_3, _3) -// } -// abi_decode_value2_59, abi_decode_value3 := abi_decode_t_bytes_calldata_ptr(add(_1021, abi_decode_offset_62), _1019) -// } -// { -// abi_decode_value4 := cleanup_revert_t_enum$_Operation_$1949(calldataload(add(_1021, 96))) -// } -// sstore(_1, abi_decode_value0_57) -// sstore(_1, abi_decode_value1_58) -// sstore(_1, _3) -// sstore(_1, _3) -// sstore(_1, abi_decode_value4) +// revert(_3, _3) +// } +// let _1145 := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +// sstore(_3, and(calldataload(_1017), _1145)) +// let _1019 := mload(8) +// let _1021 := mload(7) +// let abi_decode_value2_59 := _3 +// let abi_decode_value3 := _3 +// if slt(sub(_1019, _1021), 128) +// { +// revert(_3, _3) +// } +// let abi_decode_offset_62 := calldataload(add(_1021, 64)) +// if gt(abi_decode_offset_62, 0xffffffffffffffff) +// { +// revert(_3, _3) // } +// abi_decode_value2_59, abi_decode_value3 := abi_decode_t_bytes_calldata_ptr(add(_1021, abi_decode_offset_62), _1019) +// let abi_decode_value4_1063 := cleanup_revert_t_enum$_Operation_$1949(calldataload(add(_1021, 96))) +// sstore(_1, and(calldataload(_1021), _1145)) +// sstore(_1, calldataload(add(_1021, 32))) +// sstore(_1, _3) +// sstore(_1, _3) +// sstore(_1, abi_decode_value4_1063) // function abi_decode_t_bytes_calldata_ptr(offset_12, end_13) -> arrayPos_14, length_15 // { // if iszero(slt(add(offset_12, 0x1f), end_13)) diff --git a/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul b/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul index b261b5bc..c8acf465 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul @@ -458,45 +458,43 @@ // ---- // fullSuite // { +// let _1 := 0x20 +// let _485 := mload(0) +// let abi_encode_pos := _1 +// let abi_encode_length_68 := mload(_485) +// mstore(_1, abi_encode_length_68) +// abi_encode_pos := 64 +// let abi_encode_srcPtr := add(_485, _1) +// let abi_encode_i_69 := 0 +// for { +// } +// lt(abi_encode_i_69, abi_encode_length_68) +// { +// abi_encode_i_69 := add(abi_encode_i_69, 1) +// } // { -// let _1 := 0x20 -// let _485 := mload(0) -// let abi_encode_pos := _1 -// let abi_encode_length_68 := mload(_485) -// mstore(_1, abi_encode_length_68) -// abi_encode_pos := 64 -// let abi_encode_srcPtr := add(_485, _1) -// let abi_encode_i_69 := 0 +// let _874 := mload(abi_encode_srcPtr) +// let abi_encode_pos_71_978 := abi_encode_pos +// let abi_encode_srcPtr_73_980 := _874 +// let abi_encode_i_74_981 := 0 // for { // } -// lt(abi_encode_i_69, abi_encode_length_68) +// lt(abi_encode_i_74_981, 0x3) // { -// abi_encode_i_69 := add(abi_encode_i_69, 1) +// abi_encode_i_74_981 := add(abi_encode_i_74_981, 1) // } // { -// let _863 := mload(abi_encode_srcPtr) -// let abi_encode_pos_71_971 := abi_encode_pos -// let abi_encode_srcPtr_73_973 := _863 -// let abi_encode_i_74_974 := 0 -// for { -// } -// lt(abi_encode_i_74_974, 0x3) -// { -// abi_encode_i_74_974 := add(abi_encode_i_74_974, 1) -// } -// { -// mstore(abi_encode_pos_71_971, and(mload(abi_encode_srcPtr_73_973), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)) -// abi_encode_srcPtr_73_973 := add(abi_encode_srcPtr_73_973, _1) -// abi_encode_pos_71_971 := add(abi_encode_pos_71_971, _1) -// } -// abi_encode_srcPtr := add(abi_encode_srcPtr, _1) -// abi_encode_pos := add(abi_encode_pos, 0x60) +// mstore(abi_encode_pos_71_978, and(mload(abi_encode_srcPtr_73_980), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)) +// abi_encode_srcPtr_73_980 := add(abi_encode_srcPtr_73_980, _1) +// abi_encode_pos_71_978 := add(abi_encode_pos_71_978, _1) // } -// let a, b, c, d := abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(mload(_1), mload(0x40)) -// sstore(a, b) -// sstore(c, d) -// sstore(0, abi_encode_pos) +// abi_encode_srcPtr := add(abi_encode_srcPtr, _1) +// abi_encode_pos := add(abi_encode_pos, 0x60) // } +// let a, b, c, d := abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(mload(_1), mload(0x40)) +// sstore(a, b) +// sstore(c, d) +// sstore(0, abi_encode_pos) // function abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(offset_3, end_4) -> array_5 // { // if iszero(slt(add(offset_3, 0x1f), end_4)) @@ -554,65 +552,55 @@ // src_16 := add(src_16, 0x20) // } // } -// function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset_27, end_28) -> array_29 +// function abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(headStart_58, dataEnd_59) -> value0_60, value1_61, value2, value3 // { -// if iszero(slt(add(offset_27, 0x1f), end_28)) -// { -// revert(0, 0) -// } -// let length_30 := calldataload(offset_27) -// let array_29_279 := allocateMemory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length_30)) -// array_29 := array_29_279 -// let dst_31 := array_29_279 -// mstore(array_29_279, length_30) -// let _91 := 0x20 -// dst_31 := add(array_29_279, _91) -// let src_32 := add(offset_27, _91) -// if gt(add(add(offset_27, mul(length_30, _91)), _91), end_28) +// if slt(sub(dataEnd_59, headStart_58), 128) // { -// revert(0, 0) -// } -// let i_33 := 0 -// for { +// revert(value2, value2) // } -// lt(i_33, length_30) +// value0_60 := calldataload(add(headStart_58, value2)) +// value1_61 := calldataload(add(headStart_58, 32)) +// let offset_64 := calldataload(add(headStart_58, 64)) +// let _165 := 0xffffffffffffffff +// if gt(offset_64, _165) // { -// i_33 := add(i_33, 1) +// revert(value2, value2) // } +// let _532 := add(headStart_58, offset_64) +// if iszero(slt(add(_532, 0x1f), dataEnd_59)) // { -// mstore(dst_31, calldataload(src_32)) -// dst_31 := add(dst_31, _91) -// src_32 := add(src_32, _91) +// revert(value2, value2) // } -// } -// function abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(headStart_58, dataEnd_59) -> value0_60, value1_61, value2, value3 -// { -// if slt(sub(dataEnd_59, headStart_58), 128) +// let abi_decode_length_30 := calldataload(_532) +// let abi_decode_array_29_279 := allocateMemory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(abi_decode_length_30)) +// let abi_decode_dst_31 := abi_decode_array_29_279 +// mstore(abi_decode_array_29_279, abi_decode_length_30) +// let abi_decode__91 := 0x20 +// abi_decode_dst_31 := add(abi_decode_array_29_279, abi_decode__91) +// let abi_decode_src_32 := add(_532, abi_decode__91) +// if gt(add(add(_532, mul(abi_decode_length_30, abi_decode__91)), abi_decode__91), dataEnd_59) // { // revert(value2, value2) // } -// { -// value0_60 := calldataload(add(headStart_58, value2)) +// let abi_decode_i_33 := value2 +// for { // } +// lt(abi_decode_i_33, abi_decode_length_30) // { -// value1_61 := calldataload(add(headStart_58, 32)) +// abi_decode_i_33 := add(abi_decode_i_33, 1) // } // { -// let offset_64 := calldataload(add(headStart_58, 64)) -// if gt(offset_64, 0xffffffffffffffff) -// { -// revert(value2, value2) -// } -// value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart_58, offset_64), dataEnd_59) +// mstore(abi_decode_dst_31, calldataload(abi_decode_src_32)) +// abi_decode_dst_31 := add(abi_decode_dst_31, abi_decode__91) +// abi_decode_src_32 := add(abi_decode_src_32, abi_decode__91) // } +// value2 := abi_decode_array_29_279 +// let offset_65 := calldataload(add(headStart_58, 96)) +// if gt(offset_65, _165) // { -// let offset_65 := calldataload(add(headStart_58, 96)) -// if gt(offset_65, 0xffffffffffffffff) -// { -// revert(0, 0) -// } -// value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(headStart_58, offset_65), dataEnd_59) +// revert(0, 0) // } +// value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(headStart_58, offset_65), dataEnd_59) // } // function allocateMemory(size) -> memPtr // { diff --git a/test/libyul/yulOptimizerTests/fullSuite/aztec.yul b/test/libyul/yulOptimizerTests/fullSuite/aztec.yul index e43a066c..4fcdaaf1 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/aztec.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/aztec.yul @@ -231,124 +231,122 @@ // ---- // fullSuite // { +// let validateJo__6 := 0x80 +// mstore(validateJo__6, 7673901602397024137095011250362199966051872585513276903826533215767972925880) +// mstore(0xa0, 8489654445897228341090914135473290831551238522473825886865492707826370766375) +// let validateJo__10 := calldataload(0x04) +// let validateJo_notes := add(0x04, validateJo__10) +// let validateJo_m := calldataload(0x24) +// let validateJo_n := calldataload(validateJo_notes) +// let validateJo_gen_order := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 +// let validateJo_challenge := mod(calldataload(0x44), validateJo_gen_order) +// if gt(validateJo_m, validateJo_n) // { -// let validateJo__6 := 0x80 -// mstore(validateJo__6, 7673901602397024137095011250362199966051872585513276903826533215767972925880) -// mstore(0xa0, 8489654445897228341090914135473290831551238522473825886865492707826370766375) -// let validateJo__10 := calldataload(0x04) -// let validateJo_notes := add(0x04, validateJo__10) -// let validateJo_m := calldataload(0x24) -// let validateJo_n := calldataload(validateJo_notes) -// let validateJo_gen_order := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 -// let validateJo_challenge := mod(calldataload(0x44), validateJo_gen_order) -// if gt(validateJo_m, validateJo_n) -// { -// mstore(0x00, 404) -// revert(0x00, 0x20) +// mstore(0x00, 404) +// revert(0x00, 0x20) +// } +// let validateJo_kn_287 := calldataload(add(calldatasize(), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40)) +// let validateJo_kn := validateJo_kn_287 +// let validateJo__24 := 0x2a0 +// mstore(validateJo__24, caller()) +// mstore(0x2c0, validateJo_kn_287) +// mstore(0x2e0, validateJo_m) +// validateJo_kn := mulmod(sub(validateJo_gen_order, validateJo_kn_287), validateJo_challenge, validateJo_gen_order) +// hashCommitments(validateJo_notes, validateJo_n) +// let validateJo_b := add(0x300, mul(validateJo_n, validateJo__6)) +// let validateJo_i_290 := 0 +// let validateJo_i := validateJo_i_290 +// for { +// } +// lt(validateJo_i, validateJo_n) +// { +// validateJo_i := add(validateJo_i, 0x01) +// } +// { +// let validateJo__34 := 0x20 +// let validateJo__376 := add(validateJo__10, mul(validateJo_i, 0xc0)) +// let validateJo_noteIndex := add(validateJo__376, 36) +// let validateJo_k := validateJo_i_290 +// let validateJo_a_292 := calldataload(add(validateJo__376, 68)) +// let validateJo_a := validateJo_a_292 +// let validateJo_c := validateJo_challenge +// let validateJo__39 := add(validateJo_i, 0x01) +// switch eq(validateJo__39, validateJo_n) +// case 1 { +// validateJo_k := validateJo_kn +// if eq(validateJo_m, validateJo_n) +// { +// validateJo_k := sub(validateJo_gen_order, validateJo_kn) +// } // } -// let validateJo_kn_287 := calldataload(add(calldatasize(), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40)) -// let validateJo_kn := validateJo_kn_287 -// let validateJo__24 := 0x2a0 -// mstore(validateJo__24, caller()) -// mstore(0x2c0, validateJo_kn_287) -// mstore(0x2e0, validateJo_m) -// validateJo_kn := mulmod(sub(validateJo_gen_order, validateJo_kn_287), validateJo_challenge, validateJo_gen_order) -// hashCommitments(validateJo_notes, validateJo_n) -// let validateJo_b := add(0x300, mul(validateJo_n, validateJo__6)) -// let validateJo_i_290 := 0 -// let validateJo_i := validateJo_i_290 -// for { +// case 0 { +// validateJo_k := calldataload(validateJo_noteIndex) // } -// lt(validateJo_i, validateJo_n) -// { -// validateJo_i := add(validateJo_i, 0x01) +// validateCommitment(validateJo_noteIndex, validateJo_k, validateJo_a_292) +// switch gt(validateJo__39, validateJo_m) +// case 1 { +// validateJo_kn := addmod(validateJo_kn, sub(validateJo_gen_order, validateJo_k), validateJo_gen_order) +// let validateJo_x := mod(mload(0x00), validateJo_gen_order) +// validateJo_k := mulmod(validateJo_k, validateJo_x, validateJo_gen_order) +// validateJo_a := mulmod(validateJo_a_292, validateJo_x, validateJo_gen_order) +// validateJo_c := mulmod(validateJo_challenge, validateJo_x, validateJo_gen_order) +// mstore(0x00, keccak256(0x00, validateJo__34)) +// } +// case 0 { +// validateJo_kn := addmod(validateJo_kn, validateJo_k, validateJo_gen_order) // } +// let validateJo__52 := 0x40 +// calldatacopy(0xe0, add(validateJo__376, 164), validateJo__52) +// calldatacopy(validateJo__34, add(validateJo__376, 100), validateJo__52) +// let validateJo__61 := 0x120 +// mstore(validateJo__61, sub(validateJo_gen_order, validateJo_c)) +// let validateJo__62 := 0x60 +// mstore(validateJo__62, validateJo_k) +// mstore(0xc0, validateJo_a) +// let validateJo__65 := 0x1a0 +// let validateJo_result_302 := call(gas(), 7, validateJo_i_290, 0xe0, validateJo__62, validateJo__65, validateJo__52) +// let validateJo_result := validateJo_result_302 +// let validateJo_result_303 := and(validateJo_result_302, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__61, validateJo__52)) +// let validateJo__80 := 0x160 +// let validateJo_result_304 := and(validateJo_result_303, call(gas(), 7, validateJo_i_290, validateJo__6, validateJo__62, validateJo__80, validateJo__52)) +// let validateJo_result_305 := and(validateJo_result_304, call(gas(), 6, validateJo_i_290, validateJo__61, validateJo__6, validateJo__80, validateJo__52)) +// let validateJo_result_306 := and(validateJo_result_305, call(gas(), 6, validateJo_i_290, validateJo__80, validateJo__6, validateJo_b, validateJo__52)) +// validateJo_result := validateJo_result_306 +// if eq(validateJo_i, validateJo_m) // { -// let validateJo__34 := 0x20 -// let validateJo__376 := add(validateJo__10, mul(validateJo_i, 0xc0)) -// let validateJo_noteIndex := add(validateJo__376, 36) -// let validateJo_k := validateJo_i_290 -// let validateJo_a_292 := calldataload(add(validateJo__376, 68)) -// let validateJo_a := validateJo_a_292 -// let validateJo_c := validateJo_challenge -// let validateJo__39 := add(validateJo_i, 0x01) -// switch eq(validateJo__39, validateJo_n) -// case 1 { -// validateJo_k := validateJo_kn -// if eq(validateJo_m, validateJo_n) -// { -// validateJo_k := sub(validateJo_gen_order, validateJo_kn) -// } -// } -// case 0 { -// validateJo_k := calldataload(validateJo_noteIndex) -// } -// validateCommitment(validateJo_noteIndex, validateJo_k, validateJo_a_292) -// switch gt(validateJo__39, validateJo_m) -// case 1 { -// validateJo_kn := addmod(validateJo_kn, sub(validateJo_gen_order, validateJo_k), validateJo_gen_order) -// let validateJo_x := mod(mload(0x00), validateJo_gen_order) -// validateJo_k := mulmod(validateJo_k, validateJo_x, validateJo_gen_order) -// validateJo_a := mulmod(validateJo_a_292, validateJo_x, validateJo_gen_order) -// validateJo_c := mulmod(validateJo_challenge, validateJo_x, validateJo_gen_order) -// mstore(0x00, keccak256(0x00, validateJo__34)) -// } -// case 0 { -// validateJo_kn := addmod(validateJo_kn, validateJo_k, validateJo_gen_order) -// } -// let validateJo__52 := 0x40 -// calldatacopy(0xe0, add(validateJo__376, 164), validateJo__52) -// calldatacopy(validateJo__34, add(validateJo__376, 100), validateJo__52) -// let validateJo__61 := 0x120 -// mstore(validateJo__61, sub(validateJo_gen_order, validateJo_c)) -// let validateJo__62 := 0x60 -// mstore(validateJo__62, validateJo_k) -// mstore(0xc0, validateJo_a) -// let validateJo__65 := 0x1a0 -// let validateJo_result_302 := call(gas(), 7, validateJo_i_290, 0xe0, validateJo__62, validateJo__65, validateJo__52) -// let validateJo_result := validateJo_result_302 -// let validateJo_result_303 := and(validateJo_result_302, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__61, validateJo__52)) -// let validateJo__80 := 0x160 -// let validateJo_result_304 := and(validateJo_result_303, call(gas(), 7, validateJo_i_290, validateJo__6, validateJo__62, validateJo__80, validateJo__52)) -// let validateJo_result_305 := and(validateJo_result_304, call(gas(), 6, validateJo_i_290, validateJo__61, validateJo__6, validateJo__80, validateJo__52)) -// let validateJo_result_306 := and(validateJo_result_305, call(gas(), 6, validateJo_i_290, validateJo__80, validateJo__6, validateJo_b, validateJo__52)) -// validateJo_result := validateJo_result_306 -// if eq(validateJo_i, validateJo_m) -// { -// mstore(0x260, mload(validateJo__34)) -// mstore(0x280, mload(validateJo__52)) -// mstore(0x1e0, mload(0xe0)) -// mstore(0x200, sub(0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47, mload(0x100))) -// } -// if gt(validateJo_i, validateJo_m) -// { -// mstore(validateJo__62, validateJo_c) -// let validateJo__120 := 0x220 -// let validateJo_result_307 := and(validateJo_result_306, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__120, validateJo__52)) -// let validateJo_result_308 := and(validateJo_result_307, call(gas(), 6, validateJo_i_290, validateJo__120, validateJo__6, 0x260, validateJo__52)) -// validateJo_result := and(validateJo_result_308, call(gas(), 6, validateJo_i_290, validateJo__65, validateJo__6, 0x1e0, validateJo__52)) -// } -// if iszero(validateJo_result) -// { -// mstore(0x00, 400) -// revert(0x00, validateJo__34) -// } -// validateJo_b := add(validateJo_b, validateJo__52) +// mstore(0x260, mload(validateJo__34)) +// mstore(0x280, mload(validateJo__52)) +// mstore(0x1e0, mload(0xe0)) +// mstore(0x200, sub(0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47, mload(0x100))) // } -// if lt(validateJo_m, validateJo_n) +// if gt(validateJo_i, validateJo_m) // { -// validatePairing(0x64) +// mstore(validateJo__62, validateJo_c) +// let validateJo__120 := 0x220 +// let validateJo_result_307 := and(validateJo_result_306, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__120, validateJo__52)) +// let validateJo_result_308 := and(validateJo_result_307, call(gas(), 6, validateJo_i_290, validateJo__120, validateJo__6, 0x260, validateJo__52)) +// validateJo_result := and(validateJo_result_308, call(gas(), 6, validateJo_i_290, validateJo__65, validateJo__6, 0x1e0, validateJo__52)) // } -// if iszero(eq(mod(keccak256(validateJo__24, add(validateJo_b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), validateJo_gen_order), validateJo_challenge)) +// if iszero(validateJo_result) // { -// mstore(0x00, 404) -// revert(0x00, 0x20) +// mstore(0x00, 400) +// revert(0x00, validateJo__34) // } -// mstore(0x00, 0x01) -// return(0x00, 0x20) +// validateJo_b := add(validateJo_b, validateJo__52) +// } +// if lt(validateJo_m, validateJo_n) +// { +// validatePairing(0x64) +// } +// if iszero(eq(mod(keccak256(validateJo__24, add(validateJo_b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), validateJo_gen_order), validateJo_challenge)) +// { // mstore(0x00, 404) // revert(0x00, 0x20) // } +// mstore(0x00, 0x01) +// return(0x00, 0x20) +// mstore(0x00, 404) +// revert(0x00, 0x20) // function validatePairing(t2) // { // let t2_x_1 := calldataload(t2) diff --git a/test/libyul/yulOptimizerTests/fullSuite/medium.yul b/test/libyul/yulOptimizerTests/fullSuite/medium.yul index 5578452a..b10c6c69 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/medium.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/medium.yul @@ -19,12 +19,10 @@ // ---- // fullSuite // { -// { -// let allocate__19 := 0x40 -// mstore(allocate__19, add(mload(allocate__19), 0x20)) -// let allocate_p_24_41 := mload(allocate__19) -// mstore(allocate__19, add(allocate_p_24_41, allocate__19)) -// mstore(add(allocate_p_24_41, 96), 2) -// mstore(allocate__19, 0x20) -// } +// let allocate__19 := 0x40 +// mstore(allocate__19, add(mload(allocate__19), 0x20)) +// let allocate_p_24_41 := mload(allocate__19) +// mstore(allocate__19, add(allocate_p_24_41, allocate__19)) +// mstore(add(allocate_p_24_41, 96), 2) +// mstore(allocate__19, 0x20) // } |