solidity/libyul/optimiser
Nikola Matić be8ecb17d8
Merge pull request #13703 from ethereum/performance_metrics
Code to output performance metrics for optimizer steps.
2022-11-22 13:36:16 -05: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 Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
CallGraphGenerator.h Implement cxx20 polyfill and replace InvertibleMap entirely. 2021-01-12 21:40:40 +01: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 Refactor join knowledge. 2022-11-14 11:56:32 +01:00
DataFlowAnalyzer.h Refactor join knowledge. 2022-11-14 11:56:32 +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 Keep canonical form of Yul code at all times. 2021-11-09 13:29:10 +01:00
ExpressionJoiner.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
ExpressionSimplifier.cpp Yul Optimizer: Simplify start offset of zero-length operations. 2022-08-15 15:42:51 +02: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 Update FullInliner.cpp 2022-08-14 03:14:15 +03: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 Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
KnowledgeBase.h Refactor data flow analyzer state access. 2022-03-14 19:32:33 +01:00
LoadResolver.cpp Refactor data flow analyzer state access. 2022-03-14 19:32:33 +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 Rename AsmData -> AST 2020-11-25 17:58:02 +00: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 Remove unneeded include files 2021-06-07 12:53:18 -04:00
Metrics.h Adjust cost of literal zero. 2021-04-22 11:42:42 +02:00
NameCollector.cpp Refactor stack compressor. 2022-03-15 21:28:47 +01:00
NameCollector.h Refactor stack compressor. 2022-03-15 21:28:47 +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 Equal store eliminator. 2022-01-03 15:52:05 +01:00
OptimizerUtilities.h Equal store eliminator. 2022-01-03 15:52:05 +01:00
README.md DOCS: update optimizer docs, harmonize spelling and add Yul-based optimizer module 2021-05-04 17:37:02 +02:00
ReasoningBasedSimplifier.cpp Forward declare Instruction enum in EVMVersion 2022-09-29 13:41:58 +02:00
ReasoningBasedSimplifier.h Extracted the class SMT Solver from ReasoningBasedSimplifier 2021-05-06 11:26:26 +02:00
Rematerialiser.cpp Only analyze memory in DataFlowAnalyzer if it is needed in the optimizer step. 2022-07-11 15:51:25 +02: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 Use side effects of user-defined functions in other optimizer steps. 2021-11-02 11:59:01 +01:00
Semantics.h Use side effects of user-defined functions in other optimizer steps. 2021-11-02 11:59:01 +01:00
SimplificationRules.cpp Refactor data flow analyzer state access. 2022-03-14 19:32:33 +01:00
SimplificationRules.h Refactor data flow analyzer state access. 2022-03-14 19:32:33 +01:00
SMTSolver.cpp Extracted the class SMT Solver from ReasoningBasedSimplifier 2021-05-06 11:26:26 +02:00
SMTSolver.h Extracted the class SMT Solver from ReasoningBasedSimplifier 2021-05-06 11:26:26 +02: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 Introduce forEach for yul ast nodes. 2021-11-04 16:14:43 +01:00
StackLimitEvader.h Compatibility with StackCompressor and StackLimitEvader. 2021-11-03 12:39:55 +01: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 Code to output performance metrics for optimizer steps. 2022-11-22 18:44:01 +01: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 Equal store eliminator. 2022-01-03 15:52:05 +01:00
UnusedAssignEliminator.h Rename RedundantAssignEliminator to UnusedAssignEliminator. 2021-11-23 10:38:36 +01:00
UnusedFunctionParameterPruner.cpp Replace use of boost::algorithm::all_of with ranges::all_of 2022-09-27 03:33:13 +02: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 Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
UnusedStoreBase.h Equal store eliminator. 2022-01-03 15:52:05 +01:00
UnusedStoreEliminator.cpp Bugfix and tests. 2022-09-08 11:54:14 +02:00
UnusedStoreEliminator.h Document UnusedStoreEliminator 2022-10-21 13:19:56 +02: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.