{ function double(x) -> y { y := add(x, x) } function double_with_se(x) -> y { y := add(x, x) mstore(40, 4) } let i := mload(3) let a := double(i) let b := double(i) let c := double_with_se(i) let d := double_with_se(i) } // ---- // step: commonSubexpressionEliminator // // { // let i := mload(3) // let a := double(i) // let b := a // let c := double_with_se(i) // let d := double_with_se(i) // function double(x) -> y // { y := add(x, x) } // function double_with_se(x_1) -> y_2 // { // y_2 := add(x_1, x_1) // mstore(40, 4) // } // }