solidity/libyul/optimiser
hrkrshnn 2cdd3b2081 Resolving Keccak-256: check if arguments are identifiers early.
Previously, the check on whether the optimization was useful gas wise was done before checking if
the keccak256 opcode had identifier as arguments. Since the gas meter crashes when encountering
certain Yul opcodes (create, dataoffset, etc.), this optimizer step crashed.
2021-09-06 13:48:07 +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 Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
BlockFlattener.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
BlockFlattener.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
BlockHasher.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
BlockHasher.h Rename AsmData -> AST 2020-11-25 17:58:02 +00: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 Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
CircularReferencesPruner.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
CommonSubexpressionEliminator.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
CommonSubexpressionEliminator.h Add test. 2021-04-22 17:23:56 +02:00
ConditionalSimplifier.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
ConditionalSimplifier.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
ConditionalUnsimplifier.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
ConditionalUnsimplifier.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
ControlFlowSimplifier.cpp Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
ControlFlowSimplifier.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
DataFlowAnalyzer.cpp Replaced boost remove_erase and remove_erase_if 2021-04-24 08:10:41 +05:30
DataFlowAnalyzer.h Evaluate keccak(a, const) if value at memory location a is known 2021-04-22 18:19:47 +02:00
DeadCodeEliminator.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
DeadCodeEliminator.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
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
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 Replaced keys, values and reverse with ranges 2021-03-31 23:33:04 +05:30
ExpressionJoiner.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
ExpressionSimplifier.cpp Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
ExpressionSimplifier.h Rename AsmData -> AST 2020-11-25 17:58:02 +00: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 Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
ForLoopInitRewriter.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
FullInliner.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
FullInliner.h Rename AsmData -> AST 2020-11-25 17:58:02 +00: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
FunctionDefinitionCollector.cpp Function definition collector. 2021-06-28 18:11:57 +02:00
FunctionDefinitionCollector.h Function definition collector. 2021-06-28 18:11:57 +02:00
FunctionGrouper.cpp Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
FunctionGrouper.h Rename AsmData -> AST 2020-11-25 17:58:02 +00: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 Refactoring yul source locations. 2021-05-04 16:05:23 +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 Fix recursion protection. 2021-08-19 12:51:54 +02:00
KnowledgeBase.h Fix recursion protection. 2021-08-19 12:51:54 +02:00
LoadResolver.cpp Resolving Keccak-256: check if arguments are identifiers early. 2021-09-06 13:48:07 +02:00
LoadResolver.h Skip resolving Keccak if AST contains msize. 2021-04-22 18:19:47 +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 NameCollecter can now only collect VariableDeclarations 2021-03-25 11:49:16 +01:00
NameCollector.h NameCollecter can now only collect VariableDeclarations 2021-03-25 11:49:16 +01:00
NameDispenser.cpp Merge pull request #10419 from ethereum/bug-namesimplifier 2020-12-03 17:52:40 +01: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 Refined cleanup. 2021-02-16 14:20:27 +01: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 Merge pull request #11311 from anurag-git/issue_10738-3 2021-04-26 14:18:15 +02:00
OptimizerUtilities.h Add toEVMInstruction helper 2021-04-23 22:56:50 +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 Remove unneeded include files 2021-06-07 12:53:18 -04:00
ReasoningBasedSimplifier.h Extracted the class SMT Solver from ReasoningBasedSimplifier 2021-05-06 11:26:26 +02:00
RedundantAssignEliminator.cpp Refactor RedundantAssignEliminator. 2021-08-13 14:25:14 +02:00
RedundantAssignEliminator.h Refactor RedundantAssignEliminator. 2021-08-13 14:25:14 +02:00
RedundantStoreBase.cpp Refactor RedundantAssignEliminator. 2021-08-13 14:25:14 +02:00
RedundantStoreBase.h Refactor RedundantAssignEliminator. 2021-08-13 14:25:14 +02:00
Rematerialiser.cpp Replace ranges::all_of wrapper by range-v3. 2021-01-12 21:44:42 +01:00
Rematerialiser.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
Semantics.cpp Add toEVMInstruction helper 2021-04-23 22:56:50 +01:00
Semantics.h Add verbatim builtin. 2021-04-26 19:56:44 +02:00
SimplificationRules.cpp Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
SimplificationRules.h Refactoring yul source locations. 2021-05-04 16:05:23 +02: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 Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
SSATransform.h Rename AsmData -> AST 2020-11-25 17:58:02 +00: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 Remove unneeded include files 2021-06-07 12:53:18 -04:00
StackCompressor.h Rename AsmData -> AST 2020-11-25 17:58:02 +00:00
StackLimitEvader.cpp Move function arguments and return values. 2021-06-28 18:11:57 +02:00
StackLimitEvader.h Add stack limit evader. 2020-09-17 22:13:27 +02:00
StackToMemoryMover.cpp Maintain disambiguation when generating new functions in StackToMemoryMover. 2021-06-28 18:11:57 +02:00
StackToMemoryMover.h Add missing header. 2021-08-17 16:04:38 +02:00
StructuralSimplifier.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
StructuralSimplifier.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
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 Replaced boost remove_erase and remove_erase_if 2021-04-24 08:10:41 +05:30
Suite.h Optimizer context has parameter expectedExecutionsPerDeployment 2021-04-22 17:27:57 +02:00
SyntacticalEquality.cpp Remove unneeded include files 2021-06-07 12:53:18 -04:00
SyntacticalEquality.h Rename AsmData -> AST 2020-11-25 17:58:02 +00: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
UnusedFunctionParameterPruner.cpp Rename AsmData -> AST 2020-11-25 17:58:02 +00: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 Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
UnusedPruner.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
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 Rename AsmData -> AST 2020-11-25 17:58:02 +00: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.