Daniel Kirchner
3458da9df3
Emit PUSH0 as junk in evm code transform, if available.
2023-04-17 16:26:07 +02: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
Nikola Matic
83a937423f
Update docs to reflect deprecation warning
2023-01-26 13:42:26 +01:00
Nikola Matic
e7543d487d
Issue warning when using deprecated SELFDESTRUCT
2023-01-25 16:55: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
Daniel
a9f8a77817
Merge pull request #13709 from ChrisXXXXXXX/patch-2
...
Separate node for every `if` and `case` body in the Yul CFG
2022-12-01 17:04:41 +01:00
ChrisXXXXXXX
feade14fd6
Update ControlFlowSideEffectsCollector.cpp
...
There are errors in the function void ControlFlowBuilder::operator()(If const& _if) and function void ControlFlowBuilder::operator()(Switch const& _switch) when calculating CFG.
1. In the function void ControlFlowBuilder::operator()(If const& _if), the if.condion block is not the same block as the if.then block. The original code is calculated as one same block.
2. The switch.expression block are not the same block as all the cases block in cases, the original code is calculated as one same block.
This can cause some potential problems during the optimization phase.
2022-12-01 16:06:02 +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
Daniel
eb2f874eac
Merge pull request #13733 from ethereum/eofSetting
...
Add experimental EOF options for CLI and Standard JSON.
2022-11-23 20:37:24 +01:00
Daniel Kirchner
bf26d3be5a
Add experimental EOF options for CLI and Standard JSON.
...
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2022-11-23 19:53:44 +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
5ba8c109f4
Use side-effects of user defined functions in evm code transform.
2022-11-14 21:26:36 +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
chriseth
c42d577fc0
Cache literal to number conversion.
2022-11-08 12:29:00 +01:00
Alexander Arlt
b7abcb25ae
[libevmasm] Add Assembly::OptimiserSettings::translateSettings.
2022-10-26 14:11:59 +02: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
Alex Beregszaszi
8230022e18
Remove unused include of boost/variant
2022-09-27 03:27:37 +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
Nikola Matic
1f6a299062
Add a check for unqualified move
2022-09-05 16:05:14 +02:00
Marenz
f7cc29bec1
Add std:: qualifier to move() calls
2022-08-30 11:12:15 +02:00
Marenz
f508494f52
Fix undefined order of evaluation
2022-08-29 15:33:25 +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
Kamil Śliwak
4c85cb880e
Merge pull request #13238 from ethereum/improve-stack-too-deep-message
...
Improved stack too deep message when compiled without --optimize
2022-07-06 12:43:36 +02:00
Matheus Aguiar
290bd4fd2d
Added a flag to record when a source is reconstructed from JSON so garbage code snippets are not printed after source location.
2022-07-05 11:41:24 -03:00
hrkrshnn
0b2a670a94
Improved stack too deep message when compiled without --optimize
2022-07-03 14:03:00 +02:00
chriseth
51ef6a62da
Fix removal of memory stores in inline assembly blocks.
2022-06-10 17:32:28 +02:00
Christian Parpart
4ae43884d0
Apply a better way to annotate unreachability to the C++ compiler.
2022-06-07 16:41:04 +02:00
Kamil Śliwak
539e139555
Add explicit throws after some assertions to work around a spurious warning in GCC 12.1
2022-06-01 20:37:48 +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
hrkrshnn
5ae17c8e65
Recommend via-ir
whenever a stack too deep error is encountered.
2022-05-05 19:22:03 +02:00