chriseth
60525dbf52
Merge pull request #7026 from ethereum/asmConstants
...
Support direct constants in inline assembly.
2019-07-02 14:21:24 +02:00
chriseth
817852c650
Merge pull request #7030 from ethereum/smt_move_solver
...
[SMTChecker] Move solver from SMTEncoder to BMC
2019-07-02 14:08:55 +02:00
chriseth
e542e46163
Merge pull request #7022 from ethereum/smt_create_expr
...
[SMTChecker] Always create symbolic expression
2019-07-02 14:07:24 +02:00
chriseth
cdd137e3d1
Support constant numbers in inline assembly.
2019-07-02 14:01:05 +02:00
chriseth
ca10b59b25
Merge pull request #7020 from ethereum/smt_fix_callstack_message
...
[SMTChecker] Fix wrong assertion in callstack message
2019-07-02 13:47:49 +02:00
Leonardo Alt
b0818bd002
[SMTChecker] Move solver pointer from SMTEncoder to BMC
2019-07-02 12:06:52 +02:00
Leonardo Alt
6f8fd309a2
Compile only requested sources and contracts
2019-07-01 18:52:21 +02:00
Leonardo Alt
fb3c85633b
Always create symbolic expression
2019-07-01 16:25:33 +02:00
Leonardo Alt
75663dc91e
[SMTChecker] Fix require with message
2019-07-01 16:17:06 +02:00
Leonardo Alt
6606a13ed2
[SMTChecker] Remove unsound assertion (too strong)
2019-07-01 16:16:39 +02:00
Leonardo Alt
3cb4ed83c1
[SMTChecker] Split SMTChecker into SMTEncoder and BMC
2019-07-01 15:05:03 +02:00
chriseth
3be21800ac
Merge pull request #6683 from ethereum/updateSwarm
...
Update swarm hash.
2019-06-27 13:18:29 +02:00
chriseth
53f37f487f
Merge pull request #6994 from ethereum/smt_refactor_targets
...
[SMTChecker] Delay all checks
2019-06-27 12:56:34 +02:00
chriseth
89f0e1e6da
Use updated swarm hash.
2019-06-27 12:49:06 +02:00
chriseth
aa11ad7d0a
Update swarm hash.
2019-06-27 12:48:51 +02:00
chriseth
8d18003808
Merge pull request #6716 from ethereum/wasmTranslation
...
[Yul] EVM to Wasm translation
2019-06-27 12:31:35 +02:00
Leonardo Alt
a28b84fdc3
[SMTChecker] Add a more general VerificationTarget
2019-06-27 10:31:50 +02:00
chriseth
b4a0a79398
Merge pull request #6993 from ethereum/smt_false_positives
...
[SMTChecker] Remove overflow check for assignments
2019-06-26 13:06:31 +02:00
chriseth
c6f7f5b2b0
Enable EWasm output.
2019-06-25 19:07:38 +02:00
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