Commit Graph

634 Commits

Author SHA1 Message Date
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
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
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
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 Kirchner
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 Osewa
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
Daniel Kirchner
9fa907aac2 Do not remove potentially reverting returndatacopy cases. 2022-05-23 11:01:03 +02:00
Joshua Quinones
e1a59397c6 Renamed AssemblyStack to YulStack
All files, references, variables, comments, etc. were renamed to YulStack.
2022-04-08 20:28:55 +02:00
chriseth
af86a80536
Merge pull request #12796 from ethereum/refactorStackCompressor
Refactor stack compressor
2022-03-16 16:36:41 +01:00
chriseth
75abe92eb2 Refactor stack compressor. 2022-03-15 21:28:47 +01:00
Daniel Kirchner
5cd98006d4 Fill in junk in stack layouts on terminating control flow paths. 2022-03-15 18:36:55 +01:00
Daniel Kirchner
b6cd3e154c Test case for current behaviour. 2022-03-15 18:36:30 +01:00
chriseth
eab4ca906c Refactor data flow analyzer state access. 2022-03-14 19:32:33 +01:00
chriseth
4f02be110c Unused store eliminator. 2022-03-10 18:25:28 +01:00
chriseth
6ab31420af Remove unneeded header files. 2022-03-10 09:55:05 +01:00
Daniel Kirchner
ce0a3e93f2 Store whether an evmasm Assembly is creation code. 2022-03-09 17:42:29 +01:00
chriseth
b0dcd7b915 Split out disassemble to remove numeric from instruction includes. 2022-03-02 15:30:41 +01:00