chriseth
fe9aa59b8f
Fix conversion during storing.
2019-06-25 13:00:02 +02:00
Leonardo Alt
48d6729164
[SMTChecker] Remove overflow check for assignments
2019-06-24 17:58:56 +02:00
chriseth
efd8d8fe5e
Merge pull request #6991 from ethereum/check_style-no-space-before-range-based-for-loop-colon
...
Adds a test to check_style.sh to check for spaces before colon (:) in range based for loops.
2019-06-24 17:42:06 +02:00
Christian Parpart
7b3aba81fb
Adds a test to check_style.sh to check for spaces before colon (:) in range based for loops.
2019-06-24 17:32:58 +02:00
chriseth
2563178a0a
Merge pull request #6990 from ethereum/sol-yul-storage-array-index
...
Enable yul for more end to end tests
2019-06-24 16:30:33 +02:00
Leonardo Alt
ed275fd760
[SMTChecker] Collect assertions in EncodingContext
2019-06-24 15:03:00 +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
chriseth
9bb7160c4c
Merge pull request #6958 from sifmelcara/fix-abiencoderv2-codegen
...
Fix incorrect abi encoding of storage array of data type that occupy multiple storage slots
2019-06-20 13:08:42 +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
e4c884ae13
Unify style of checked integer division for sol->yul code generation.
2019-06-20 12:18:18 +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
b03cb2bce6
YulUtilFuncs: Add missing/adjust existing documentation
2019-06-19 18:09:23 +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
mingchuan
ae273ff3bd
Move code that access calldata array element to separate function
2019-06-19 17:26:35 +08:00
mingchuan
492f945973
Coding style fix
2019-06-19 17:26:34 +08:00
chriseth
53f26d9719
Merge pull request #6963 from ethereum/runOptimizerOnAllDialects
...
[Yul] Run optimizer on all dialects.
2019-06-19 10:51:24 +02:00
chriseth
cc5045a56e
[Yul] Run optimizer on all dialects.
2019-06-19 10:01:16 +02:00
mingchuan
bfe074b2b1
Fix storage array abi encoding
...
Fix incorrect abi encoding of storage array of data type that occupy multiple storage slots
2019-06-19 10:46:05 +08:00
chriseth
56db792ad9
Merge pull request #6876 from rocky/recoveringParser1-StandardCompiler
...
Add parser errorRecovery (including StandardCompiler)
2019-06-18 22:40:35 +02:00
rocky
1a7e09ab7a
Add errorRecovery boolean to StandardCompiler
2019-06-18 15:54:05 -04:00
chriseth
05a67c486e
Use "what" in exception reports.
2019-06-18 17:34:10 +02:00
chriseth
6cb6fe35ef
Make Yul optimizer not fail for wasm.
2019-06-17 18:42:47 +02:00
chriseth
d7211c17e9
Merge pull request #6953 from ethereum/fix-comments-in-pr
...
[Sol->Yul] Style fixes
2019-06-17 17:29:05 +02:00
Mathias Baumann
8ca27c2bb0
[Sol->Yul] Style fixes
...
addresses the points @chriseth mentioned in #6909
2019-06-17 15:26:40 +02:00
rocky
ca3afea1d7
Add Steve Johnson-style parser recovery rules:
...
SourceUnit = Error $
Block = '{' Error '}'
ContractDefinition = '{' Error '}'
Statement = Error ';'
Co-Authored-By: chriseth <chris@ethereum.org>
2019-06-17 14:47:07 +02:00
Daniel Kirchner
4d38df6920
Set state mutability of function type members `gas
and
value
` to pure.
2019-06-13 18:27:53 +02:00
Leonardo
7a42ae2b7b
Merge pull request #6894 from ethereum/smt_catch_expr
...
[SMTChecker] Catch malformed expressions
2019-06-12 21:17:10 +02:00
Leonardo
d2019f49ea
Merge pull request #6906 from ethereum/delegatecall_value_msg
...
Improve error message for delegatecall.value
2019-06-12 21:14:54 +02:00
Daniel Kirchner
2849169bff
Merge pull request #6909 from ethereum/yul-delete-operation
...
[Sol->Yul] Make IRStorageItem work with dynamic offsets
2019-06-12 16:46:00 +02:00
Mathias Baumann
6a0976ed5e
[Sol->Yul] Refactor shift functions to be consistent
2019-06-11 17:44:36 +02:00
Mathias Baumann
89c435a167
[Sol->Yul] Make IRStorageItem work with dynamic offsets
2019-06-11 17:44:36 +02:00
Daniel Kirchner
226f8bb64d
Use imported cmake targets for boost.
2019-06-06 18:49:34 +02:00
Daniel Kirchner
2dbdddc7e5
Fix argument count for require with message and string literals.
2019-06-06 13:17:08 +02:00
Leonardo Alt
b7634faa3d
Improve error message for delegatecall.value
2019-06-06 12:55:12 +02:00
Leonardo Alt
1221eeebf1
[SMTChecker] Report malformed expressions more precisely
2019-06-06 11:54:29 +02:00
Leonardo Alt
f281c94b42
[SMTChecker] Test that non-Boolean literals are actually integers
2019-06-05 10:51:05 +02:00
Daniel Kirchner
d99c37e1ee
Merge pull request #6891 from ethereum/z3cmake
...
Build System: Try to find Z3 using CONFIG_MODE and stock cmake files before manual search.
2019-06-05 10:46:50 +02:00
Leonardo
3a3316393e
Merge pull request #6897 from ethereum/smt_check_pragma_earlier
...
[SMTChecker] Exit early if no pragma
2019-06-05 10:26:25 +02:00
Leonardo
c39ea56f93
Merge pull request #6896 from ethereum/smt_use_portfolio
...
[SMTChecker] Use SMTPortfolio directly
2019-06-05 10:26:05 +02:00
Leonardo
155af48b9d
Merge pull request #6895 from ethereum/smt_keep_assertions
...
[SMTChecker] Keep a copy of assertions that are added to the solvers
2019-06-05 10:25:45 +02:00
Leonardo Alt
4de1e20954
[SMTChecker] Exit early if no pragma
2019-06-04 17:12:15 +02:00
Leonardo Alt
91653526bb
[SMTChecker] Use SMTPortfolio directly instead of pointer to SolverInterface
2019-06-04 17:10:52 +02:00
Leonardo Alt
31ef421fff
[SMTChecker] Keep a copy of assertions that are added to the solvers
2019-06-04 17:09:04 +02:00
Daniel Kirchner
9f5340fa53
Try to find Z3 using CONFIG_MODE before manual search.
2019-06-04 15:58:03 +02:00
Leonardo Alt
d9ce9cab99
[SMTChecker] Use smtlib's implies instead of \!a or b
2019-06-04 14:23:44 +02:00
chriseth
4ee703e6e5
Revert "Add Steve Johnson-style parser recovery rules:"
...
This reverts commit 97f8ee0d1b
.
2019-05-28 18:09:24 +02:00
chriseth
f9dca1f282
Merge pull request #6681 from rocky/recoveringParser1
...
Add Steve Johnson-style parser recovery rules:
2019-05-28 15:36:45 +02:00
rocky
97f8ee0d1b
Add Steve Johnson-style parser recovery rules:
...
SourceUnit = Error $
Block = '{' Error '}'
ContractDefinition = '{' Error '}'
Statement = Error ';'
Co-Authored-By: chriseth <chris@ethereum.org>
2019-05-28 15:06:34 +02:00
chriseth
a3f721bbcc
Merge pull request #6583 from ethereum/reset_yulstringrepo
...
Reset YulStringRepository regularly
2019-05-28 14:20:53 +02:00
chriseth
2276b567b1
Merge pull request #6840 from ethereum/discoverMSize
...
Only remove msize-modifying instructions if msize is not used.
2019-05-28 13:16:55 +02:00
Bhargava Shastry
dbae0fa939
Reset Yul string repository before each compilation.
2019-05-28 13:12:39 +02:00
chriseth
df96648b1c
Do not allow msize in inline assembly if the Yul optimizer is active.
2019-05-28 12:54:33 +02:00
chriseth
c3cdae908d
Merge pull request #6767 from ethereum/constantOptimiserForYul
...
[Yul] Constant optimiser
2019-05-28 11:53:04 +02:00
chriseth
b95eebee1c
Merge pull request #6822 from ethereum/uninitializedLoadFromStorage
...
Explicitly turn uninitialized internal function pointers into invalid function when loaded from storage.
2019-05-28 11:48:56 +02:00
chriseth
1c16124a09
Constant optimiser for Yul.
2019-05-28 11:35:07 +02:00
chriseth
fbf189151d
[SolYul] Division.
2019-05-27 17:53:46 +02:00
chriseth
5b1a984882
Explicitly turn uninitialized internal function pointers into invalid function when loaded from storage.
2019-05-27 17:26:37 +02:00
chriseth
a600126703
Merge pull request #6833 from sifmelcara/fix-struct-array-mapping
...
Fix assignment of struct containing array of mappings
2019-05-27 11:14:28 +02:00
mingchuan
bf8af89bba
Fix assignment of struct containing array of mappings
2019-05-25 01:33:49 +08: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
0291abf10f
Merge pull request #6818 from ethereum/alwaysUseBuiltins
...
Provide builtin functions even in loose assembly mode.
2019-05-23 12:29:12 +02:00
chriseth
97fa21841d
Use different way to fall back to FunctionalInstruction for loose assembly.
2019-05-23 11:30:12 +02:00
chriseth
9a00729ce7
Provide dialect to Parser and InlineAssembly AST nodes.
2019-05-23 00:24:58 +02:00
chriseth
7506b5752a
Do not require payable for callvalue instruction.
2019-05-22 11:30:29 +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
chriseth
e08f521b7e
Merge pull request #6764 from ethereum/smt_fix_tuple_ice
...
[SMTChecker] Fix ICE in unsupported function calls with multi return values
2019-05-20 15:18:11 +02:00
chriseth
bbf45c4af1
Merge pull request #6758 from ethereum/smt_global_context
...
[SMTChecker] Move handling of global vars and functions
2019-05-20 15:15:54 +02:00
Mathias Baumann
7dbcb80523
[Sol -> Yul] Implement Int/Bool Unary: ++, --, ~, !
2019-05-20 11:43:12 +02:00
Leonardo Alt
60a4f03d3d
[SMTChecker] Fix ice in unsupported functions with multi return values
2019-05-16 18:23:42 +02:00
Leonardo Alt
5493a41842
[SMTChecker] Move global variables and functions to encoding context
2019-05-16 18:11:31 +02:00
chriseth
f2ae30f620
Fix handling of structs of dynamic size as constructor parameters.
2019-05-16 17:10:54 +02:00
chriseth
9d291a86cc
Merge pull request #6742 from ethereum/smt_expr_context
...
[SMTChecker] Move expression handling to EncodingContext
2019-05-16 12:47:15 +02:00
chriseth
ce19e2e4bc
Merge pull request #6599 from ethereum/ipfsHash
...
Add IPFS hash of source files to metadata.
2019-05-15 14:21:58 +02:00
chriseth
b01a8c544c
Use IPFS url in metadata for source links.
2019-05-15 12:40:03 +02:00
Daniel Kirchner
a10501bb7d
Merge pull request #6725 from AndreyBronin/develop
...
GCC 9.1 build fix. error: redundant move in return statement
2019-05-15 11:37:20 +02:00
Andrey Bronin
4eb37fe631
fix warning in GCC 9.1: redundant move in return statement
2019-05-14 17:44:28 +03:00
Leonardo Alt
4e430ba0ae
[SMTChecker] Move expression handling to EncodingContext
2019-05-14 15:56:43 +02:00
chriseth
74fbf5402d
Merge pull request #6737 from ethereum/smt_vars_context
...
[SMTChecker] Move variable handling to EncodingContext
2019-05-14 13:30:35 +02:00
chriseth
d753fcdb36
Tools to compute UnixFS IPFS hash.
2019-05-14 11:52:11 +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
Leonardo Alt
ebbe03cad6
[SMTChecker] Move variable handling to EncodingContext
2019-05-13 16:59:28 +02:00
chriseth
01dd9ba2ae
Merge pull request #6717 from ethereum/smt_namespace
...
Move SMT specific code into smt namespace
2019-05-13 12:45:34 +02:00
chriseth
37375b4271
Merge pull request #6606 from ethereum/stdin-output-wildcard
...
Fix wildcard as output selector in standard JSON
2019-05-13 10:24:13 +02:00
chriseth
8c232e8196
Merge pull request #6690 from ethereum/useConditionalWhiskers
...
Use conditional whiskers
2019-05-13 10:23:30 +02:00
chriseth
03c8e43da5
Merge pull request #6605 from ethereum/natspec-colon-fix
...
Fix Natspec parser error
2019-05-13 10:19:47 +02:00
chriseth
e5d46767f1
Merge pull request #6722 from ethereum/smt_fix_variable_usage
...
[SMTChecker] Fix VariableUsage for IndexAccess
2019-05-13 10:17:26 +02:00
chriseth
a28b6224a4
Merge pull request #6714 from ethereum/finishERC20
...
Finish ERC20
2019-05-13 10:00:38 +02:00
Leonardo Alt
fac383a233
Move SMT specific code into smt namespace
2019-05-10 20:03:11 +02:00
Erik Kundt
2b021eaa30
Allows wildcard as output selector in standard JSON.
2019-05-10 18:58:51 +02:00
chriseth
cc40e65a4b
Merge pull request #6712 from ethereum/smt_unique_ptr
...
[SMTChecker] Use unique_ptr instead of shared_ptr where applicable
2019-05-10 12:53:53 +02:00
Leonardo Alt
3ea5c112d3
[SMTChecker] Fix VariableUsage for IndexAccess
2019-05-10 11:28:10 +02:00
Erik Kundt
656364d967
Fixes Natspec parser error when whitespace is missing.
2019-05-10 10:53:32 +02:00
Leonardo
661b08e16c
Merge pull request #6718 from ethereum/smt_style
...
[SMTChecker] Style changes
2019-05-10 09:20:21 +02:00
chriseth
4de75b24c5
Merge pull request #6677 from ethereum/externalCalls
...
[SolYul] External function calls
2019-05-09 19:18:10 +02:00
Leonardo Alt
8d65fd18fc
[SMTChecker] Style changes
2019-05-09 19:15:43 +02:00
chriseth
89700dbcff
Merge pull request #6665 from ethereum/smt_inline_external_this
...
[SMTChecker] Inline external function calls to `this`
2019-05-09 19:09:08 +02:00
chriseth
e047c8d4d9
Code generator for external function calls.
2019-05-09 18:55:12 +02:00
chriseth
63a072f122
[SolYul] Partially implement constructor.
2019-05-09 17:57:33 +02:00
chriseth
021b312264
Revert with reason.
2019-05-09 17:57:33 +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
Leonardo Alt
ef32bf185f
[SMTChecker] Inline external function calls to this.
2019-05-09 16:53:30 +02:00
Leonardo Alt
c8a017ccd6
[SMTChecker] Use unique_ptr instead of shared_ptr where applicable.
2019-05-09 16:34:22 +02:00
Leonardo Alt
6027383ae5
[SMTChecker] Fix call to function at state var init
2019-05-09 16:12:44 +02:00
chriseth
c3a1c168d0
Merge pull request #6711 from ethereum/solYulIf
...
[Sol -> Yul] Implement if statements
2019-05-09 15:33:34 +02:00
chriseth
b3e51bcae1
Some more compression.
2019-05-09 15:25:21 +02:00
chriseth
d3d205b6eb
Some more compression.
2019-05-09 15:25:21 +02:00
chriseth
c6b9fa96ae
Use conditional Whiskers.
2019-05-09 15:25:21 +02:00
Daniel Kirchner
b83f6d8d46
[Sol -> Yul] Implement if statements
2019-05-09 14:52:20 +02:00
Leonardo
9e09b5d33b
Merge pull request #6679 from ethereum/smt_fix_ssa_reset
...
[SMTChecker] Fix ICE in touched vars
2019-05-09 12:17:32 +02:00
chriseth
0852ccc318
Merge pull request #4764 from ethereum/cbor-version
...
Store compiler version in CBOR metadata
2019-05-09 10:10:50 +02:00
Mathias Baumann
0abe00d393
[Sol -> Yul] Fix ForLoops and implement WhileLoops
2019-05-09 09:46:19 +02:00
Leonardo Alt
3d52a6ca68
[SMTChecker] Fix ICE in branch-inline function call-modify local variable
2019-05-09 09:15:11 +02:00
Leonardo Alt
dcd6cb94bf
Add function that retrieves first FunctionDefinition up the scope path
2019-05-09 09:15:11 +02:00
Daniel Kirchner
a6a28ac475
Allow overwriting the release flag for tests and adjust test suite to CBOR metadata.
2019-05-08 22:21:50 +02:00
Alex Beregszaszi
e121c8f3c7
Store compiler version in CBOR metadata
2019-05-08 22:21:50 +02:00
Leonardo Alt
9893cae27a
[SMTChecker] Make mergeVariables deterministic
2019-05-08 20:46:01 +02:00
chriseth
4d460915f3
Merge pull request #6655 from ethereum/storageMappings
...
[SolYul] Storage mappings
2019-05-08 20:38:46 +02:00
Leonardo
241b6b4bae
Merge pull request #6702 from ethereum/smt_fix_asgn_unsupported_type
...
[SMTChecker] Fix unsupported type assignment
2019-05-08 16:12:46 +02:00
chriseth
595544645e
Mappings.
2019-05-08 15:54:52 +02:00
Leonardo Alt
0b046897ae
[SMTChecker] Fix unsupported type assignment
2019-05-08 14:28:23 +02:00
chriseth
b4d6f847b4
Events.
2019-05-08 13:29:11 +02:00
chriseth
5fb85a6118
Merge pull request #6662 from ethereum/msgSender
...
Implement most trivial members.
2019-05-08 13:28:43 +02:00
chriseth
6c9c54a657
Merge pull request #6657 from ethereum/smt_tuple_multi_decl
...
[SMTChecker] Support tuples as multi var decl
2019-05-07 17:55:36 +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
Leonardo Alt
3c7540ceb2
[SMTChecker] Support tuples with multiple var decls
2019-05-07 16:57:27 +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
Leonardo Alt
2139c20776
[SMTChecker] Support delete
2019-05-06 18:32:10 +02:00
Leonardo
e99efec085
Merge pull request #6652 from ethereum/smt_tuple_function
...
[SMTChecker] Support tuples as function calls with multiple return values
2019-05-06 15:19:24 +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