Commit Graph

665 Commits

Author SHA1 Message Date
r0qs
e1f049fd24
Minor fix for OSX build 2023-09-22 14:49:18 +02:00
r0qs
701b96cfa7
Add constructor to ImmediateDominatorTest 2023-09-22 14:49:18 +02:00
r0qs
2ab40e3fb3
Move type definitions to test namespace 2023-09-22 14:49:18 +02:00
r0qs
5e68617a2e
Use smart pointers 2023-09-22 14:49:18 +02:00
Kamil Śliwak
48edc744f1
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:18 +02:00
Kamil Śliwak
88f7073857
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
9aad3688dc
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:16 +02:00
Kamil Śliwak
bb55b7cfe5
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:16 +02:00
Kamil Śliwak
83abb3b8ab
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:16 +02:00
Kamil Śliwak
d33f8f951d
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:16 +02:00
Kamil Śliwak
0bf0d1943a
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:16 +02:00
Kamil Śliwak
db5b657bd2
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:16 +02:00
Kamil Śliwak
bf938d2712
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:15 +02:00
Kamil Śliwak
d5dbab0b91
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:15 +02:00
Kamil Śliwak
edd4e1c952
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:15 +02:00
Kamil Śliwak
5170f33f53
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:15 +02:00
Kamil Śliwak
7888ff424e
fixup! Implementation of Lengauer-Tarjan algorithm to find dominators 2023-09-22 14:49:15 +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
Nikola Matic
fdc6699159 Rematerialize zero literals with default cleanup sequence
Add unused pruner step to the end of the default cleanup sequence
2023-09-04 15:40:33 +02:00
Kamil Śliwak
9adbced98e Remove parser error recovery mode 2023-08-22 12:00:11 +02:00
Daniel Kirchner
aaba5c408a Remove obsolete main function yul optimiser step. 2023-08-16 17:28:32 +02:00
Kamil Śliwak
b7d2c8bb0a SourceReferenceFormatter: Line wrapping and unused includes 2023-08-11 14:15:56 +02:00
Nikola Matic
96e7b4f46b Rematerialize zero literals 2023-08-07 17:33:16 +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
Kamil Śliwak
a07f6c443a Tests for Yul argument evaluation order after optimization 2023-07-17 16:40:43 +02:00
Kamil Śliwak
edceb4d2d1 Allow testing FullInliner without ExpressionSplitter 2023-07-17 16:40:43 +02:00
Bhargava Shastry
5d7533b540
Merge pull request #14227 from ethereum/update-codegen-fuzzer
Stack optimizer fuzzer: Detect stack-too-deep during optimization
2023-07-03 14:52:27 +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
Bhargava Shastry
87d0c84960 Stack optimizer fuzzer: Detect stack-too-deep during optimization
Co-authored-by: r0qs <deepmarolaest@gmail.com>
2023-06-27 10:32:23 +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
5e32a728fe Update test expectations 2023-06-07 12:13:39 +02:00
Kamil Śliwak
7ab730d410 Update tests that would become ineffective with minimal optimizations applied 2023-06-07 12:12:00 +02:00
Alexander Arlt
c5673278a7 Remove EWASM backend. 2023-05-11 10:56:55 -05:00
Daniel Kirchner
44da8507b1 Change default EVM version to Shanghai.
Co-authored-by: Rodrigo Q. Saramago <rodrigoqsaramago@gmail.com>
2023-05-08 16:34:23 +02:00
Rodrigo Q. Saramago
28c7fdae09
Migrate yulStackShuffling tests to isoltest 2023-04-25 15:53:01 +02:00
hrkrshnn
41ce3feb0a test: some tests for push0
1. `push0_disallowed.yul`: checks if `push0()` is a valid builtin in strict Yul
2. `push0_disallowed.sol`: checks if `push0()` is a valid builtin in inline assembly
3. `push0.sol`: simple semantic test that returns 0
4. `evmone_support.sol`: tests if push0 works properly in evmone
5. Updated some bytecode too large tests to use `shanghai` as version
6. Updated various tests where `push1 0` was hardcoded in different forms / expectations on bytecode
size (`Assembler.cpp`, `GasCosts.cpp`, `SolidityCompiler.cpp`, `SolidityExpressionCompiler.cpp`)
2023-04-12 00:10:24 +02:00
chriseth
fac5666dc9 Re-implement unused assign / unused store eliminator. 2023-03-20 13:49:37 +01:00
Daniel Kirchner
4064116df4 Do not duplicate subassemblies.
Add LinkerObject check and more tests
2023-02-20 22:20:45 +01:00
chriseth
47aa1c65ae Re-implement KnowledgeBase using groups of constantly-spaced variables. 2023-02-09 10:47:11 +01:00
Bhargava Shastry
5c6e12b2c0 Update existing and add new test cases. 2023-02-02 11:40:39 +01:00
Bhargava Shastry
f8880cad82 Yul grammar generator: Bound memory accesses. 2023-02-02 08:10:53 +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
851cc09742
Merge pull request #13516 from ethereum/fix-yul-interpreter-memory-access
Fix memory expansion semantics in the yul interpreter.
2022-12-01 15:42:41 +01:00