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
Daniel Kirchner
b7abd9bba4
Deterministically choose memory slots for variables independently of names that may depend on AST IDs.
2023-06-12 17:28:01 +02:00
Kamil Śliwak
dff774d82f
Overload MSizeFinder::containsMSize() for Yul objects
2023-06-07 12:12:00 +02:00
Alexander Arlt
c5673278a7
Remove EWASM backend.
2023-05-11 10:56:55 -05:00
chriseth
fac5666dc9
Re-implement unused assign / unused store eliminator.
2023-03-20 13:49:37 +01:00
chriseth
29e4becd73
Introduce helpers for VariableOffset.
2023-02-09 16:44:36 +01:00
chriseth
3ac6edec5b
Apply suggestions from code review
2023-02-09 10:47:12 +01:00
chriseth
eec258c2d2
Bugfix.
2023-02-09 10:47:12 +01:00
chriseth
6bbef64034
Optimize in case this is SSA.
2023-02-09 10:47:12 +01:00
chriseth
96e2a6d3fe
Keep one instance of KnowledgeBase for UnusedStoreEliminator.
2023-02-09 10:47:12 +01:00
chriseth
47aa1c65ae
Re-implement KnowledgeBase using groups of constantly-spaced variables.
2023-02-09 10:47:11 +01:00
Rodrigo Q. Saramago
ef6ff2f055
Adds support for the EVM version "Paris".
...
Deprecates `block.difficulty` and disallow `difficulty()` in inline assembly for EVM versions >= paris.
The change is due to the renaming introduced by EIP-4399 (see: https://eips.ethereum.org/EIPS/eip-4399 ).
Introduces `block.prevrandao` in Solidity and `prevrandao()` in inline assembly for EVM versions >= paris.
Co-authored-by: Alex Beregszaszi <alex@rtfs.hu>
Co-authored-by: Daniel <daniel@ekpyron.org>
Co-authored-by: matheusaaguiar <95899911+matheusaaguiar@users.noreply.github.com>
Co-authored-by: Nikola Matić <nikola.matic@ethereum.org>
2023-01-23 18:50:36 +00:00
chriseth
79c52b3c9e
Re-use knowledge about keccak calls.
...
Re-use knowledge about keccak calls.
Update gas cost.
More tests.
Fix bug.
Update libyul/optimiser/DataFlowAnalyzer.cpp
Remove util prefixes
fix test
More test cases.
Add Changelog entry
2022-12-07 14:16:13 +01:00
chriseth
826ada0b96
Merge pull request #13705 from ethereum/onlyCountVariables
...
Only count variables if only variables are needed.
2022-11-25 14:20:07 +01:00
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
chriseth
5950ec306b
Code to output performance metrics for optimizer steps.
2022-11-22 18:44:01 +01:00
chriseth
62ab78bf70
Refactor join knowledge.
2022-11-14 11:56:32 +01:00
chriseth
f1febf69d0
Only count variables if only variables are needed.
2022-11-14 10:24:28 +01:00
chriseth
40342264c2
Use hash of candidates for CSE.
2022-11-09 16:57:46 +01:00
chriseth
cffacac9de
Hash number literals according to their value instead of their string representation.
2022-11-08 20:34:10 +01:00
Nikola Matić
b205fe8494
Merge pull request #13501 from ethereum/document-unused-store-eliminator
...
Document UnusedStoreEliminator
2022-10-21 07:06:20 -05:00
Nikola Matic
9e505bd128
Document UnusedStoreEliminator
...
Update comment in header file
Address review comments
2022-10-21 13:19:56 +02:00
Marenz
9e674ba047
Forward declare Instruction enum in EVMVersion
2022-09-29 13:41:58 +02:00
Alex Beregszaszi
0f484ec93b
Replace use of boost::algorithm::all_of with ranges::all_of
2022-09-27 03:33:13 +02: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
Daniel Kirchner
a33da17300
Bugfix and tests.
...
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2022-09-08 11:54:14 +02:00
Marenz
f7cc29bec1
Add std:: qualifier to move() calls
2022-08-30 11:12:15 +02:00
Daniel Kirchner
e996fe6247
Yul Optimizer: Simplify start offset of zero-length operations.
2022-08-15 15:42:51 +02:00
Leonid Pospelov
32aa000378
Update FullInliner.cpp
2022-08-14 03:14:15 +03:00
chriseth
c12d151834
Only analyze memory in DataFlowAnalyzer if it is needed in the optimizer step.
2022-07-11 15:51:25 +02:00
chriseth
51ef6a62da
Fix removal of memory stores in inline assembly blocks.
2022-06-10 17:32:28 +02:00
Daniel Kirchner
7168c27f0d
Relax inliner heuristics.
2022-05-23 13:37:50 +02:00
Daniel Kirchner
9fa907aac2
Do not remove potentially reverting returndatacopy cases.
2022-05-23 11:01:03 +02:00
a3d4
048b253a93
Refix MSVC Debug crash
2022-04-26 01:52:56 +02:00
a3d4
44093f2ed6
Fix MSVC Debug crash
2022-04-06 01:34:58 +02:00
chriseth
a054285f31
Simplify rematerialization candidates.
2022-03-16 16:43:21 +01:00
chriseth
75abe92eb2
Refactor stack compressor.
2022-03-15 21:28:47 +01:00
chriseth
5afa2adec2
Merge pull request #12775 from ethereum/refactorDataFlowAnalyzer
...
Refactor data flow analyzer state access.
2022-03-15 15:52:40 +01:00
chriseth
28593839d9
Add helper to see if a switch has a default case.
2022-03-15 14:29:54 +01:00
chriseth
afdf22f5c7
Create a state struct.
2022-03-14 19:32:33 +01:00
chriseth
eab4ca906c
Refactor data flow analyzer state access.
2022-03-14 19:32:33 +01:00
Tyler
1c58b91075
Merge branch 'develop' of github.com:tfire/solidity into fix/remove-namespace-ast-annotations
2022-03-10 17:39:29 -05:00
chriseth
4f02be110c
Unused store eliminator.
2022-03-10 18:25:28 +01:00
chriseth
6ab31420af
Remove unneeded header files.
2022-03-10 09:55:05 +01:00
Tyler
047034544e
Merge branch 'develop' of github.com:tfire/solidity into fix/remove-namespace-ast-annotations
2022-03-09 18:55:22 -05:00
Tyler
519e1c9402
Specify namespaces
...
Fix references into solidity::util
2022-03-08 00:09:17 -05:00
wechman
52dfccca98
Replace all locale-dependent operations with locale-agnostic counterparts
2022-03-07 17:23:08 +01:00
chriseth
d118f21417
Merge pull request #12729 from ethereum/splitOutDisassemble
...
Split out disassemble to remove numeric from instruction includes.
2022-03-02 16:18:17 +01:00