Skip to content

Commit e439685

Browse files
authored
Merge pull request #14468 from ethereum/push0-rematerializer-default-sequence
Push0 rematerializer default sequence
2 parents 1b8e792 + fdc6699 commit e439685

File tree

121 files changed

+306
-663
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+306
-663
lines changed

Changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Language Features:
66
Compiler Features:
77
* Parser: Remove the experimental error recovery mode (``--error-recovery`` / ``settings.parserErrorRecovery``).
88
* Yul Optimizer: If ``PUSH0`` is supported, favor zero literals over storing zero values in variables.
9+
* Yul Optimizer: Run the ``Rematerializer`` and ``UnusedPruner`` steps at the end of the default clean-up sequence.
910

1011

1112
Bugfixes:

docs/internals/optimizer.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ You can override this sequence and supply your own using the ``--yul-optimizatio
338338

339339
.. code-block:: bash
340340
341-
solc --optimize --ir-optimized --yul-optimizations 'dhfoD[xarrscLMcCTU]uljmul:fDnTOc'
341+
solc --optimize --ir-optimized --yul-optimizations 'dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu'
342342
343343
The order of steps is significant and affects the quality of the output.
344344
Moreover, applying a step may uncover new optimization opportunities for others that were already applied,

libsolidity/interface/OptimiserSettings.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ struct OptimiserSettings
5959
"]"
6060
"jmul[jul] VcTOcul jmul"; // Make source short and pretty
6161

62-
static char constexpr DefaultYulOptimiserCleanupSteps[] = "fDnTOc";
62+
static char constexpr DefaultYulOptimiserCleanupSteps[] = "fDnTOcmu";
6363

6464
/// No optimisations at all - not recommended.
6565
static OptimiserSettings none()

test/cmdlineTests/name_simplifier/output

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ object "C_59" {
101101
mstore(add(memPtr_1, _3), "longstringlongstringlongstringlo")
102102
mstore(add(memPtr_1, _9), "ngstringlongstringlongstringlong")
103103
let _11 := 96
104-
mstore(add(memPtr_1, _11), "stringlongstringlongstringlongst")
104+
mstore(add(memPtr_1, 96), "stringlongstringlongstringlongst")
105105
mstore(add(memPtr_1, 128), "ring")
106106
let memPos := mload(_9)
107107
mstore(memPos, _10)
@@ -113,8 +113,8 @@ object "C_59" {
113113
{
114114
mstore(add(add(memPos, i), _11), mload(add(add(memPtr_1, i), _3)))
115115
}
116-
mstore(add(add(memPos, length), _11), 0)
117-
return(memPos, add(sub(add(memPos, and(add(length, 31), _8)), memPos), _11))
116+
mstore(add(add(memPos, length), 96), 0)
117+
return(memPos, add(sub(add(memPos, and(add(length, 31), _8)), memPos), 96))
118118
}
119119
}
120120
revert(0, 0)

test/cmdlineTests/optimizer_array_sload/output

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ object "Arraysum_34" {
1919
/// @src 0:80:429 "contract Arraysum {..."
2020
mstore(64, memoryguard(0x80))
2121
let _1 := 4
22-
if iszero(lt(calldatasize(), _1))
22+
if iszero(lt(calldatasize(), 4))
2323
{
2424
if eq(0x81d73423, shr(224, calldataload(0)))
2525
{
2626
if callvalue() { revert(0, 0) }
2727
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
2828
let var_sum := 0
2929
/// @src 0:368:378 "uint i = 0"
30-
let var_i := /** @src 0:80:429 "contract Arraysum {..." */ var_sum
31-
let _2 := sload(var_sum)
30+
let var_i := /** @src 0:80:429 "contract Arraysum {..." */ 0
31+
let _2 := sload(0)
3232
/// @src 0:364:423 "for(uint i = 0; i < values.length; i++)..."
3333
for { }
3434
/** @src 0:380:397 "i < values.length" */ lt(var_i, _2)

0 commit comments

Comments
 (0)