solidity/libyul/optimiser
2023-07-17 16:40:43 +02:00
..
ASTCopier.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
ASTCopier.h
ASTWalker.cpp
ASTWalker.h Minor fix to forEach on Yul AST nodes. 2021-11-05 13:24:30 +01:00
BlockFlattener.cpp Keep canonical form of Yul code at all times. 2021-11-09 13:29:10 +01:00
BlockFlattener.h Keep canonical form of Yul code at all times. 2021-11-09 13:29:10 +01:00
BlockHasher.cpp Use hash of candidates for CSE. 2022-11-09 16:57:46 +01:00
BlockHasher.h Use hash of candidates for CSE. 2022-11-09 16:57:46 +01:00
CallGraphGenerator.cpp Deterministically choose memory slots for variables independently of names that may depend on AST IDs. 2023-06-12 17:28:01 +02:00
CallGraphGenerator.h Deterministically choose memory slots for variables independently of names that may depend on AST IDs. 2023-06-12 17:28:01 +02:00
CircularReferencesPruner.cpp Keep canonical form of Yul code at all times. 2021-11-09 13:29:10 +01:00
CircularReferencesPruner.h
CommonSubexpressionEliminator.cpp Use hash of candidates for CSE. 2022-11-09 16:57:46 +01:00
CommonSubexpressionEliminator.h Use hash of candidates for CSE. 2022-11-09 16:57:46 +01:00
ConditionalSimplifier.cpp Control flow side effects on non-disambiguated source. 2021-11-04 16:32:11 +01:00
ConditionalSimplifier.h Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
ConditionalUnsimplifier.cpp Control flow side effects on non-disambiguated source. 2021-11-04 16:32:11 +01:00
ConditionalUnsimplifier.h Use side effects of user-defined functions in other optimizer steps. 2021-11-02 11:59:01 +01:00
ControlFlowSimplifier.cpp Add helper to see if a switch has a default case. 2022-03-15 14:29:54 +01:00
ControlFlowSimplifier.h
DataFlowAnalyzer.cpp Re-implement KnowledgeBase using groups of constantly-spaced variables. 2023-02-09 10:47:11 +01:00
DataFlowAnalyzer.h Re-use knowledge about keccak calls. 2022-12-07 14:16:13 +01:00
DeadCodeEliminator.cpp Control flow side effects on non-disambiguated source. 2021-11-04 16:32:11 +01:00
DeadCodeEliminator.h Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
Disambiguator.cpp
Disambiguator.h
EqualStoreEliminator.cpp Refactor data flow analyzer state access. 2022-03-14 19:32:33 +01:00
EqualStoreEliminator.h Only analyze memory in DataFlowAnalyzer if it is needed in the optimizer step. 2022-07-11 15:51:25 +02:00
EquivalentFunctionCombiner.cpp
EquivalentFunctionCombiner.h
EquivalentFunctionDetector.cpp
EquivalentFunctionDetector.h
ExpressionInliner.cpp
ExpressionInliner.h
ExpressionJoiner.cpp Only count variables if only variables are needed. 2022-11-14 10:24:28 +01:00
ExpressionJoiner.h
ExpressionSimplifier.cpp Adds support for the EVM version "Paris". 2023-01-23 18:50:36 +00:00
ExpressionSimplifier.h Yul Optimizer: Simplify start offset of zero-length operations. 2022-08-15 15:42:51 +02:00
ExpressionSplitter.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
ExpressionSplitter.h
ForLoopConditionIntoBody.cpp
ForLoopConditionIntoBody.h
ForLoopConditionOutOfBody.cpp
ForLoopConditionOutOfBody.h
ForLoopInitRewriter.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
ForLoopInitRewriter.h
FullInliner.cpp FullInliner: Do not include calls whose arguments may have side-effects 2023-07-17 16:40:43 +02:00
FullInliner.h Properly document FullInliner's prerequisites 2023-07-17 16:40:43 +02:00
FunctionCallFinder.cpp
FunctionCallFinder.h
FunctionGrouper.cpp
FunctionGrouper.h Keep canonical form of Yul code at all times. 2021-11-09 13:29:10 +01:00
FunctionHoister.cpp
FunctionHoister.h
FunctionSpecializer.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
FunctionSpecializer.h
InlinableExpressionFunctionFinder.cpp
InlinableExpressionFunctionFinder.h
KnowledgeBase.cpp Introduce helpers for VariableOffset. 2023-02-09 16:44:36 +01:00
KnowledgeBase.h Introduce helpers for VariableOffset. 2023-02-09 16:44:36 +01:00
LoadResolver.cpp Re-use knowledge about keccak calls. 2022-12-07 14:16:13 +01:00
LoadResolver.h Only analyze memory in DataFlowAnalyzer if it is needed in the optimizer step. 2022-07-11 15:51:25 +02:00
LoopInvariantCodeMotion.cpp Only count variables if only variables are needed. 2022-11-14 10:24:28 +01:00
LoopInvariantCodeMotion.h
MainFunction.cpp
MainFunction.h
Metrics.cpp Adds support for the EVM version "Paris". 2023-01-23 18:50:36 +00:00
Metrics.h
NameCollector.cpp Only count variables if only variables are needed. 2022-11-14 10:24:28 +01:00
NameCollector.h Only count variables if only variables are needed. 2022-11-14 10:24:28 +01:00
NameDispenser.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
NameDispenser.h
NameDisplacer.cpp
NameDisplacer.h
NameSimplifier.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
NameSimplifier.h
OptimiserStep.h
OptimizerUtilities.cpp Adds support for the EVM version "Paris". 2023-01-23 18:50:36 +00:00
OptimizerUtilities.h Adds support for the EVM version "Paris". 2023-01-23 18:50:36 +00:00
README.md
Rematerialiser.cpp Only count variables if only variables are needed. 2022-11-14 10:24:28 +01:00
Rematerialiser.h Only analyze memory in DataFlowAnalyzer if it is needed in the optimizer step. 2022-07-11 15:51:25 +02:00
Semantics.cpp Overload MSizeFinder::containsMSize() for Yul objects 2023-06-07 12:12:00 +02:00
Semantics.h Overload MSizeFinder::containsMSize() for Yul objects 2023-06-07 12:12:00 +02:00
SimplificationRules.cpp Adds support for the EVM version "Paris". 2023-01-23 18:50:36 +00:00
SimplificationRules.h Adds support for the EVM version "Paris". 2023-01-23 18:50:36 +00:00
SSAReverser.cpp
SSAReverser.h
SSATransform.cpp Introduce forEach for yul ast nodes. 2021-11-04 16:14:43 +01:00
SSATransform.h Rename RedundantAssignEliminator to UnusedAssignEliminator. 2021-11-23 10:38:36 +01:00
SSAValueTracker.cpp
SSAValueTracker.h
StackCompressor.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
StackCompressor.h
StackLimitEvader.cpp Deterministically choose memory slots for variables independently of names that may depend on AST IDs. 2023-06-12 17:28:01 +02:00
StackLimitEvader.h Deterministically choose memory slots for variables independently of names that may depend on AST IDs. 2023-06-12 17:28:01 +02:00
StackToMemoryMover.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
StackToMemoryMover.h Split Common.h into Numeric.h. 2021-09-23 15:27:29 +02:00
StructuralSimplifier.cpp Refix MSVC Debug crash 2022-04-26 01:52:56 +02:00
StructuralSimplifier.h Remove unneeded header files. 2022-03-10 09:55:05 +01:00
Substitution.cpp
Substitution.h
Suite.cpp Remove ReasoningBasedSimplifier from libyul 2023-06-28 14:38:36 +02:00
Suite.h Code to output performance metrics for optimizer steps. 2022-11-22 18:44:01 +01:00
SyntacticalEquality.cpp Use hash of candidates for CSE. 2022-11-09 16:57:46 +01:00
SyntacticalEquality.h Use hash of candidates for CSE. 2022-11-09 16:57:46 +01:00
TypeInfo.cpp
TypeInfo.h
UnusedAssignEliminator.cpp Re-implement unused assign / unused store eliminator. 2023-03-20 13:49:37 +01:00
UnusedAssignEliminator.h Re-implement unused assign / unused store eliminator. 2023-03-20 13:49:37 +01:00
UnusedFunctionParameterPruner.cpp Only count variables if only variables are needed. 2022-11-14 10:24:28 +01:00
UnusedFunctionParameterPruner.h
UnusedFunctionsCommon.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
UnusedFunctionsCommon.h
UnusedPruner.cpp Keep canonical form of Yul code at all times. 2021-11-09 13:29:10 +01:00
UnusedPruner.h Keep canonical form of Yul code at all times. 2021-11-09 13:29:10 +01:00
UnusedStoreBase.cpp Re-implement unused assign / unused store eliminator. 2023-03-20 13:49:37 +01:00
UnusedStoreBase.h Re-implement unused assign / unused store eliminator. 2023-03-20 13:49:37 +01:00
UnusedStoreEliminator.cpp Re-implement unused assign / unused store eliminator. 2023-03-20 13:49:37 +01:00
UnusedStoreEliminator.h Re-implement unused assign / unused store eliminator. 2023-03-20 13:49:37 +01:00
VarDeclInitializer.cpp
VarDeclInitializer.h
VarNameCleaner.cpp Split Common.h into Numeric.h. 2021-09-23 15:27:29 +02:00
VarNameCleaner.h

Yul-Based Optimizer

The documentation of the Yul-based optimizer module has been moved to the official Solidity documentation.

Please refer to the optimizer documentation for a description of all optimization stages and how to use the optimizer and to the Yul documentation for more information on the optimization step sequence and a list of abbreviations for each step.