mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
docs: Info about --yul-optimizations and optimizer steps in Yul section
This commit is contained in:
parent
ace1eacb88
commit
d037f7a3c5
53
docs/yul.rst
53
docs/yul.rst
@ -1034,3 +1034,56 @@ If you want to use Solidity in stand-alone Yul mode, you activate the optimizer
|
||||
solc --strict-assembly --optimize
|
||||
|
||||
In Solidity mode, the Yul optimizer is activated together with the regular optimizer.
|
||||
|
||||
Optimization step sequence
|
||||
--------------------------
|
||||
|
||||
By default the Yul optimizer applies its predefined sequence of optimization steps to the generated assembly.
|
||||
You can override this sequence and supply your own using the `--yul-optimizations` option when compiling
|
||||
in Solidity mode:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
solc --optimize --ir-optimized --yul-optimizations 'dhfoD[xarrscLMcCTU]uljmul'
|
||||
|
||||
By enclosing part of the sequence in square brackets (`[]`) you tell the optimizer to repeatedly
|
||||
apply that part until it no longer improves the size of the resulting assembly.
|
||||
You can use brackets multiple times in a single sequence but they cannot be nested.
|
||||
|
||||
The following optimization steps are available:
|
||||
|
||||
============ ===============================
|
||||
Abbreviation Full name
|
||||
============ ===============================
|
||||
f `BlockFlattener`
|
||||
l `CircularReferencesPruner`
|
||||
c `CommonSubexpressionEliminator`
|
||||
C `ConditionalSimplifier`
|
||||
U `ConditionalUnsimplifier`
|
||||
n `ControlFlowSimplifier`
|
||||
D `DeadCodeEliminator`
|
||||
v `EquivalentFunctionCombiner`
|
||||
e `ExpressionInliner`
|
||||
j `ExpressionJoiner`
|
||||
s `ExpressionSimplifier`
|
||||
x `ExpressionSplitter`
|
||||
I `ForLoopConditionIntoBody`
|
||||
O `ForLoopConditionOutOfBody`
|
||||
o `ForLoopInitRewriter`
|
||||
i `FullInliner`
|
||||
g `FunctionGrouper`
|
||||
h `FunctionHoister`
|
||||
T `LiteralRematerialiser`
|
||||
L `LoadResolver`
|
||||
M `LoopInvariantCodeMotion`
|
||||
r `RedundantAssignEliminator`
|
||||
m `Rematerialiser`
|
||||
V `SSAReverser`
|
||||
a `SSATransform`
|
||||
t `StructuralSimplifier`
|
||||
u `UnusedPruner`
|
||||
d `VarDeclInitializer`
|
||||
============ ===============================
|
||||
|
||||
Some steps depend on properties ensured by `BlockFlattener`, `FunctionGrouper`, `ForLoopInitRewriter`.
|
||||
For this reason the Yul optimizer always applies them before applying any steps supplied by the user.
|
||||
|
Loading…
Reference in New Issue
Block a user