mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Use the block flattener.
This commit is contained in:
parent
884d51c1f2
commit
5b8b016fae
@ -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);
|
||||
|
@ -1059,54 +1059,36 @@
|
||||
// ----
|
||||
// fullSuite
|
||||
// {
|
||||
// {
|
||||
// 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 _1145 := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
// sstore(_3, and(calldataload(_1017), _1145))
|
||||
// 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)
|
||||
// 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)
|
||||
// }
|
||||
// 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))
|
||||
|
@ -458,7 +458,6 @@
|
||||
// ----
|
||||
// fullSuite
|
||||
// {
|
||||
// {
|
||||
// let _1 := 0x20
|
||||
// let _485 := mload(0)
|
||||
// let abi_encode_pos := _1
|
||||
@ -474,20 +473,20 @@
|
||||
// abi_encode_i_69 := add(abi_encode_i_69, 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
|
||||
// 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_74_974, 0x3)
|
||||
// lt(abi_encode_i_74_981, 0x3)
|
||||
// {
|
||||
// abi_encode_i_74_974 := add(abi_encode_i_74_974, 1)
|
||||
// abi_encode_i_74_981 := add(abi_encode_i_74_981, 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)
|
||||
// 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)
|
||||
// }
|
||||
// abi_encode_srcPtr := add(abi_encode_srcPtr, _1)
|
||||
// abi_encode_pos := add(abi_encode_pos, 0x60)
|
||||
@ -496,7 +495,6 @@
|
||||
// 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,66 +552,56 @@
|
||||
// src_16 := add(src_16, 0x20)
|
||||
// }
|
||||
// }
|
||||
// function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset_27, end_28) -> array_29
|
||||
// {
|
||||
// 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)
|
||||
// {
|
||||
// revert(0, 0)
|
||||
// }
|
||||
// let i_33 := 0
|
||||
// for {
|
||||
// }
|
||||
// lt(i_33, length_30)
|
||||
// {
|
||||
// i_33 := add(i_33, 1)
|
||||
// }
|
||||
// {
|
||||
// mstore(dst_31, calldataload(src_32))
|
||||
// dst_31 := add(dst_31, _91)
|
||||
// src_32 := add(src_32, _91)
|
||||
// }
|
||||
// }
|
||||
// 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)
|
||||
// {
|
||||
// revert(value2, value2)
|
||||
// }
|
||||
// {
|
||||
// value0_60 := calldataload(add(headStart_58, value2))
|
||||
// }
|
||||
// {
|
||||
// value1_61 := calldataload(add(headStart_58, 32))
|
||||
// }
|
||||
// {
|
||||
// let offset_64 := calldataload(add(headStart_58, 64))
|
||||
// if gt(offset_64, 0xffffffffffffffff)
|
||||
// let _165 := 0xffffffffffffffff
|
||||
// if gt(offset_64, _165)
|
||||
// {
|
||||
// revert(value2, value2)
|
||||
// }
|
||||
// value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart_58, offset_64), dataEnd_59)
|
||||
// let _532 := add(headStart_58, offset_64)
|
||||
// if iszero(slt(add(_532, 0x1f), dataEnd_59))
|
||||
// {
|
||||
// revert(value2, value2)
|
||||
// }
|
||||
// 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)
|
||||
// }
|
||||
// let abi_decode_i_33 := value2
|
||||
// for {
|
||||
// }
|
||||
// lt(abi_decode_i_33, abi_decode_length_30)
|
||||
// {
|
||||
// abi_decode_i_33 := add(abi_decode_i_33, 1)
|
||||
// }
|
||||
// {
|
||||
// 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, 0xffffffffffffffff)
|
||||
// if gt(offset_65, _165)
|
||||
// {
|
||||
// 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
|
||||
// {
|
||||
// let memPtr_315 := mload(64)
|
||||
|
@ -231,7 +231,6 @@
|
||||
// ----
|
||||
// fullSuite
|
||||
// {
|
||||
// {
|
||||
// let validateJo__6 := 0x80
|
||||
// mstore(validateJo__6, 7673901602397024137095011250362199966051872585513276903826533215767972925880)
|
||||
// mstore(0xa0, 8489654445897228341090914135473290831551238522473825886865492707826370766375)
|
||||
@ -348,7 +347,6 @@
|
||||
// return(0x00, 0x20)
|
||||
// mstore(0x00, 404)
|
||||
// revert(0x00, 0x20)
|
||||
// }
|
||||
// function validatePairing(t2)
|
||||
// {
|
||||
// let t2_x_1 := calldataload(t2)
|
||||
|
@ -19,7 +19,6 @@
|
||||
// ----
|
||||
// fullSuite
|
||||
// {
|
||||
// {
|
||||
// let allocate__19 := 0x40
|
||||
// mstore(allocate__19, add(mload(allocate__19), 0x20))
|
||||
// let allocate_p_24_41 := mload(allocate__19)
|
||||
@ -27,4 +26,3 @@
|
||||
// mstore(add(allocate_p_24_41, 96), 2)
|
||||
// mstore(allocate__19, 0x20)
|
||||
// }
|
||||
// }
|
||||
|
Loading…
Reference in New Issue
Block a user