solidity/libyul/optimiser
Martin Blicha 29041c8101 Remove ReasoningBasedSimplifier from libyul
Due to a design decision to move away from a bundled SMT solver,
ReasoningBasedSimplifier in its current form cannot be use any longer.
This is a necessary step to allow a unified way to call solvers using
only SMTLIB interface.

Since this optimization pass has always been marked as highly
experimental and never turned on by default, it should be OK to remove
it.
2023-06-28 14:38:36 +02:00
..
ASTCopier.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
ASTCopier.h Added a helper class FunctionCopier in ASTCopier 2021-03-29 11:02:18 +02:00
ASTWalker.cpp Replaced keys, values and reverse with ranges 2021-03-31 23:33:04 +05:30
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 Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
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 Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
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 Rename AsmScope* to Scope* 2020-12-18 11:55:17 +00:00
Disambiguator.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
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 Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
EquivalentFunctionCombiner.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
EquivalentFunctionDetector.cpp Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
EquivalentFunctionDetector.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
ExpressionInliner.cpp Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
ExpressionInliner.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
ExpressionJoiner.cpp Only count variables if only variables are needed. 2022-11-14 10:24:28 +01:00
ExpressionJoiner.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
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 Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
ForLoopConditionIntoBody.cpp Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
ForLoopConditionIntoBody.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
ForLoopConditionOutOfBody.cpp Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
ForLoopConditionOutOfBody.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
ForLoopInitRewriter.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
ForLoopInitRewriter.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
FullInliner.cpp Deterministically choose memory slots for variables independently of names that may depend on AST IDs. 2023-06-12 17:28:01 +02:00
FullInliner.h Relax inliner heuristics. 2022-05-23 13:37:50 +02:00
FunctionCallFinder.cpp Enable more C++ compiler warnings 2020-12-10 21:03:58 +00:00
FunctionCallFinder.h Add stack limit evader. 2020-09-17 22:13:27 +02:00
FunctionGrouper.cpp Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
FunctionGrouper.h Keep canonical form of Yul code at all times. 2021-11-09 13:29:10 +01:00
FunctionHoister.cpp Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
FunctionHoister.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
FunctionSpecializer.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
FunctionSpecializer.h FunctionSpecializer: skip specializing recursive functions 2021-03-29 11:02:31 +02:00
InlinableExpressionFunctionFinder.cpp Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
InlinableExpressionFunctionFinder.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
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 Extended LoopInvariantCodeMotion for storage and state 2020-08-19 12:41:29 +02:00
MainFunction.cpp Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
MainFunction.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
Metrics.cpp Adds support for the EVM version "Paris". 2023-01-23 18:50:36 +00:00
Metrics.h Adjust cost of literal zero. 2021-04-22 11:42:42 +02:00
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 Merge pull request #10419 from ethereum/bug-namesimplifier 2020-12-03 17:52:40 +01:00
NameDisplacer.cpp Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
NameDisplacer.h Implemented UnusedFunctionArgumentPruner 2020-09-03 13:15:38 +02:00
NameSimplifier.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
NameSimplifier.h Merge pull request #10419 from ethereum/bug-namesimplifier 2020-12-03 17:52:40 +01:00
OptimiserStep.h Optimizer context has parameter expectedExecutionsPerDeployment 2021-04-22 17:27:57 +02:00
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 DOCS: update optimizer docs, harmonize spelling and add Yul-based optimizer module 2021-05-04 17:37:02 +02:00
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 Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
SSAReverser.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
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 Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
SSAValueTracker.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
StackCompressor.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
StackCompressor.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
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 Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
Substitution.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
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 Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
TypeInfo.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
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 Implemented UnusedFunctionArgumentPruner 2020-09-03 13:15:38 +02:00
UnusedFunctionsCommon.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
UnusedFunctionsCommon.h Move filter to CommonData.h 2020-12-09 11:13:27 +01:00
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 Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
VarDeclInitializer.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
VarNameCleaner.cpp Split Common.h into Numeric.h. 2021-09-23 15:27:29 +02:00
VarNameCleaner.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00

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.