mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Do not create unassigned variables.
This commit is contained in:
parent
11209ec48a
commit
6c6a53a439
@ -168,6 +168,8 @@ vector<Statement> InlineModifier::performInline(Statement& _statement, FunctionC
|
||||
|
||||
m_driver.tentativelyUpdateCodeSize(function->name, m_currentFunction);
|
||||
|
||||
static Expression const zero{Literal{{}, LiteralKind::Number, YulString{"0"}, {}}};
|
||||
|
||||
// helper function to create a new variable that is supposed to model
|
||||
// an existing variable.
|
||||
auto newVariable = [&](TypedName const& _existingVariable, Expression* _value) {
|
||||
@ -176,6 +178,8 @@ vector<Statement> InlineModifier::performInline(Statement& _statement, FunctionC
|
||||
VariableDeclaration varDecl{_funCall.location, {{_funCall.location, newName, _existingVariable.type}}, {}};
|
||||
if (_value)
|
||||
varDecl.value = make_shared<Expression>(std::move(*_value));
|
||||
else
|
||||
varDecl.value = make_shared<Expression>(zero);
|
||||
newStatements.emplace_back(std::move(varDecl));
|
||||
};
|
||||
|
||||
|
@ -9,14 +9,14 @@
|
||||
// {
|
||||
// {
|
||||
// let f_a := calldataload(0)
|
||||
// let f_b
|
||||
// let f_c
|
||||
// let f_b := 0
|
||||
// let f_c := 0
|
||||
// f_b := sload(mload(f_a))
|
||||
// f_c := 3
|
||||
// let b3 := f_b
|
||||
// let f_a_2 := f_c
|
||||
// let f_b_3
|
||||
// let f_c_4
|
||||
// let f_b_3 := 0
|
||||
// let f_c_4 := 0
|
||||
// f_b_3 := sload(mload(f_a_2))
|
||||
// f_c_4 := 3
|
||||
// let b4 := f_b_3
|
||||
|
@ -14,7 +14,7 @@
|
||||
// {
|
||||
// let _2 := mload(0)
|
||||
// let f_a := mload(1)
|
||||
// let f_r
|
||||
// let f_r := 0
|
||||
// f_a := mload(f_a)
|
||||
// f_r := add(f_a, calldatasize())
|
||||
// if gt(f_r, _2)
|
||||
|
@ -23,7 +23,7 @@
|
||||
// let a2 := 2
|
||||
// let r := f(a_1)
|
||||
// let f_a := a2
|
||||
// let f_b
|
||||
// let f_b := 0
|
||||
// let f_x := mload(f_a)
|
||||
// f_b := sload(f_x)
|
||||
// let f_y := add(f_a, f_x)
|
||||
@ -31,7 +31,7 @@
|
||||
// let t := f_b
|
||||
// let a3
|
||||
// let f_a_3 := a3
|
||||
// let f_b_4
|
||||
// let f_b_4 := 0
|
||||
// let f_x_5 := mload(f_a_3)
|
||||
// f_b_4 := sload(f_x_5)
|
||||
// let f_y_6 := add(f_a_3, f_x_5)
|
||||
|
@ -15,7 +15,7 @@
|
||||
// {
|
||||
// {
|
||||
// let f_a := mload(1)
|
||||
// let f_b
|
||||
// let f_b := 0
|
||||
// let f_x := mload(f_a)
|
||||
// f_b := sload(f_x)
|
||||
// let f_c := 3
|
||||
|
@ -13,7 +13,7 @@
|
||||
// {
|
||||
// let verylongvariablename2_1 := 3
|
||||
// let verylongfu_verylongvariablename := verylongvariablename2_1
|
||||
// let verylongfu_verylongvariablename2
|
||||
// let verylongfu_verylongvariablename2 := 0
|
||||
// verylongfu_verylongvariablename2 := add(verylongfu_verylongvariablename, verylongfu_verylongvariablename)
|
||||
// mstore(0, verylongfu_verylongvariablename2)
|
||||
// mstore(1, verylongvariablename2_1)
|
||||
|
@ -15,7 +15,7 @@
|
||||
// let f_a := mload(2)
|
||||
// let f_b := _6
|
||||
// let f_c := _4
|
||||
// let f_x
|
||||
// let f_x := 0
|
||||
// f_x := add(f_a, f_b)
|
||||
// f_x := mul(f_x, f_c)
|
||||
// let _10 := add(f_x, _2)
|
||||
|
@ -9,11 +9,11 @@
|
||||
// {
|
||||
// let _1 := 7
|
||||
// let f_a := 3
|
||||
// let f_x
|
||||
// let f_x := 0
|
||||
// f_x := add(f_a, f_a)
|
||||
// let g_b := f_x
|
||||
// let g_c := _1
|
||||
// let g_y
|
||||
// let g_y := 0
|
||||
// g_y := mul(mload(g_c), f(g_b))
|
||||
// let y_1 := g_y
|
||||
// }
|
||||
@ -24,7 +24,7 @@
|
||||
// function g(b, c) -> y
|
||||
// {
|
||||
// let f_a_6 := b
|
||||
// let f_x_7
|
||||
// let f_x_7 := 0
|
||||
// f_x_7 := add(f_a_6, f_a_6)
|
||||
// y := mul(mload(c), f_x_7)
|
||||
// }
|
||||
|
@ -37,7 +37,7 @@
|
||||
// function f(x)
|
||||
// {
|
||||
// mstore(0, x)
|
||||
// let h_t
|
||||
// let h_t := 0
|
||||
// h_t := 2
|
||||
// mstore(7, h_t)
|
||||
// let g_x_1 := 10
|
||||
|
@ -11,8 +11,8 @@
|
||||
// {
|
||||
// {
|
||||
// let f_a := mload(0)
|
||||
// let f_x
|
||||
// let f_y
|
||||
// let f_x := 0
|
||||
// let f_y := 0
|
||||
// f_x := mul(f_a, f_a)
|
||||
// f_y := add(f_a, f_x)
|
||||
// let r := f_x
|
||||
|
@ -19,25 +19,25 @@
|
||||
// function g() -> x_1
|
||||
// {
|
||||
// let f_a := 2
|
||||
// let f_b
|
||||
// let f_b := 0
|
||||
// f_b := sload(mload(f_a))
|
||||
// let f_a_20 := f_b
|
||||
// let f_b_21
|
||||
// let f_b_21 := 0
|
||||
// f_b_21 := sload(mload(f_a_20))
|
||||
// let f_a_23 := f_b_21
|
||||
// let f_b_24
|
||||
// let f_b_24 := 0
|
||||
// f_b_24 := sload(mload(f_a_23))
|
||||
// let f_a_26 := f_b_24
|
||||
// let f_b_27
|
||||
// let f_b_27 := 0
|
||||
// f_b_27 := sload(mload(f_a_26))
|
||||
// let f_a_29 := f_b_27
|
||||
// let f_b_30
|
||||
// let f_b_30 := 0
|
||||
// f_b_30 := sload(mload(f_a_29))
|
||||
// let f_a_32 := f_b_30
|
||||
// let f_b_33
|
||||
// let f_b_33 := 0
|
||||
// f_b_33 := sload(mload(f_a_32))
|
||||
// let f_a_35 := f_b_33
|
||||
// let f_b_36
|
||||
// let f_b_36 := 0
|
||||
// f_b_36 := sload(mload(f_a_35))
|
||||
// x_1 := f(f(f(f(f(f(f(f(f(f(f(f(f_b_36))))))))))))
|
||||
// }
|
||||
|
@ -12,25 +12,25 @@
|
||||
// {
|
||||
// {
|
||||
// let f_a := 2
|
||||
// let f_b
|
||||
// let f_b := 0
|
||||
// f_b := sload(mload(f_a))
|
||||
// let f_a_20 := f_b
|
||||
// let f_b_21
|
||||
// let f_b_21 := 0
|
||||
// f_b_21 := sload(mload(f_a_20))
|
||||
// let f_a_23 := f_b_21
|
||||
// let f_b_24
|
||||
// let f_b_24 := 0
|
||||
// f_b_24 := sload(mload(f_a_23))
|
||||
// let f_a_26 := f_b_24
|
||||
// let f_b_27
|
||||
// let f_b_27 := 0
|
||||
// f_b_27 := sload(mload(f_a_26))
|
||||
// let f_a_29 := f_b_27
|
||||
// let f_b_30
|
||||
// let f_b_30 := 0
|
||||
// f_b_30 := sload(mload(f_a_29))
|
||||
// let f_a_32 := f_b_30
|
||||
// let f_b_33
|
||||
// let f_b_33 := 0
|
||||
// f_b_33 := sload(mload(f_a_32))
|
||||
// let f_a_35 := f_b_33
|
||||
// let f_b_36
|
||||
// let f_b_36 := 0
|
||||
// f_b_36 := sload(mload(f_a_35))
|
||||
// let x_1 := f(f(f(f(f(f(f(f(f(f(f(f(f_b_36))))))))))))
|
||||
// }
|
||||
|
@ -14,7 +14,7 @@
|
||||
// {
|
||||
// for {
|
||||
// let f_a := 0
|
||||
// let f_r
|
||||
// let f_r := 0
|
||||
// sstore(f_a, 0)
|
||||
// f_r := f_a
|
||||
// let x := f_r
|
||||
@ -22,14 +22,14 @@
|
||||
// f(x)
|
||||
// {
|
||||
// let f_a_3 := x
|
||||
// let f_r_4
|
||||
// let f_r_4 := 0
|
||||
// sstore(f_a_3, 0)
|
||||
// f_r_4 := f_a_3
|
||||
// x := f_r_4
|
||||
// }
|
||||
// {
|
||||
// let f_a_6 := x
|
||||
// let f_r_7
|
||||
// let f_r_7 := 0
|
||||
// sstore(f_a_6, 0)
|
||||
// f_r_7 := f_a_6
|
||||
// let t := f_r_7
|
||||
|
@ -14,7 +14,7 @@
|
||||
// {
|
||||
// let _1 := 2
|
||||
// let f_a := 7
|
||||
// let f_x
|
||||
// let f_x := 0
|
||||
// let f_r := mul(f_a, f_a)
|
||||
// f_x := add(f_r, f_r)
|
||||
// pop(add(f_x, _1))
|
||||
|
@ -11,7 +11,7 @@
|
||||
// {
|
||||
// let _2 := mload(7)
|
||||
// let f_a := sload(mload(2))
|
||||
// let f_x
|
||||
// let f_x := 0
|
||||
// let f_r := mul(f_a, f_a)
|
||||
// f_x := add(f_r, f_r)
|
||||
// let y := add(f_x, _2)
|
||||
|
@ -463,12 +463,11 @@
|
||||
// let _2 := 0
|
||||
// let _485 := mload(_2)
|
||||
// let abi_encode_pos := _1
|
||||
// let abi_encode_end_67_610
|
||||
// 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 := abi_encode_end_67_610
|
||||
// let abi_encode_i_69 := _2
|
||||
// for {
|
||||
// }
|
||||
// lt(abi_encode_i_69, abi_encode_length_68)
|
||||
@ -476,21 +475,21 @@
|
||||
// abi_encode_i_69 := add(abi_encode_i_69, 1)
|
||||
// }
|
||||
// {
|
||||
// let _857 := mload(abi_encode_srcPtr)
|
||||
// let abi_encode_pos_71_965 := abi_encode_pos
|
||||
// let abi_encode_length_72_966 := 0x3
|
||||
// let abi_encode_srcPtr_73_967 := _857
|
||||
// let abi_encode_i_74_968 := _2
|
||||
// let _863 := mload(abi_encode_srcPtr)
|
||||
// let abi_encode_pos_71_971 := abi_encode_pos
|
||||
// let abi_encode_length_72_972 := 0x3
|
||||
// let abi_encode_srcPtr_73_973 := _863
|
||||
// let abi_encode_i_74_974 := _2
|
||||
// for {
|
||||
// }
|
||||
// lt(abi_encode_i_74_968, abi_encode_length_72_966)
|
||||
// lt(abi_encode_i_74_974, abi_encode_length_72_972)
|
||||
// {
|
||||
// abi_encode_i_74_968 := add(abi_encode_i_74_968, 1)
|
||||
// abi_encode_i_74_974 := add(abi_encode_i_74_974, 1)
|
||||
// }
|
||||
// {
|
||||
// mstore(abi_encode_pos_71_965, and(mload(abi_encode_srcPtr_73_967), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
|
||||
// abi_encode_srcPtr_73_967 := add(abi_encode_srcPtr_73_967, _1)
|
||||
// abi_encode_pos_71_965 := add(abi_encode_pos_71_965, _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)
|
||||
|
Loading…
Reference in New Issue
Block a user