Commit Graph

394 Commits

Author SHA1 Message Date
chriseth
d721bbe504 Respect memory model in forwarding revert inside catch. 2021-05-03 12:19:46 +02:00
chriseth
79acebe46f Allocate for returning runtime code. 2021-04-29 16:40:51 +02:00
chriseth
0cc0cabd30
Merge pull request #11224 from ethereum/lastAllocationUnbounded
Use unbounded allocation before returning.
2021-04-08 19:32:40 +02:00
Daniel Kirchner
96c8123b6b Use unbounded allocation before returning. 2021-04-08 18:37:24 +02:00
anurag4u80
b2ca7916aa Replaced boost::adaptors::transformed 2021-04-08 17:38:14 +05:30
anurag4u80
bbcdddeed9 Replaced keys, values and reverse with ranges 2021-03-31 23:33:04 +05:30
chriseth
d5669696d5 Code generation for errors. 2021-03-30 21:15:46 +02:00
chriseth
b04b189959 Syntax for custom errors. 2021-03-30 21:15:18 +02:00
chriseth
99fcf62736 Extract referencedDeclaration as helper. 2021-03-24 17:01:50 +01:00
Djordje Mijovic
80866d3ee4 [Sol->Yul] Implementing bytes.concat in IR codegen.
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2021-03-24 11:49:21 +01:00
Djordje Mijovic
1493326e48 Adding bytes.concat function type. 2021-03-24 11:49:21 +01:00
Mathias Baumann
e197ebbdd1 Replace TypePointer with Type const* 2021-03-23 11:47:19 +01:00
chriseth
5e94fce7df Provide selector for some internal functions. 2021-03-01 16:19:59 +01:00
chriseth
16db3a84f1 Fix call graph with respect to constants. 2021-02-25 16:00:53 +01:00
chriseth
5e9637bc39 Mapping access with multi-slot keys. 2021-02-24 13:44:23 +01:00
Alexander Arlt
ae6996efc1 Fix issue with pop on storage array. 2021-02-23 14:26:55 +01:00
chriseth
7d0ecd9406
Merge pull request #10535 from ethereum/removeNumbers
Improve generated names.
2021-02-23 13:29:18 +01:00
chriseth
d586b7b57a
Merge pull request #10991 from ethereum/bareCallNoReturndatacopy
[Sol->Yul] Fix bare call wihout returndatacopy.
2021-02-23 13:24:50 +01:00
Kamil Śliwak
781f00771c Remove IRGenerator::verifyCallGraphs and make generate() verify the graphs automatically 2021-02-23 10:47:02 +01:00
Kamil Śliwak
6c28120f19 Move CallGraph structure to a separate module 2021-02-23 10:47:02 +01:00
Mathias Baumann
4c283f00c1 Add IRGenerator::verifyCallGraphs() 2021-02-23 10:46:28 +01:00
chriseth
e9b3dd21d0 Fix bare call wihout returndatacopy. 2021-02-23 10:45:01 +01:00
Mathias Baumann
64d14b4cc4 IRNames::function(): Return correct name if the function is a constructor 2021-02-23 10:29:12 +01:00
Alexander Arlt
c44bb7e7ef Replace raw throw with BOOST_THROW_EXCEPTION. 2021-02-18 20:23:59 -05:00
chriseth
54cf56b3a5 Simplify generated names. 2021-02-16 14:20:27 +01:00
hrkrshnn
0135cae222 Fix IR bug: constructor parameter that needs multiple stack slots
When an argument had multiple stack slots, like `function() external`, there wasn't enough variables
assigned for the constructor. This lead to some mismatch between return values and arguments between
some functions.
2021-02-12 17:42:02 +01:00
hrkrshnn
7786e6d561 Fix IR bug when modifier parameter was function return variable
The bug was that function return variables were not part of the m_context.localVariable during
the modifier generation and a looking up them was throwing.
2021-02-11 14:44:55 +01:00
chriseth
1716dcfb57
Merge pull request #10950 from ethereum/removeChecks
[SolYul] Remove (hopefully) unnecessary checks.
2021-02-11 14:10:05 +01:00
chriseth
45dc705683 Remove unnecessary checks. 2021-02-11 13:08:03 +01:00
Harikrishnan Mulackal
215233d5c8
Merge pull request #10945 from ethereum/constructor-modifier-bugfix
Fix IR bug about calling the wrong modifier during construction
2021-02-10 21:42:45 +01:00
hrkrshnn
2f30fdaa21 Fix IR bug about calling the wrong modifier during construction 2021-02-10 20:53:11 +01:00
chriseth
a72ab1c9c1 Replace "runtime" by "deployed" naming. 2021-02-10 00:56:16 +01:00
Djordje Mijovic
9438706daf [Sol->Yul] Adding assertion for shift amount not being of FixedPointType. 2021-02-09 17:58:49 +01:00
Djordje Mijovic
e53feaedc4 [Sol->Yul] Check lvalue kind is stack in case of calldata. 2021-02-08 13:27:51 +01:00
Djordje Mijovic
706f5d9874 [Sol2Yul] Fixing setLValue for calldata types. 2021-02-08 12:42:10 +01:00
chriseth
e9dc9c5baf Fix merge conflict. 2021-01-26 13:53:22 +01:00
chriseth
4697beeab2
Merge pull request #10769 from ethereum/allocationCleanup
Cleanup allocation.
2021-01-26 11:58:11 +01:00
hrkrshnn
526ceec152 Implement IR shortcut for <address>.code.length 2021-01-26 11:07:04 +01:00
Alexander Arlt
061fecbc90 [whiskers] Add check that template contain tags. 2021-01-20 15:26:34 -05:00
chriseth
3cc07694ed Cleanup allocation. 2021-01-20 18:25:27 +01:00
Leonardo
9bde92ca20
Merge pull request #10807 from ethereum/fixIRReasonStrings
Properly omit require revert strings in IR code generator if requested.
2021-01-19 10:31:15 +01:00
chriseth
a3ee334b42 Omit require revert strings in IR code generator. 2021-01-18 18:47:55 +01:00
chriseth
4f3839e4ba Fix abi encode with signature shortcut. 2021-01-18 13:44:52 +01:00
Djordje Mijovic
a0c80c2bdb [Sol->Yul] Enabling copying_bytes_multiassign test via ir. 2021-01-18 12:40:51 +01:00
Alex Beregszaszi
7c7fd22062 Include revert strings in IR 2021-01-14 18:45:12 +01:00
chriseth
7d036dcb81
Merge pull request #10762 from ethereum/packedStorageOverflowSol2Yul
[Sol->Yul] Fixing uncheked increment/decrement.
2021-01-14 15:32:55 +01:00
chriseth
a65415cdad Fix accessing libraries inside modules. 2021-01-14 14:07:08 +01:00
Djordje Mijovic
dc3e76bc2c [Sol->Yul] Fixing uncheked increment/decrement. 2021-01-14 13:46:04 +01:00
chriseth
170cd5d2ae
Merge pull request #10760 from ethereum/asmConstantsFileLevel
Fix accessing constants at file level from inline assembly.
2021-01-14 11:33:47 +01:00
chriseth
8905af28c3
Merge pull request #10759 from ethereum/nestedBytesArraySol2Yul
[Sol->Yul] Fixing nested bytes array push.
2021-01-14 11:33:06 +01:00
chriseth
8ad9290086 Fix modifier lookup. 2021-01-14 11:01:14 +01:00
chriseth
30305ebbd9 Fix accessing constants at file level from inline assembly. 2021-01-14 10:51:47 +01:00
Djordje Mijovic
7c45509a77 [Sol->Yul] Fixing nested bytes array push. 2021-01-14 10:32:31 +01:00
chriseth
5c453acbe8 Fix encoding of library return values. 2021-01-11 20:37:45 +01:00
chriseth
e807c9bb63 Library call guard. 2021-01-11 20:37:44 +01:00
Djordje Mijovic
85b8325f0b [Sol->Yul] Implementing dynamic array push for arrays of structs. 2021-01-11 17:49:42 +01:00
Harikrishnan Mulackal
5241b7b761
Merge pull request #10684 from ethereum/fixIRWrappingExp
Use wrapping arithmetic for exp in unchecked blocks.
2021-01-06 18:53:54 +01:00
Djordje Mijovic
047d693ac9 Refactoring copyLiteralToMemoryFunction and reusing it from other functions.
Co-authored-by: Leonardo <leo@ethereum.org>

Co-authored-by: Alex Beregszaszi <alex@rtfs.hu>
2020-12-30 17:31:20 +01:00
Djordje Mijovic
ddb05769a5 [Sol->Yul] Implementing type name. 2020-12-30 17:19:03 +01:00
chriseth
2ab83217e3 Use wrapping arithmetic for exp in unchecked blocks. 2020-12-22 16:49:55 +01:00
chriseth
b965446182 Catch panic. 2020-12-22 11:08:44 +01:00
Djordje Mijovic
2d5a2c65a8 [Sol->Yul] Implementing getters for bytes and structs containing bytes member.
Co-authored-by: chriseth <chris@ethereum.org>
2020-12-21 14:46:06 +01:00
chriseth
35908c602b Modifiers for constructors. 2020-12-17 17:00:51 +01:00
chriseth
ccaa81fbe7 Implement function modifiers. 2020-12-17 17:00:51 +01:00
chriseth
baaf7c0db8 Implement address(...).code in the IR 2020-12-11 03:00:30 +00:00
Alex Beregszaszi
7cd05bf603 Introduce block.chainid 2020-12-10 17:07:54 +00:00
Alex Beregszaszi
ad6739d0f6 Support address().codehash 2020-12-09 14:58:27 +00:00
chriseth
806453aca9 Merge remote-tracking branch 'origin/develop' into breaking 2020-12-08 21:00:09 +01:00
chriseth
e97ca0a777 Evaluate base arguments in derived to base order. 2020-12-08 20:27:06 +01:00
chriseth
a3c5d37d02 Merge remote-tracking branch 'origin/develop' into breaking 2020-12-07 17:13:48 +01:00
Alex Beregszaszi
a8197788d0 Replace the inconsistent use of u160/Address/h160 with h160 only 2020-12-07 16:44:59 +01:00
Alex Beregszaszi
1e2bfbd6b2 Enable the -Wextra-semi warning 2020-12-04 17:21:19 +01:00
chriseth
9a5902f9d7 Merge remote-tracking branch 'origin/develop' into breaking 2020-12-02 12:28:02 +01:00
Kamil Śliwak
630fcc3a1d Define a comparator for InternalDispatchMap to ensure deterministic ordering of dispatch functions 2020-12-01 16:53:54 +01:00
chriseth
390640f557
Merge pull request #10384 from ethereum/called_directly_feature
Use annotation.calledDirectly to simplify IR codegen
2020-12-01 15:07:02 +01:00
chriseth
8279d90ba2
Merge pull request #10403 from ethereum/rename-asmdata
Rename AsmData* to AST*
2020-12-01 14:33:11 +01:00
chriseth
6de7eaba95 Merge remote-tracking branch 'origin/develop' into breaking 2020-12-01 10:50:13 +01:00
Mathias Baumann
f8e6f4a4eb Use annotation.calledDirectly to simplify IR codegen 2020-11-30 18:54:42 +01:00
Alex Beregszaszi
28e65bac46 Add unimplemented assert for modifiers in the IR
Also improved relevant tests for modifiers to be more strict and detect if the modifier body was skipped.
2020-11-27 18:34:17 +00:00
chriseth
3e5396598b
Merge pull request #10410 from ethereum/ir-fixedbytes-bitnot
Support BitNot on FixedBytes in IR
2020-11-26 14:42:52 +01:00
Alex Beregszaszi
cbae5ca324 Support BitNot on FixedBytes in IR 2020-11-26 13:20:02 +00:00
chriseth
18de8a56c9 Merge remote-tracking branch 'origin/develop' into breaking 2020-11-26 11:48:53 +01:00
Djordje Mijovic
bae32ac402 [Sol->Yul] Implementing member access to arrays in calldata structs. 2020-11-26 11:46:31 +01:00
Alex Beregszaszi
a22077f736 Rename AsmData -> AST
Also attempt to only include ASTForward where appropriate.
2020-11-25 17:58:02 +00:00
Alex Beregszaszi
8d9c332593 Properly terminate definitions using define() in IRGenerateForStatements
The lack of termination can result in unparseable output.
2020-11-25 16:41:39 +00:00
chriseth
cedb56ed81 Forward failure for creation. 2020-11-24 19:54:18 +01:00
chriseth
253889cbf1 Merge remote-tracking branch 'origin/develop' into breaking 2020-11-24 16:22:03 +01:00
chriseth
ee657f5361
Merge pull request #10214 from ethereum/fallbackReturn
Allow fallback function to return data.
2020-11-23 19:49:59 +01:00
chriseth
a0a02f2307 Merge remote-tracking branch 'origin/develop' into breaking 2020-11-23 19:28:08 +01:00
chriseth
f87edb6efc Bound functions. 2020-11-23 18:58:23 +01:00
chriseth
fda352094f Allow fallback function to return data. 2020-11-23 14:22:37 +01:00
Leonardo Alt
e4339b0526 [SMTChecker] Support named arguments in function calls 2020-11-20 11:52:26 -01:00
chriseth
f1d28b1d17 Fix string literal assignment to storage. 2020-11-19 15:27:21 +01:00
chriseth
a7db4fa4a5 Merge remote-tracking branch 'origin/develop' into breaking 2020-11-18 20:05:02 +01:00
chriseth
1508b08f3e Implement inline assembly access to constants. 2020-11-18 12:35:23 +01:00
chriseth
9f0a631948
Merge pull request #10208 from ethereum/offsetLengthCalldata
Support .offset and .length for dynamic calldata arrays
2020-11-18 12:09:11 +01:00
chriseth
2665eaa4fa Support .offset and .length for calldata bytes and string arrays. 2020-11-18 01:45:56 +01:00
Kamil Śliwak
dfa0a0cdff IR codegen: Handle address() with library type argument and external library calls 2020-11-17 20:36:39 +01:00
chriseth
e8a278eefa Merge remote-tracking branch 'origin/develop' into breaking 2020-11-17 18:51:57 +01:00
chriseth
74ce8d6979 Fix assignment to non-lvalue storage values. 2020-11-17 15:56:34 +01:00