Daniel Kirchner
|
90b66a7362
|
Fix struct member access for memory and implement for calldata.
|
2020-06-10 20:01:30 +02:00 |
|
Djordje Mijovic
|
c6e4943089
|
Adding fixes for signedness warnings in libsolidity
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
|
2020-06-10 10:41:55 +02:00 |
|
chriseth
|
2724ce9511
|
Index access to fixed bytes and byte arrays.
|
2020-06-09 10:50:28 +02:00 |
|
chriseth
|
e7f3c042b6
|
Struct member access for storage and memory.
|
2020-06-03 10:37:39 +02:00 |
|
chriseth
|
0aa3fb5026
|
Merge pull request #9014 from ethereum/sol-yul-abidecode
[Sol - Yul] Add support for ABIDecode.
|
2020-05-27 11:44:13 +02:00 |
|
Kamil Śliwak
|
f574d8ec3a
|
Don't assume that an expression cannot be associated with a function declaration
|
2020-05-27 00:05:18 +02:00 |
|
Alexander Arlt
|
118cb13476
|
[Sol - Yul] Add support for ABIDecode.
|
2020-05-26 13:30:37 -05:00 |
|
Kamil Śliwak
|
1a2e441bc5
|
Generate internal dispatch only for functions that might actually get called via pointers
- This also adds support for internal library calls as a side-effect since they'll now be pulled into the internal dispatch automatically.
|
2020-05-26 17:01:50 +02:00 |
|
Kamil Śliwak
|
4a2ce57bed
|
Add support for bound function calls in IR generator
|
2020-05-20 21:10:20 +02:00 |
|
Kamil Śliwak
|
a68b4ab7ed
|
IRGeneratorForStatements: Slightly reorganize local variables in endVisit(MemberAccess)
- Add memberFunctionType accessible in the whole function to avoid declaring it multiple times
- Add objectCategory
|
2020-05-20 21:09:27 +02:00 |
|
Kamil Śliwak
|
87c598863f
|
IRGeneratorForStatements: Remove unnecessary code for handling internal functions with arbitrary parameters
- Internal functions cannot have arbitrary parameters
|
2020-05-20 21:08:59 +02:00 |
|
Kamil Śliwak
|
0943333276
|
Simplify endVisit() for internal calls
- Define IRHelpers::referencedFunctionDeclaration() to avoid repeating the same dynamic_casts over and over again.
|
2020-05-20 21:07:37 +02:00 |
|
Kamil Śliwak
|
7d2292fbaf
|
Rename IRGenerationContext::internalDispatch() to generateInternalDispatchFunction()
|
2020-05-20 12:46:31 +02:00 |
|
Kamil Śliwak
|
1a521cc7ac
|
Use YulArity in IR generator
|
2020-05-19 23:03:21 +02:00 |
|
Djordje Mijovic
|
d235d0c166
|
[Sol->Yul] Implementing Byte array push() and pop()
|
2020-05-19 14:47:00 +02:00 |
|
Kamil Śliwak
|
465e4d4088
|
Extract more functions for generating function and variable names into IRNames
|
2020-05-15 14:51:00 +02:00 |
|
Kamil Śliwak
|
7af7273b60
|
Move static functions for constructing names from IRGenerationContext into the new Common module
|
2020-05-14 19:48:00 +02:00 |
|
Alexander Arlt
|
91e9d54c71
|
[Sol - Yul] Add support for ripemd160 & ecrecover.
|
2020-05-14 10:44:39 -05:00 |
|
Daniel Kirchner
|
c2f5a66a79
|
Implement .creationCode for Sol->Yul.
|
2020-05-11 18:51:51 +02:00 |
|
chriseth
|
c0bf529236
|
Support bare calls.
|
2020-05-11 15:11:46 +02:00 |
|
chriseth
|
0248303c15
|
Merge pull request #8872 from ethereum/int-min-max
implemented type(X).min and type(X).max for all integer types
|
2020-05-11 15:08:19 +02:00 |
|
Harikrishnan Mulackal
|
e54c4eecfc
|
implemented type(X).min and type(X).max for all integer types
|
2020-05-11 14:51:13 +05:30 |
|
chriseth
|
a0e291bd06
|
Implement Yul IR generation for abi.encode*
|
2020-05-07 19:39:15 +02:00 |
|
chriseth
|
f38cf85482
|
Use vector of slots.
|
2020-05-07 17:54:04 +02:00 |
|
chriseth
|
f42dc70c9f
|
Merge pull request #8863 from ethereum/nonReversedEncoder
Introduce non-reversed version of tupleEncoder.
|
2020-05-07 15:47:32 +02:00 |
|
chriseth
|
e986fde0c1
|
Introduce non-reversed version of tupleEncoder.
|
2020-05-07 15:08:09 +02:00 |
|
chriseth
|
6fb112fa8e
|
Remove some unneeded headers.
|
2020-05-07 01:49:46 +02:00 |
|
Alex Beregszaszi
|
327c75bc1b
|
IR generation for shifts
|
2020-05-06 19:14:23 +02:00 |
|
chriseth
|
76275cf34a
|
Merge pull request #8824 from ethereum/solYulDirtyMemory
Fix accessing memory reference types in yul codegen and clean up on memory reads.
|
2020-05-06 16:17:19 +02:00 |
|
Daniel Kirchner
|
234ffcf278
|
Merge pull request #8718 from ethereum/irConstants
IR generation for constants.
|
2020-05-06 16:05:17 +02:00 |
|
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 |
|
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
|
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 |
|
Alexander Arlt
|
aafa4583df
|
[Sol - Yul] Add support for built-in gasleft().
|
2020-04-23 17:14:03 -05: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 |
|
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 |
|
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 |
|
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
|
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 |
|
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 |
|
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
|
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 |
|
chriseth
|
c30839888f
|
Use `leave ` in code generator.
|
2019-10-29 14:32:16 +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 |
|
Christian Parpart
|
235638b3fc
|
Implements constructor code for state variables.
|
2019-08-05 11:23:01 +02:00 |
|
Mathias Baumann
|
37f04976a2
|
[Sol->Yul] Implement keccak256
|
2019-07-09 18:25:07 +02:00 |
|
Mathias Baumann
|
0f24fcea17
|
[Sol->Yul] Implement uint256[] memory arrays
|
2019-07-09 15:36:02 +02:00 |
|
Mathias Baumann
|
0e812b16c2
|
Minor indent fix
|
2019-06-24 14:51:04 +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 |
|
Daniel Kirchner
|
2dbdddc7e5
|
Fix argument count for require with message and string literals.
|
2019-06-06 13:17:08 +02:00 |
|
chriseth
|
fbf189151d
|
[SolYul] Division.
|
2019-05-27 17:53:46 +02:00 |
|
chriseth
|
fb40063253
|
Compound assignment.
|
2019-05-23 21:32:30 +02:00 |
|
Mathias Baumann
|
981983089c
|
[Sol -> Yul] Implement delete for function pointers
|
2019-05-23 15:51:59 +02:00 |
|
Mathias Baumann
|
81702717b0
|
[Sol -> Yul] Enable function pointer comparison
|
2019-05-23 12:52:50 +02:00 |
|
chriseth
|
97fa21841d
|
Use different way to fall back to FunctionalInstruction for loose assembly.
|
2019-05-23 11:30:12 +02:00 |
|
chriseth
|
e324deabd6
|
Merge pull request #6740 from ethereum/unary-ops
[Sol -> Yul] Implement Int/Bool Unary: ++, --, ~, !
|
2019-05-20 18:06:01 +02:00 |
|
Daniel Kirchner
|
b6f4d4e9bc
|
[Sol - Yul] Implement checked multiplication.
|
2019-05-20 17:36:53 +02:00 |
|
Mathias Baumann
|
86000fdcce
|
[Sol -> Yul] Implement unary - , +
|
2019-05-20 16:14:46 +02:00 |
|
Mathias Baumann
|
7dbcb80523
|
[Sol -> Yul] Implement Int/Bool Unary: ++, --, ~, !
|
2019-05-20 11:43:12 +02:00 |
|
Mathias Baumann
|
f5980f08cc
|
Remove m_code from IRValue
Only one place to append to m_code avoids confusion and bugs
|
2019-05-14 11:15:04 +02:00 |
|
chriseth
|
a28b6224a4
|
Merge pull request #6714 from ethereum/finishERC20
Finish ERC20
|
2019-05-13 10:00:38 +02:00 |
|
chriseth
|
e047c8d4d9
|
Code generator for external function calls.
|
2019-05-09 18:55:12 +02:00 |
|
chriseth
|
60a42f58a0
|
Fix internal function calls.
|
2019-05-09 17:57:33 +02:00 |
|
chriseth
|
45ee3fc007
|
Subtraction for unsigned integers.
|
2019-05-09 17:57:30 +02:00 |
|
Daniel Kirchner
|
b83f6d8d46
|
[Sol -> Yul] Implement if statements
|
2019-05-09 14:52:20 +02:00 |
|
Mathias Baumann
|
0abe00d393
|
[Sol -> Yul] Fix ForLoops and implement WhileLoops
|
2019-05-09 09:46:19 +02:00 |
|
chriseth
|
595544645e
|
Mappings.
|
2019-05-08 15:54:52 +02:00 |
|
chriseth
|
b4d6f847b4
|
Events.
|
2019-05-08 13:29:11 +02:00 |
|
chriseth
|
acca390ef5
|
Most trivial members.
|
2019-05-07 17:19:45 +02:00 |
|
chriseth
|
b99ad2aaa3
|
Merge pull request #6639 from ethereum/yul-require-assert
Yul generation of "require" and "assert"
|
2019-05-07 16:59:37 +02:00 |
|
chriseth
|
f68c09272b
|
Simple tuple expressions.
|
2019-05-07 15:59:56 +02:00 |
|
chriseth
|
c604481cef
|
Logical operators.
|
2019-05-07 15:59:35 +02:00 |
|
chriseth
|
785b369b89
|
Add type helper function.
|
2019-05-07 12:36:54 +02:00 |
|
chriseth
|
3fa4c3da1e
|
Comparison operations.
|
2019-05-07 12:35:05 +02:00 |
|
chriseth
|
4069b19734
|
Unary operation for literals.
|
2019-05-07 12:35:04 +02:00 |
|
Mathias Baumann
|
7f14352bbf
|
Yul generation of require and assert
|
2019-05-07 12:19:41 +02:00 |
|
chriseth
|
e6f8aaafa5
|
Conversion for string literals.
|
2019-05-07 11:55:17 +02:00 |
|
chriseth
|
3365cb9b4a
|
Add type helper function.
|
2019-05-06 12:01:13 +02:00 |
|
chriseth
|
7c62193524
|
Change some AST elements to post visit.
|
2019-05-06 11:43:18 +02:00 |
|
chriseth
|
aa4d4afcdc
|
LValues and state variables of value type.
|
2019-05-02 17:03:22 +02:00 |
|
chriseth
|
e66ab6c036
|
Helper function to define the value of expressions.
|
2019-04-30 13:10:37 +02:00 |
|
chriseth
|
0eef51ffa4
|
Conversion during binary operation.
|
2019-04-30 13:10:37 +02:00 |
|
chriseth
|
597d37b731
|
Implement for loops.
|
2019-04-30 13:10:37 +02:00 |
|
chriseth
|
c1ca16cd33
|
Implement return.
|
2019-04-30 13:10:36 +02:00 |
|
Mathias Baumann
|
1ef213cc15
|
Sol -> Yul: Implement explicit cast
|
2019-04-24 22:52:17 +02:00 |
|
Mathias Baumann
|
441369d5f1
|
Sol -> Yul Generator: Mark "return" as unimplemented
|
2019-04-24 22:52:17 +02:00 |
|
Mathias Baumann
|
944ac6fb6d
|
Sol -> Yul Generation: Implicit conversions
|
2019-04-24 22:52:17 +02:00 |
|
Mathias Baumann
|
3d061c83d7
|
IR: Generate inline asm blocks
|
2019-04-18 16:49:19 +02:00 |
|
Christian Parpart
|
bf43eebea9
|
libsolidity: Introducing TypeProvider API, for clear type system ownership.
|
2019-04-16 18:26:45 +02:00 |
|
chriseth
|
565d9837e4
|
Virtual function calls.
|
2019-04-11 15:45:43 +02:00 |
|
chriseth
|
18ab8aeb85
|
Overflow-checked addition.
|
2019-04-11 15:45:14 +02:00 |
|