242 Commits
Author SHA1 Message Date
Alex Beregszaszi 725253551e Improve FunctionSelector helpers 2022-09-27 17:58:32 +02:00
Matheus Aguiar 2282ea5e56 Added overflow checks after multiplication operation is executed. 2022-08-12 10:18:05 -03:00
MarenzandKamil Śliwak 22c7cd22b9 Fix wrong cleanup when copying from calldata to memory
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2022-08-08 13:07:16 +02:00
Matheus Aguiar 4fd5c11af7 Checks for overflow/underflow after add/sub operations. 2022-06-23 14:41:12 -03:00
Daniel Kirchner 4c84b77a4b Review suggested renaming. 2022-06-16 15:05:21 +02:00
Daniel Kirchner cdf243a9af Improved array copy routine for value type arrays from memory or calldata to storage. 2022-06-16 15:05:21 +02:00
nishant-sachdeva 276851ff91 Added support for FunctionType::Kind::StringConcat and functions string.concat 2022-02-10 22:08:47 +05:30
nishant-sachdeva cc6344c03c Changed instaces of isByteArrayOrString() to isByteArray() where it's only supposed to return a True for Bytes Type 2022-02-02 17:05:26 +05:30
nishant-sachdeva 9043621747 Changed occurences of isByteArray() to isByteArrayOrString(). The idea
is to, in a future commit, replace such occurences of
isByteArrayOrString() which are required to return True only for Bytes
type with a new isByteArray() function.
2022-02-02 14:19:58 +05:30
nishant-sachdeva dec511aad8 Corresponding code in the .cpp file has been commented instead of begin removed pending preliminary reviews
Code generators needed fixing of the cleanup process during typecasting of bytes and integers
2022-01-28 19:56:15 +05:30
Marenz 6f4709d383 Remove empty assert messages 2022-01-20 15:11:26 +01:00
Marenz a550048cf0 Fix too strict assert for calldata string -> bytes conversions 2022-01-20 15:11:26 +01:00
Daniel Kirchner 92c262d116 Merge pull request #12553 from ethereum/ir-ice-12546
Fix .push() not considering external functions
2022-01-19 13:41:20 +01:00
nishant-sachdeva a0d6c11860 Equality operator allowed for external function types 2022-01-19 15:20:31 +05:30
Marenz 89d6bff72a Fix .push() not considering external functions 2022-01-18 16:30:31 +01:00
nishant-sachdeva 9b55d4788e Added sameType check for fromType and toType in YulUtilFunctions.cpp and relevant tests in semanticTests 2021-12-15 23:50:25 +05:30
Kamil Śliwak 7f7107405f Try out the new assertion macro variants with less arguments 2021-10-04 12:05:00 +02:00
chriseth df9721f869 Merge pull request #12047 from ethereum/fixFixedBytesCompilerUtils
Properly handle fixed-byte-like types.
2021-09-29 12:23:15 +02:00
chriseth 77932edb02 Consider non-external functions not left-aligned. 2021-09-29 11:44:17 +02:00
chriseth cb052611cf Fix signextend for user defined value types. 2021-09-29 11:44:17 +02:00
chriseth da5c5928fe Properly handle fixed-byte-like types. 2021-09-29 11:41:47 +02:00
chriseth bb4e3e191d Fix array copying check. 2021-09-29 10:00:14 +02:00
hrkrshnn 54484e9795 Implemented codegen for UserDefinedValueType 2021-09-08 19:56:48 +02:00
chriseth 94c4e1e172 Simplify yul conversion function even more. 2021-08-16 22:24:06 +02:00
chriseth db85849648 Merge pull request #11737 from ethereum/fix_shift_cleanup
Yul: Fix cleanup for left shift of bytes types.
2021-08-05 12:55:42 +02:00
chriseth 6b888b531b Refactor conversion function. 2021-08-05 11:48:35 +02:00
chriseth 0112fed73b Yul: Fix cleanup for left shift of bytes types. 2021-08-05 10:54:48 +02:00
Daniel Kirchner 0a6fc89da2 Fix negation function name collision. 2021-07-08 10:47:29 +02:00
chriseth eaac16c779 Merge pull request #11590 from ethereum/disallow-non-hex-zero-and-fix-bytes32-literals-in-bytes-concat
Disallow non-hex zero literals and fix 32-byte hex literals in `bytes.concat()`
2021-06-29 16:34:26 +02:00
Kamil Śliwak 6a50d088a0 Fix ICE for 32-byte hex literals and zero literals in bytes.concat() by disallowing them 2021-06-29 14:48:42 +02:00
Kamil Śliwak fa3696878b Fix crash when passing empty strings to bytes.concat() 2021-06-29 13:52:01 +02:00
Kamil Śliwak ca0b1bf3f3 Fix crash when passing zero to bytes.concat() 2021-06-25 21:26:28 +02:00
Alex Beregszaszi 6dae6583af Turn toCompactHexWithPrefix into a template and support unsigned types
This should help with boost::multiprecision versions where explicit unsigned/enum conversion to bigint do not exists (such as boost 1.76)
2021-05-15 23:33:29 +01:00
chriseth 518629a8f6 Merge pull request #10768 from ethereum/copyLiteralToStorageSol2Yul
[Sol->Yul] Adding util function to copy literal to storage.
2021-05-06 10:44:39 +02:00
f0c5cdca9f [Sol->Yul] Adding util function to copy literal to storage.
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>

Co-authored-by: chriseth <chris@ethereum.org>
2021-05-05 11:33:03 +02:00
chriseth 72fc4d4a32 Introduce ceil division helper function. 2021-05-05 11:12:10 +02:00
3e5f5fccf9 [Sol->Yul] Adding cleanUpArrayEnd util function.
Co-authored-by: chriseth <chris@ethereum.org>

Co-authored-by: Alex Beregszaszi <alex@rtfs.hu>

Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>

Co-authored-by: Alex Beregszaszi <alex@rtfs.hu>

Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2021-05-05 08:53:34 +02:00
chriseth 62355aead3 Respect memory model for revert. 2021-05-03 18:23:41 +02:00
chriseth b06a09fd82 Fix forwarding revert. 2021-04-29 14:58:10 +02:00
Djordje MijovicandAlex Beregszaszi 52538558b1 [Sol->Yul] Implementing bytes to bytesNN for IR codegen.
Co-authored-by: Alex Beregszaszi <alex@rtfs.hu>
2021-04-23 13:30:15 +02:00
Djordje Mijovic 3a4233f3ad [Sol->Yul] Adding bounds check when increasing size of byte array. 2021-04-22 11:42:46 +02:00
Djordje Mijovic 0dd59fa0a2 [Sol->Yul] Remove index access from byte array pop function to optimize it. 2021-04-21 11:01:18 +02:00
Djordje MijovicandDaniel Kirchner 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 49fcda7048 Adding additional interface to yul function collector. 2021-03-15 20:27:16 +01:00
chriseth 5e9637bc39 Mapping access with multi-slot keys. 2021-02-24 13:44:23 +01:00
hrkrshnn 2c2c7a4473 Fix IR bug on deleting storage variables of function type.
Calling the zeroing function assumed that the stack slots needed for the type was always 1. This is
false for function types.
2021-02-24 12:43:33 +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
Djordje Mijovic 993c8c0734 [Sol->Yul] Adding unimplemented assert for fixed point types on right shift. 2021-02-09 16:17:56 +01:00
Djordje Mijovic 97e9829988 [Sol->Yul] Adding unimplemented assert for fixed point type shifting. 2021-02-08 13:13:19 +01:00
Djordje Mijovic 530435439d [Sol->Yul] Fixing string calldata to bytes calldata conversion. 2021-02-04 09:30:19 +01:00