Commit Graph

990 Commits

Author SHA1 Message Date
chriseth
0bb233f1c0 implement inves 2022-12-20 14:58:35 +01:00
chriseth
fff91b676d Merge branch 'new_knowledge_engine' into benchmark 2022-12-19 16:19:31 +01:00
chriseth
c85a1058f6 Pull out the variable query. 2022-12-19 15:00:24 +01:00
chriseth
11e7c5e813 Rename local variable. 2022-12-19 14:34:49 +01:00
chriseth
984258dc64 Remove outdated comments. 2022-12-19 14:34:09 +01:00
chriseth
bc127bcc6d Take non-continuing control-flow into account. 2022-12-19 14:34:08 +01:00
chriseth
90a147d371 Update documentation. 2022-12-19 14:34:08 +01:00
chriseth
c7bb117d50 Fix spelling. 2022-12-19 14:34:08 +01:00
chriseth
f3bc7157df fix 2022-12-19 14:34:08 +01:00
chriseth
ddf1d023bd fix it again 2022-12-19 14:34:08 +01:00
chriseth
d89c5638f0 more work 2022-12-19 14:34:08 +01:00
chriseth
dc584fe2f1 improved loop 2022-12-19 14:34:08 +01:00
chriseth
1013419597 returndatacopy and bugfix. 2022-12-19 14:34:08 +01:00
chriseth
b09a8c62bb unused store 2022-12-19 14:34:08 +01:00
chriseth
ddbcea047b some more work 2022-12-19 14:34:08 +01:00
chriseth
bd7676873e modify unused store 2022-12-19 14:34:08 +01: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
135f965488 Review fixes. 2022-11-30 10:21:02 +01:00
chriseth
f5f3eaacb9
Apply suggestions from code review
Co-authored-by: matheusaaguiar <95899911+matheusaaguiar@users.noreply.github.com>
2022-11-30 10:07:31 +01:00
chriseth
5c85818f50
Update libyul/optimiser/KnowledgeBase.cpp
Co-authored-by: matheusaaguiar <95899911+matheusaaguiar@users.noreply.github.com>
2022-11-30 10:06:44 +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
chriseth
53a44bd5ae Review changes. 2022-11-23 14:01:03 +01:00
chriseth
2d028e3507 Bugfix. 2022-11-23 14:01:03 +01:00
chriseth
94fad23bd0 Optimize in case this is SSA. 2022-11-23 14:01:03 +01:00
chriseth
5efe31cd7c Keep one instance of KnowledgeBase for UnusedStoreEliminator. 2022-11-23 14:01:03 +01:00
chriseth
ec8cd56c4f Re-implement KnowledgeBase using groups of constantly-spaced variables. 2022-11-23 14:01:03 +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