Daniel Kirchner
c25a3eba14
Fix accessing memory reference types in yul codegen and clean up on memory reads.
2020-05-06 11:34:11 +02:00
chriseth
02c20698c9
IR generation for constants.
2020-05-05 17:07:55 +02:00
Daniel Kirchner
7ad319687d
Sol->Yul: Add cleanup to operations.
2020-05-05 13:06:01 +02:00
Djordje Mijovic
e8f6f63e77
[Sol2Yul] Adding support for builtin revert(string)
2020-05-05 07:05:39 +02:00
Djordje Mijovic
cf607aa887
[Sol->Yul] Checking if there is base contract when calling base constructror via modifier invocation.
2020-05-04 20:38:22 +02:00
chriseth
1aef9c7d20
Merge pull request #8777 from ethereum/sol_yul_simplefunctions
...
[Sol - Yul] Add some built-in functions.
2020-05-04 16:07:10 +02:00
chriseth
51ccb1519f
Yul codegen for immutables.
2020-05-04 15:00:50 +02:00
Alexander Arlt
a9f4d14010
[Sol - Yul] Add support for send(..) & transfer(..)
2020-05-01 08:32:51 -05:00
Alexander Arlt
151e637336
[Sol - Yul] Add some built-in functions.
...
- simplifications for GasLeft, Selfdestruct and BlockHash.
- add support for addmod & mulmod.
2020-04-30 14:10:09 -05:00
Djordje Mijovic
f3f729549d
[Sol->Yul] Enabling creation function call
2020-04-27 16:15:57 +02:00
Alex Beregszaszi
99aa821410
Merge pull request #8720 from ethereum/irSha256
...
IR generation for sha256.
2020-04-27 13:44:26 +01:00
Alex Beregszaszi
aa0a69b47f
IRGenerator: include assertion for FunctionType::Kind::Declaration
2020-04-27 12:03:44 +01:00
chriseth
dda883b585
IR generation for sha256.
2020-04-27 11:10:20 +02:00
Alexander Arlt
66edaf43f4
[Sol - Yul] Add support for built-in logN().
2020-04-25 11:10:28 -05:00
Alexander Arlt
2fa26f4e92
[Sol - Yul] Add support for built-in selfdestruct(..).
2020-04-24 17:03:41 -05:00
Kamil Śliwak
d3da878200
Enable internal library calls
2020-04-24 15:00:51 +02:00
Kamil Śliwak
64bce597a1
IRGenerator: Enable code generation for libraries
2020-04-24 15:00:17 +02:00
Kamil Śliwak
56a85d6cb3
IRGeneratorForStatements: Handle internal calls to functions from specific base contracts as static calls rather than calls via pointers
2020-04-24 15:00:16 +02:00
Kamil Śliwak
397ea18b78
IRVariable: Fix improperly wrapped docstring
2020-04-24 15:00:16 +02:00
chriseth
2b39f3b988
Merge pull request #8766 from ethereum/sol_yul_gasleft
...
[Sol - Yul] Add support for built-in gasleft().
2020-04-24 14:24:01 +02:00
Alexander Arlt
aafa4583df
[Sol - Yul] Add support for built-in gasleft().
2020-04-23 17:14:03 -05:00
Kamil Śliwak
e65a5a562e
IRGenerationContext::internalDispatch(): Fix code generated when the function called via pointer does not return anything
2020-04-23 21:16:41 +02:00
chriseth
16ed53ddd0
Merge pull request #8591 from mijovic/sol2YulConstructorParams
...
[Sol2Yul] Adding support for constructors with parameters (inheritance)
2020-04-23 12:56:54 +02:00
chriseth
edef6a0edd
Merge pull request #8757 from ethereum/removeMove
...
Remove unnecessary move.
2020-04-23 12:28:33 +02:00
chriseth
a371910674
Merge pull request #8642 from ethereum/interfaceid
...
Add support for interfaceId.
2020-04-23 12:24:49 +02:00
chriseth
b864fe1c43
Remove unnecessary move.
2020-04-23 12:13:26 +02:00
Djordje Mijovic
5329da93fb
[Sol2Yul] Adding support for constructors with parameters in case of inheritance
2020-04-22 14:47:08 +02:00
chriseth
4908101ad7
Yul IR generation for member access to type types.
2020-04-22 11:25:27 +02:00
chriseth
1d8e742296
Merge pull request #8684 from ethereum/yulForSelector
...
Yul codegen for `.selector`.
2020-04-20 16:32:11 +02:00
chriseth
55483445e9
Merge pull request #8663 from ethereum/ir-function-generation-queue
...
[Sol->Yul] IR function generation queue (refactor)
2020-04-20 15:17:53 +02:00
hrkrshnn
4760b8589d
Replaced all instances of lValueRequested to willBeWrittenTo
2020-04-20 12:33:30 +05:30
Kamil Śliwak
c7947c1af6
Implement lazy function generation using function generation queue
2020-04-17 13:28:07 +02:00
Kamil Śliwak
1f28f79ae6
IRGenerator::generate(): Remove duplicate call to setMostDerivedContract()
...
- The same call happens in resetContext(_contract) called immediately before
2020-04-17 13:28:07 +02:00
Alexander Arlt
3754a86ab2
Add support for interfaceID.
2020-04-16 12:17:40 -05:00
chriseth
f271dfa2e2
Yul codegen for .selector
.
2020-04-16 13:42:58 +02:00
chriseth
06adbc2c59
Implement bit operations.
2020-04-16 00:33:45 +02:00
Daniel Kirchner
0c5c93f3c2
Fix tuple assignments for empty tuples in Yul IR.
2020-04-15 11:10:52 +02:00
Christian Parpart
d00d3c45b1
[Sol2Yul] Implements codegen part for try/catch statements.
2020-04-14 18:42:37 +02:00
chriseth
823a119117
Merge pull request #8570 from aarlt/clang-tidy-apply-modernize-use-emplace
...
clang-tidy: Apply modernize-use-emplace.
2020-04-07 17:28:50 +02:00
Alexander Arlt
90bb1d8a7c
Apply modernize-use-emplace.
2020-04-02 17:35:48 -05:00
Leonardo Alt
39ff0deb05
Zero initialize memory arrays
2020-04-02 15:55:18 +02:00
chriseth
2853cba3e5
Fix call to internalDispatch.
2020-04-01 12:13:32 +02:00
Djordje Mijovic
89d5ecdd24
[Sol2Yul] Adding support for constructor with parameters
2020-03-27 01:19:11 +01:00
chriseth
173f234860
Refactor: Replace inheritance hierarchy by most derived contract.
2020-03-26 18:27:39 +01:00
Leonardo Alt
0fcb1427c9
Fix Yul codegen when dynamic array is used as rhs of assignment
2020-03-20 17:52:51 +01:00
Djordje Mijovic
96d278b101
[Sol->Yul] Adding slicing for call data arrays
2020-03-13 13:40:38 +01:00
chriseth
fa148f2483
Parsing of immutable state variable.
2020-03-12 17:11:24 +01:00
chriseth
6a896f766a
Function call options for YulIR.
2020-03-10 22:38:11 +01:00
Christian Parpart
988bd6780b
Merge pull request #8414 from ethereum/sol2yul-func-type-conversion
...
[Sol2Yul] Implements function-to-function cast.
2020-03-09 11:31:44 +01:00
Christian Parpart
d33376cce6
Merge pull request #8409 from ethereum/multiUseYulFunctionNoSharedPtr
...
Use plain members and references instead of shared pointers for MultiUseYulFunctionCollector
2020-03-09 11:18:40 +01:00
Christian Parpart
c8cbb98002
[Sol2Yul] Fixes appendExternalFunctionCall for argumentStrings.size() == 0.
2020-03-09 10:30:07 +01:00
Djordje Mijovic
092827b7ad
Adding sol->yul for f.selector and f.address
2020-03-06 21:43:14 +01:00
Daniel Kirchner
857ed12b05
Use plain members and references instead of shared pointers for MultiUseYulFunctionCollector
2020-03-04 16:16:34 +01:00
Bhargava Shastry
786c63ec3c
Use explicit type for variant constructor that is part of direct list initializer
2020-02-18 10:42:08 +05:30
Christian Parpart
c92fe69a60
Finishes external call implementation.
2020-02-14 11:59:04 +01:00
Leonardo Alt
3800391a1a
[Yul] Support conditionals
2020-02-13 17:02:15 -04:00
Daniel Kirchner
df0873d138
Implement calldata arrays for Yul IR
2020-02-12 14:00:29 +01:00
Daniel Kirchner
3c9f18b749
Use IRVariable's in IR code generation and implement tuples.
2020-02-12 12:36:14 +01:00
Leonardo Alt
36928c7a35
Add reason string for internal reverts
2020-02-10 11:57:20 -03:00
Daniel Kirchner
af9fc8b634
Mapping getters for Yul IR.
2020-02-04 17:22:03 +01:00
chriseth
fbe5bb0cce
Parse default dialect and omit when printing.
2020-01-29 17:25:25 +01:00
chriseth
6ded158739
Change expression parts to use strings instead of numbers.
2020-01-27 08:55:11 +01:00
chriseth
123ea0a250
Remove asm flavour.
2020-01-14 17:16:09 +01:00
Christian Parpart
345f9928ab
Library libdevcore renamed to libsolutil.
2020-01-07 15:51:50 +01:00
Christian Parpart
6b23412fae
C++ namespace cleanup (except tests).
2020-01-07 15:51:50 +01:00
Daniel Kirchner
7d1b0c6023
Fix Yul IR push
2019-11-28 18:11:38 +01:00
chriseth
d5e9271592
Merge pull request #7350 from ethereum/array-length-rvalue
...
Make `length` member read-only
2019-11-21 19:22:42 +01:00
Leonardo Alt
389da5228e
Merge remote-tracking branch 'origin/develop' into merge_develop_060
2019-11-20 12:27:40 +01:00
Daniel Kirchner
372df6b9e1
Implement array push and pop for yul and replace assignments in via yul tests.
2019-11-20 12:04:42 +01:00
Leonardo Alt
be849b3c47
Replace boost::variant by std::variant in libyul
2019-11-19 17:23:18 +01:00
Erik Kundt
ecaed1030f
Makes array length access read-only.
2019-11-19 16:09:21 +01:00
Daniel Kirchner
3321fc56ea
Split fallback function and introduce "fallback()" and "receive()" syntax.
2019-11-04 17:17:58 +01:00
chriseth
c30839888f
Use `leave
` in code generator.
2019-10-29 14:32:16 +01:00
chriseth
edf1e83fda
Merge remote-tracking branch 'origin/develop' into develop_060
2019-10-28 15:21:49 +01:00
Christian Parpart
df729b3084
Make use of C++17 std::optional<> instead of boost::optional<>.
2019-10-28 11:39:30 +01:00
Daniel Kirchner
4782c800ec
Initial introduction of array slices with partial implementation for dynamic calldata arrays.
2019-09-13 10:57:53 +02:00
Daniel Kirchner
42f30981db
Add unimplemented assertion to IR generation when accessing address member of external function types.
2019-08-19 14:56:04 +02:00
chriseth
74f16ef186
Refactor IRLValue so that it does not require IRGenerationContext.
2019-08-08 17:27:35 +02:00
chriseth
9955c51769
Merge pull request #7077 from ethereum/sol-yul-delete-fixed-storage
...
[Sol->Yul] Implement delete for fixed-sized storage arrays
2019-08-08 16:47:16 +02:00
Mathias Baumann
e072885031
[Sol->Yul] Implement delete for fixed-sized storage arrays
2019-08-07 18:28:52 +02:00
Christian Parpart
235638b3fc
Implements constructor code for state variables.
2019-08-05 11:23:01 +02:00
chriseth
76d7ea888b
Document differences between legacy Solidity and Solidity via Yul.
2019-07-11 17:48:06 +02:00
Mathias Baumann
d264e3e0ba
[Sol->Yul] Implement getter functions
2019-07-10 13:42:39 +02:00
Mathias Baumann
37f04976a2
[Sol->Yul] Implement keccak256
2019-07-09 18:25:07 +02:00
chriseth
15eb8fec50
Merge pull request #7015 from ethereum/sol-yul-arrays
...
[Sol->Yul] Implement uint256[] memory arrays
2019-07-09 17:34:46 +02:00
Mathias Baumann
0f24fcea17
[Sol->Yul] Implement uint256[] memory arrays
2019-07-09 15:36:02 +02:00
djudjuu
cafa01cbf6
moved SuffixHelper to StringUtils
2019-07-09 13:50:07 +02:00
Mathias Baumann
0e812b16c2
Minor indent fix
2019-06-24 14:51:04 +02:00
chriseth
9c129a4087
Merge pull request #6984 from ethereum/yul-reindent
...
yul: adds reindent() function to reindent yul source code and makes us of it in IRGenerator
2019-06-24 12:54:40 +02:00
Christian Parpart
0fd1db533e
yul: adds reindent() function to reindent yul source code and makes use of it in IRGenerator.
...
This function does count curly and round braces and reindents
accordingly the beginning of each line.
It does consider line-comments (// and ///) but not multiline comments (/* ... */).
2019-06-24 12:53:50 +02:00
chriseth
350631ae0d
Merge pull request #6940 from ethereum/sol-yul-storage-array-index
...
[Sol->Yul] Implement index access for storage arrays
2019-06-24 12:49:19 +02:00
Mathias Baumann
1dd63f416e
[Sol->Yul] Implement index access for storage arrays
2019-06-20 16:14:51 +02:00
Mathias Baumann
346c512cd7
[Sol->Yul] Implement _slot/_offset suffix for storage variables
2019-06-20 14:50:52 +02:00
Daniel Kirchner
fcd3410f26
Implement checked mod for sol->yul code generation.
2019-06-20 12:30:32 +02:00
Daniel Kirchner
a5b9f634ef
Implement signed multiplication for sol->yul code generation.
2019-06-20 12:30:30 +02:00
Daniel Kirchner
5f6af8b374
Implement signed subtraction for sol->yul code generation.
2019-06-20 12:16:56 +02:00
Daniel Kirchner
88988af561
Implement signed addition for sol->yul code generation.
2019-06-20 11:42:50 +02:00
Mathias Baumann
910cb8d329
[Sol->Yul] Implement .length for storage arrays
2019-06-19 18:09:23 +02:00
Mathias Baumann
c5b50039d2
[Sol->Yul] Report error after Ir code
...
this way less scrolling is required
2019-06-19 18:09:23 +02:00
Mathias Baumann
8ca27c2bb0
[Sol->Yul] Style fixes
...
addresses the points @chriseth mentioned in #6909
2019-06-17 15:26:40 +02:00