Commit Graph
645 Commits
Author SHA1 Message Date
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 Shastryandr0qs 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 KirchnerandRodrigo Q. Saramago 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
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
Daniel KirchnerandKamil Śliwak 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
Bhargava Shastry 2c27405cbb Fix zero size memory expansion semantics in the yul interpreter. 2022-11-21 11:53:42 +01:00
chriseth 5ba8c109f4 Use side-effects of user defined functions in evm code transform. 2022-11-14 21:26:36 +01:00
nishant-sachdeva efbd3666a7 added optimization. shl comes out from being distributed over and 2022-11-11 01:16:14 +05:30
chriseth cffacac9de Hash number literals according to their value instead of their string representation. 2022-11-08 20:34:10 +01:00
Daniel bbaf8a4eb4 Merge pull request #13283 from ethereum/yulDebugger
Yul Debugger
2022-11-01 14:04:56 +01:00
Alex Beregszaszi 565423c934 Replace use of boost::adapters::filtered with ranges::views::filter 2022-09-27 03:14:17 +02:00
nishant-sachdeva c8011d8719 Cleaning up helpers around errors 2022-09-19 10:51:14 +05:30
Marenz d10d967008 yulRun: Fix unexpected return value for call* instructions and add tests 2022-09-14 11:40:08 +02:00
Marenz 4b69b5fdc1 YulRunner: Add support for external calls to the same contract 2022-09-14 11:40:02 +02:00
Daniel Kirchner 1730e43bf7 Merge pull request #13514 from ethereum/yul-interpreter-create2
Fix create2 memory access in yul interpreter.
2022-09-14 11:19:11 +02:00
Nikola Matic f6f0d6a360 Make hardcoded parts of the optimizer sequence configurable 2022-09-12 10:57:36 +02:00
Bhargava Shastry 69d9869d21 Fix create2 memory access in yul interpreter. 2022-09-12 09:53:31 +02:00
Daniel KirchnerandKamil Śliwak a33da17300 Bugfix and tests.
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2022-09-08 11:54:14 +02:00
Daniel Kirchner d5e2925326 broken yul optimizer test 2022-09-07 16:49:58 +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
Daniel Lupu 8c5f5c7db0 add rules for mod(mul(X, Y), A) & mod(add(X, Y), A) 2022-06-22 09:26:09 +02:00
Samuel OsewaandKamil Śliwak c21265f9f8 Changed error message for for Unicode character in non-unicode string literal
Co-authored-by: Kamil Śliwak <cameel2@gmail.com>
2022-06-15 16:12:24 +05:30
Kamil Śliwak f08d349791 Separate some inlining tests into pre- and post-homestead 2022-05-23 13:37:50 +02:00