Commit Graph
100 Commits
Author SHA1 Message Date
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
Alexander Arlt c5673278a7 Remove EWASM backend. 2023-05-11 10:56:55 -05:00
chriseth 5950ec306b Code to output performance metrics for optimizer steps. 2022-11-22 18:44:01 +01:00
Nikola Matic e37dc8e975 Address review comments 2022-09-13 17:23:31 +02:00
Nikola Matic 314a1cc92f Command line tests and minor touch ups 2022-09-12 11:13:49 +02:00
Nikola Matic f6f0d6a360 Make hardcoded parts of the optimizer sequence configurable 2022-09-12 10:57:36 +02:00
chriseth 4f02be110c Unused store eliminator. 2022-03-10 18:25:28 +01:00
chriseth 772e100813 Equal store eliminator. 2022-01-03 15:52:05 +01:00
chriseth bd321b9f1f Rename RedundantAssignEliminator to UnusedAssignEliminator. 2021-11-23 10:38:36 +01:00
Daniel Kirchner 9fb77b139c Keep canonical form of Yul code at all times. 2021-11-09 13:29:10 +01:00
Daniel Kirchner 95c973d6c2 Refactoring of optimiser suite and yulopti. 2021-11-03 19:33:01 +01:00
Daniel Kirchner 4229369180 Compatibility with StackCompressor and StackLimitEvader. 2021-11-03 12:39:55 +01:00
Kamil Śliwak 620ec47efb OptimizerSuite: Rewrite runSequence() with support for nested brackets 2021-10-06 19:15:02 +02:00
Kamil Śliwak 2fb8f1be5b OptimiserSuite: Use string_view instead of string for step sequences 2021-10-06 18:48:41 +02:00
Sreekesh V 79d9d5bf0d Change optimizer sequence validations to allow nested brackets 2021-10-06 18:46:53 +02:00
anurag4u80 c4cf412fed Replaced boost remove_erase and remove_erase_if 2021-04-24 08:10:41 +05:30
hrkrshnn 1f5b874eaf Optimizer context has parameter expectedExecutionsPerDeployment 2021-04-22 17:27:57 +02:00
anurag4u80 bbcdddeed9 Replaced keys, values and reverse with ranges 2021-03-31 23:33:04 +05:30
hrkrshnn 45a3747701 Added FunctionSpecializer to the optimization suite 2021-03-29 11:02:18 +02:00
chriseth 27e44b85e3 Merge pull request #10419 from ethereum/bug-namesimplifier
Fix a bug in NameSimplifier.
2020-12-03 17:52:40 +01:00
hrkrshnn 3efac3eef0 NameSimplifier is removed from steps available to users. 2020-12-02 13:48:01 +01:00
chriseth 8279d90ba2 Merge pull request #10403 from ethereum/rename-asmdata
Rename AsmData* to AST*
2020-12-01 14:33:11 +01:00
chriseth ac9b31d623 Abort early if the optimizer sequence is empty. 2020-11-26 16:41:20 +01:00
Alex Beregszaszi a22077f736 Rename AsmData -> AST
Also attempt to only include ASTForward where appropriate.
2020-11-25 17:58:02 +00:00
Daniel Kirchner 61a03036fe Refactor stack to memory mover in preparation of moving function arguments. 2020-10-13 12:20:04 +02:00
Daniel Kirchner 5442a7ade2 Always run the FunctionHoister as part of the optimizer Suite. 2020-10-06 22:30:37 +02:00
Daniel Kirchner f4b42d1c72 Add stack limit evader. 2020-09-17 22:13:27 +02:00
chriseth bfd3ab23e2 Disallow optimizer steps that require SMT if none is available. 2020-09-15 15:57:59 +02:00
chriseth 9bcc2f1713 Make ReasoningBasedSimplifier available as step. 2020-09-15 15:57:59 +02:00
chriseth 6101bdf7e2 Name simplifier. 2020-09-10 16:23:29 +02:00
Harikrishnan Mulackal e2fd41f097 Implemented UnusedFunctionArgumentPruner 2020-09-03 13:15:38 +02:00
Sachin Grover b7adb2aa42 Add SPDX license identifier if not present already in source file
Fixes: #9220
2020-07-17 20:24:12 +05:30
Kamil Śliwak c41a832f65 Move the default optimisation steps from OptimiserSuite to OptimiserSettings
- Now it's a mandatory parameter in OptimiserSuite::run()
2020-04-24 17:30:56 +02:00
Kamil Śliwak 69b79f848b OptimiserSuite: Allow validating the optimisation sequence without executing it
- Create a separate validateSequence() that can be used independently.
- Tweak the exception messages a bit to be usable as command-line errors
2020-04-24 17:30:56 +02:00
Kamil Śliwak e2c0e6331c OptimiserSuite: Define NonStepAbbreviations and use it for extra sanity checks 2020-04-24 17:30:56 +02:00
Kamil Śliwak 5a515240ac OptimiserSuite: Use brackets instead of parentheses as syntax for repeating abbreviation sequences
- We want to start accepting abbreviation sequences on the command line and parentheses would always have to be escaped in that context.
- There wasn't any important reason behind choosing () rather than [] or {} and it still isn't too late to switch.
2020-04-24 17:30:56 +02:00
Kamil Śliwak 9db7d2bde9 OptimiserSuite: Replace full step names in run() with abbreviations 2020-04-16 16:09:15 +02:00
Kamil Śliwak 9d7df5db69 OptimiserSuite: Add a variant of runSequence() that works with a string of abbreviations 2020-04-16 16:09:15 +02:00
Kamil Śliwak 1b4e06605d OptimiserSuite: Extract the code for repeating a sequence into runSequenceUntilStable()
- Define a constant for the maximum number of repeats of the optimisation string
2020-04-16 15:23:38 +02:00
Gaith Hallak 24d6702986 [Yul] Prune functions that call each other but are otherwise unreferenced 2020-02-11 20:39:32 +03:00
cameel 4e7c1c7876 OptimiserSuite: Add two maps for converting between step names and abbreviations
- Abbreviations match those used in yulopti.
- I considered using boost::bimap but I think it would be an overkill. Two simple maps are good enough in a situation where data is constant and there isn't much of it.
- I could also use InvertibleMap from libsolutil but I don't even need any of its methods since my map is a constant. I also don't need the inverted map to store sets because my values are unique.
- The reverseMap() is generic enough to be moved to some global file with utilities but I don't sure if it's going to actually be useful to others in practice.
2020-02-03 12:22:47 +01:00
cameel 2ee7e6042b OptimiserSuite: Remove VarNameCleaner from the list of available steps 2020-01-30 17:35:27 +01:00
Christian Parpart 345f9928ab Library libdevcore renamed to libsolutil. 2020-01-07 15:51:50 +01:00
Christian Parpart 6b23412fae C++ namespace cleanup (except tests). 2020-01-07 15:51:50 +01:00
chriseth 301215f186 Merge pull request #7461 from sifmelcara/licm
[YulOpt] Implement loop-invariant code motion
2019-11-28 12:00:19 +01:00
mingchuan db60d123d0 [YulOpt] Implement loop-invariant code motion 2019-11-28 11:59:29 +01:00
chriseth 9e9b643b93 Tune the suite. 2019-11-27 11:56:11 +01:00
Leonardo Alt be849b3c47 Replace boost::variant by std::variant in libyul 2019-11-19 17:23:18 +01:00
chriseth 02d5b7c18a Run literal rematerializer before for loop condition out of body. 2019-11-01 14:01:56 +01:00
chriseth 61a2d44f38 Conditional unsimplifier 2019-11-01 14:01:56 +01:00