Commit Graph

66 Commits

Author SHA1 Message Date
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
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
Marenz
f508494f52 Fix undefined order of evaluation 2022-08-29 15:33:25 +02:00
wechman
52dfccca98 Replace all locale-dependent operations with locale-agnostic counterparts 2022-03-07 17:23:08 +01:00
chriseth
9417d6775f Control flow side-effects for user-defined functions. 2021-10-14 17:46:07 +02:00
Daniel Kirchner
a683ea7646 Remove the expression callback from the code generator functions of Yul builtins. 2021-09-06 17:07:53 +02:00
hrkrshnn
7f1a2be0fe Allow basefee as Yul identifier for EVMVersion < london
This was done to prevent basefee from being a breaking change. This change will be removed in 0.9.0.

TODO revert this commit in breaking.
2021-08-11 10:46:08 +02:00
chriseth
8d5e82b406 Fix source location of builtin function calls. 2021-07-06 16:54:29 +02:00
Djordje Mijovic
e404b6e7a6 Refactoring yul source locations. 2021-05-04 16:05:23 +02:00
chriseth
cb1af8b88a Make verbatim compatible with KnownState. 2021-04-26 19:56:44 +02:00
chriseth
e2d8005737 Add verbatim builtin. 2021-04-26 19:56:44 +02:00
anurag4u80
bbcdddeed9 Replaced keys, values and reverse with ranges 2021-03-31 23:33:04 +05:30
Alex Beregszaszi
3a687c34e4 Add reservedIdentifier to dialect 2020-12-10 17:10:38 +01:00
chriseth
9a5902f9d7 Merge remote-tracking branch 'origin/develop' into breaking 2020-12-02 12:28:02 +01:00
Alex Beregszaszi
a22077f736 Rename AsmData -> AST
Also attempt to only include ASTForward where appropriate.
2020-11-25 17:58:02 +00:00
chriseth
bfd267459c Panic codes. 2020-10-22 19:25:55 +02:00
Daniel Kirchner
0dca223b45 Add another argument to setimmutable and the AssignImmutable opcode, allowing to modify code at any memory offset. 2020-10-15 18:14:41 +02:00
Daniel Kirchner
f4b42d1c72 Add stack limit evader. 2020-09-17 22:13:27 +02:00
Harikrishnan Mulackal
3cbe65e4f3 Refactor SideEffects struct 2020-08-18 14:53:59 +02:00
Alex Beregszaszi
f6a57af809 Add LiteralKind to Dialect.literalArguments
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2020-08-05 11:37:00 +01:00
Alex Beregszaszi
24bb6252ac Merge Parser::instructions() into EVMDialect 2020-07-29 13:15:54 +01:00
Djordje Mijovic
6f97e6153c [yul] Adding support for accessing subobjects via .
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2020-07-21 17:56:11 +02:00
Sachin Grover
b7adb2aa42 Add SPDX license identifier if not present already in source file
Fixes: #9220
2020-07-17 20:24:12 +05:30
Alex Beregszaszi
55e41b602a Explicitly check for jump instructions in EVMDialect 2020-07-06 14:46:24 +01:00
Daniel Kirchner
8c5fce5b31
Merge pull request #9304 from ethereum/yul-assert
Only use yulAssert and not solAssert in libyul
2020-07-03 19:00:14 +02:00
Alex Beregszaszi
4c7c7c0270 Only use yulAssert and not solAssert in libyul 2020-07-03 15:46:50 +01:00
Kamil Śliwak
356b9a7904 Restrict linkersymbol builtin to object dialect of Yul 2020-07-02 14:41:40 +02:00
Kamil Śliwak
a331d4449d Add linkersymbol() builtin to Yul EVM dialect 2020-06-24 15:06:52 +02:00
Djordje Mijovic
33e7b24df0 Adding fixes for signedness conversion warnings in libyul
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2020-06-12 10:39:30 +02:00
Mathias Baumann
debcc8c056 Add setimmutable and loadimmutable to dialect. 2020-05-04 15:00:50 +02:00
Mathias Baumann
5203503583 Allow for per-parameter literalValues builtin functions 2020-04-08 16:41:38 +02:00
Daniel Kirchner
809e3503ba Control flow analysis for inline assembly. 2020-03-09 16:23:10 +01:00
chriseth
e728cd76b6 Introduce typed named functions to dialect. 2020-02-24 15:05:19 +01:00
chriseth
4644d4616f Fix builtin function types for typed evm dialect. 2020-02-11 17:17:41 +01:00
chriseth
2bcdb24ebe Cause failing assertion for invalid u256 to bool conversion. 2020-01-29 19:01:28 +01:00
chriseth
db33ff6408 Clean up built-in instructions. 2020-01-29 19:01:28 +01:00
chriseth
fbe5bb0cce Parse default dialect and omit when printing. 2020-01-29 17:25:25 +01:00
chriseth
90c98a3289 Introduce typed EVM dialect. 2020-01-29 17:25:25 +01:00
chriseth
123ea0a250 Remove asm flavour. 2020-01-14 17:16:09 +01:00
Christian Parpart
6b23412fae C++ namespace cleanup (except tests). 2020-01-07 15:51:50 +01:00
Leonardo Alt
389da5228e Merge remote-tracking branch 'origin/develop' into merge_develop_060 2019-11-20 12:27:40 +01:00
Leonardo Alt
be849b3c47 Replace boost::variant by std::variant in libyul 2019-11-19 17:23:18 +01:00
Christian Parpart
dc2adb3d9d Assembly: Removing EVMDialect::looseAssemblyForEVM(). 2019-10-25 15:01:26 +02:00
chriseth
7d30fbdef0 Extract side effects into their own struct. 2019-08-14 15:06:10 +02:00
chriseth
2b979cba38 Also optimize memory. 2019-06-20 18:43:37 +02:00
chriseth
1f9d11c644 Knowledge about storage. 2019-06-20 18:43:37 +02:00
chriseth
a3f721bbcc
Merge pull request #6583 from ethereum/reset_yulstringrepo
Reset YulStringRepository regularly
2019-05-28 14:20:53 +02:00
Bhargava Shastry
dbae0fa939 Reset Yul string repository before each compilation. 2019-05-28 13:12:39 +02:00
chriseth
afe887adc1 Split MovableChecker and introduce SideEffectsUpToMSize. 2019-05-28 12:54:32 +02:00