r0qs
3c1f4525a4
Apply suggestions
2023-09-22 14:49:18 +02:00
Kamil Śliwak
b7ec9d3fdd
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators
2023-09-22 14:49:17 +02:00
Kamil Śliwak
e4bac1340d
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators
2023-09-22 14:49:17 +02:00
Kamil Śliwak
f804e8bc00
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators
2023-09-22 14:49:17 +02:00
Kamil Śliwak
1e2069bdfc
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators
2023-09-22 14:49:17 +02:00
Kamil Śliwak
37af76405a
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators
2023-09-22 14:49:17 +02:00
Kamil Śliwak
a9a09bea6d
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators
2023-09-22 14:49:17 +02:00
Kamil Śliwak
56cabdc69a
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators
2023-09-22 14:49:17 +02:00
Kamil Śliwak
ffb53ad8a6
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators
2023-09-22 14:49:16 +02:00
Kamil Śliwak
66b95967e6
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators
2023-09-22 14:49:15 +02:00
r0qs
83583f3448
Implementation of Lengauer-Tarjan algorithm to find dominators
2023-09-22 14:49:15 +02:00
Matheus Aguiar
14aed39261
Introduce experimental analysis basic infrastructure
2023-09-11 12:29:44 -03:00
Jun Zhang
eff410eb74
Purge using namespace std in libyul
...
Signed-off-by: Jun Zhang <jun@junz.org>
2023-08-29 11:51:59 +02:00
Jun Zhang
c2362c3362
Purge using namespace std from libyul/optimiser
...
Signed-off-by: Jun Zhang <jun@junz.org>
2023-08-28 21:14:56 +08:00
Jun Zhang
1ebdab43d8
Purge using namespace std from libyul/backends
...
Signed-off-by: Jun Zhang <jun@junz.org>
2023-08-24 11:12:52 +08:00
Alejandro Criado-Pérez
9f237d38a6
Corrected text
2023-08-16 20:34:13 +02:00
Daniel Kirchner
aaba5c408a
Remove obsolete main function yul optimiser step.
2023-08-16 17:28:32 +02:00
Nikola Matic
96e7b4f46b
Rematerialize zero literals
2023-08-07 17:33:16 +02:00
Kamil Śliwak
735326d50d
Properly document FullInliner's prerequisites
2023-07-17 16:40:43 +02:00
Kamil Śliwak
ba3f9dd2a2
FullInliner: Do not include calls whose arguments may have side-effects
2023-07-17 16:40:43 +02:00
Kamil Śliwak
5e1e0e7752
FullInliner: Fix order of arguments of inlined functions
2023-07-17 16:40:43 +02:00
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
374a6fd50e
Merge pull request #14311 from ethereum/StackToMemoryDeterminism
...
Deterministically choose memory slots for variables during stack-to-memory.
2023-06-14 17:31:32 +02:00
Daniel Kirchner
aa01223398
Account for unassigned return variables in stack layout generation.
2023-06-14 11:43:46 +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
51cd87c94d
YulStack: Don't enable stack optimizations in unoptimized mode when msize is present
2023-06-07 12:13:39 +02:00
Kamil Śliwak
25be38905f
YulStack: When Yul optimization is not requested, run Yul optimizer with a minimal sequence instead of disabling it
2023-06-07 12:13:38 +02:00
Kamil Śliwak
dff774d82f
Overload MSizeFinder::containsMSize() for Yul objects
2023-06-07 12:12:00 +02:00
GiokaMarkella
28a1abf89a
Yul AST output on the CLI and in Standard JSON
2023-05-26 12:35:31 +02:00
Alexander Arlt
c5673278a7
Remove EWASM backend.
2023-05-11 10:56:55 -05:00
Vectorized
050927b026
Optimize multiplicity map
2023-05-08 14:01:47 +02:00
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