Commit Graph

3931 Commits

Author SHA1 Message Date
chriseth
1ea66fd1f8
Merge pull request #8301 from ethereum/fixPostTypeChecker
PostTypeChecker: ConstStateVarCircularReferenceChecker on function type state variables.
2020-02-12 18:40:19 +01:00
Daniel Kirchner
45f80e9895 Move assertion in PostTypeChecker's ConstStateVarCircularReferenceChecker to account for function type variables 2020-02-12 17:42:27 +01:00
Alexander Arlt
d0eeca8014 Fix CompilerStack::loadMissingSources()
- FatalError Exception was not caught
- fixes #8102
2020-02-12 11:22:11 -05: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
Daniel Kirchner
e786650bef
Merge pull request #8274 from ethereum/structRecursionMapping
Move mapping key checks to ReferencesResolver and make errors fatal.
2020-02-12 11:19:07 +01:00
chriseth
0e100e7e7e
Merge pull request #8267 from ghallak/prune-unnecessary-funcs
[Yul] Prune functions that call each other but are otherwise unreferenced
2020-02-12 11:09:27 +01:00
Gaith Hallak
24d6702986 [Yul] Prune functions that call each other but are otherwise unreferenced 2020-02-11 20:39:32 +03:00
Mathias Baumann
80bd0f47cc Unify optimize yul code in CompilerContext/ContractCompiler 2020-02-11 13:55:47 +01:00
Mathias Baumann
1a3998648c Run yul optimizer on user code without refs 2020-02-11 13:55:47 +01:00
Daniel Kirchner
9c3151748e Move mapping key checks to ReferencesResolver and make them fatal. 2020-02-11 13:35:23 +01:00
Bhargava Shastry
79f1917422 yul proto fuzzer: Refactor dataoffset/size specification 2020-02-11 13:58:36 +05:30
chriseth
d033c2f767
Merge pull request #8178 from ethereum/internal_revert_strings
Internal reverts with reason in debug mode
2020-02-10 17:35:41 +01:00
chriseth
db2eece7fc
Merge pull request #8273 from ethereum/fix-8271
yul proto fuzzer: Support boolean literal generation
2020-02-10 17:35:09 +01:00
Bhargava Shastry
59e7206c8f yul proto fuzzer: Support boolean literal generation 2020-02-10 20:48:29 +05:30
Leonardo Alt
36928c7a35 Add reason string for internal reverts 2020-02-10 11:57:20 -03:00
a3d4
e3d6a3e44e Updated expectations. 2020-02-09 17:29:13 +01:00
chriseth
92c9b078b4 Use correct instance of EVMDialectTyped. 2020-02-06 19:46:37 +01:00
chriseth
4ae97f4563 Make dialect option lowercase. 2020-02-06 19:46:37 +01:00
chriseth
f0ebb26f29
Merge pull request #8223 from imapp-pl/yul-phaser-program-reuse
[yul-phaser] Program reuse
2020-02-06 13:29:44 +01:00
Daniel Kirchner
e07274a96f Disallow libraries as mapping keys. 2020-02-06 09:09:43 +01:00
cameel
e4c7b73897 [yul-phaser] Store already loaded program in Population and make copies when computing fitness
- Until now the source code was being parsed during every fitness computation. Now the parsed program is reused and only the optimisation steps are applied each time.
2020-02-06 09:01:10 +01:00
cameel
57fb64d467 [yul-phaser] Make Program copyable by doing a deep copy of the AST in the copy constructor 2020-02-06 09:01:10 +01:00
cameel
33cf4e4769 [yul-phaser] Tests for Population class 2020-02-05 18:13:30 +01:00
cameel
ccaff1b08e [yul-phaser] Tests for random number generators 2020-02-05 18:13:30 +01:00
cameel
24d63a93cf [yul-phaser] Tests for Program class 2020-02-05 18:13:30 +01:00
cameel
bee62cdd9e [yul-phaser] Tests for Chromosome class 2020-02-05 18:13:30 +01:00
cameel
f8e397b487 [yul-phaser] Create test suite for Chromosome 2020-02-05 18:13:30 +01:00
chriseth
5de3379d82
Merge pull request #8238 from ethereum/yul-syntax-tests
Implement yul syntax tests
2020-02-05 15:15:41 +01:00
Mathias Baumann
fc10e701fc Implement yul syntax tests 2020-02-05 14:58:34 +01:00
Mathias Baumann
ef07fc3066 Fix formatting 2020-02-05 13:22:15 +01:00
chriseth
0b9c842656 Fix abstract without contract. 2020-02-05 12:14:14 +01:00
chriseth
527c011c2e Update tests. 2020-02-04 22:51:33 +01:00
chriseth
48933df18d Add some missing wasm functions. 2020-02-04 22:44:08 +01:00
chriseth
a7624ffc45 Implement i32 builtins for the interpreter. 2020-02-04 22:44:08 +01:00
chriseth
7cca036f4c
Merge pull request #8224 from a3d4/refactor-sourcelocation
Replaced SourceLocation::isEmpty() with isValid() and hasText().
2020-02-04 22:23:51 +01:00
alex
3416c029cf Relaxed assert in AsmJsonImporter::createAsmNode. 2020-02-04 20:37:51 +01:00
chriseth
cafad3770d Update tests. 2020-02-04 18:27:01 +01:00
chriseth
9f0cef97c2 Specify default type for word size transform externally. 2020-02-04 18:13:37 +01:00
Daniel Kirchner
d882b6fa83 Allow tests to be marked ABIEncoderV1Only. 2020-02-04 17:22:03 +01:00
Daniel Kirchner
af9fc8b634 Mapping getters for Yul IR. 2020-02-04 17:22:03 +01:00
Daniel Kirchner
d3cbfb0c5c Allow user-defined types as mapping keys in parser and restrict to contracts during type checking. 2020-02-04 17:22:03 +01:00
alex
211227f50b Modified SourceLocation::hasText() to allow empty source. 2020-02-04 04:19:28 +01:00
cameel
5fbc4d4afa [yulopti] Automate printing of the usage banner
- This now displays internal step names rather than human-readable ones but the internal ones are readable enough and it's not something worth creating another map.
- Options in the banner are now aligned in columns and thus easier to read.
2020-02-03 12:22:47 +01:00
cameel
4129c27495 [yulopti] Replace hard-coded step list with OptimiserSuite's maps 2020-02-03 12:22:47 +01:00
alex
e4b18e85e6 Replaced SourceLocation::isEmpty() with isValid() and hasText().
The function SourceLocation::isEmpty() had somewhat dual role.
Sometimes it indicates that the SourceLocation is invalid.
Sometimes it means that there is no corresponding source text.

Hence the proposal is to replace it with two functions, isValid() and hasText().

I also removed Scanner::sourceAt(). (Do we have a rule of thumb to remove unused code?)

Since hasText() checks that start and end are valid indices for source, I adjusted a couple of tests to avoid empty source strings.
2020-02-03 08:04:21 +01:00
chriseth
2098dbade9
Merge pull request #7834 from ethereum/docstring-ast-node
[natspec] Introduce AST node for structured documentation
2020-01-30 19:04:52 +01:00
Erik Kundt
4a179056ed Adds JSON import / export for structured documentation. 2020-01-30 18:26:01 +01:00
Erik Kundt
ec27c2e507 Introduce AST node for structured documentation. 2020-01-30 18:25:56 +01:00
chriseth
2afcfec77b
Merge pull request #8220 from ethereum/remove-var-name-cleaner-from-optimiser-suite-step-list
Remove var name cleaner from optimiser suite step list
2020-01-30 17:58:43 +01:00
cameel
ed5210490d [yulopti] Run disambiguator after VarNameCleaner
- This is a trivial change and it makes it safe to use in combination with other step.
2020-01-30 17:35:27 +01:00
chriseth
d41e1db74a Adjust and add commandline tests for yul. 2020-01-29 19:10:53 +01:00
chriseth
d3b53ee394 Make bool type optional for bool literals. 2020-01-29 19:01:28 +01:00
chriseth
a66782537a Use old yul dialect only in tests. 2020-01-29 19:01:28 +01:00
chriseth
d07dd55096 Update wasm tests. 2020-01-29 17:25:25 +01:00
chriseth
23667ce12d Update Yul optimizer tests. 2020-01-29 17:25:25 +01:00
chriseth
e7b95de315 Tests for default type parsing. 2020-01-29 17:25:25 +01:00
chriseth
fbe5bb0cce Parse default dialect and omit when printing. 2020-01-29 17:25:25 +01:00
chriseth
e41155cf48
Merge pull request #8062 from imapp-pl/polyfill-part-2
Arithmetic functions implementation for EVM->EWasm translator.
2020-01-29 17:22:27 +01:00
chriseth
457cdecf6f
Merge pull request #8135 from ethereum/fix-get-options-7112
TestFramework: Merge Options.h into Common.h
2020-01-29 16:05:55 +01:00
Mathias L. Baumann
5130a2b0ae
Merge pull request #8063 from ethereum/yulvisit-7656
Use yul::AstWalker for assembly reference resolving
2020-01-29 14:56:19 +01:00
Mathias Baumann
00e4d13975 TestFramework: Merge Options.h into Common.h 2020-01-29 12:27:05 +01:00
chriseth
a788ba14f3
Merge pull request #8173 from ethereum/fix-7859
yul proto fuzzer: Add EVM version field
2020-01-28 22:14:25 +01:00
chriseth
35820398c2
Merge pull request #8179 from pinkiebell/codegen
libsolidity/codegen: Use calldatacopy to cheaply zero memory..
2020-01-28 18:07:30 +01:00
Mathias Baumann
b8e2baf5f4 Use yul::AstWalker to resolve assembly symbols 2020-01-28 17:57:48 +01:00
Mathias Baumann
2f1f8e25c1 TestFramework: Remove headers from Options.h 2020-01-28 17:29:22 +01:00
rodiazet
f1004e712c [WASM] Add div, sdiv, mod, smod, exp, lt, sar, addmod, mulmod, signextend 2020-01-28 13:32:43 +01:00
Mathias Baumann
1027f6f78f Extract some semantic tests 2020-01-28 11:59:44 +01:00
Bhargava Shastry
8cbe1d4b1d yul proto fuzzer: Make function call generation optional 2020-01-24 12:31:43 +05:30
Bhargava Shastry
a335fed189 yul proto fuzzer: Add EVM version field 2020-01-24 12:31:20 +05:30
chriseth
790c6d2cae Tests for salted create. 2020-01-23 21:20:01 +01:00
chriseth
2fa586beac Test that uses function call options on overloaded function. 2020-01-23 21:20:01 +01:00
Mathias Baumann
a3f23d3158 Implement new with CREATE2 and function call options. 2020-01-23 21:20:01 +01:00
chriseth
679f729f2f Implement create2 for evmhost. 2020-01-23 21:20:01 +01:00
pinkiebell
bb6fb675e0 libsolidity/codegen: Use calldatacopy to cheaply zero memory instead of
codecopy.

Motiviation:
  Zero'ing memory is commonplace in contracts, but with the upcoming
  Layer-2 EVM translation layers and other on-chain verification
  mechanisms, using `codecopy` becomes a `costly` operation in those
  sandboxes. Using `calldatacopy` achieves the same thing, gas costs
  are also the same as codecopy, and is significantly cheaper in the `sandbox` situation.
2020-01-22 17:56:56 +01:00
Jason Cobb
595f569e97
Update tests for interface inheritance 2020-01-22 09:40:40 -05:00
Jason Cobb
573a054d5d
Prohibit interfaces inheriting from non-interfaces 2020-01-22 09:40:40 -05:00
chriseth
1b19524036
Merge pull request #8150 from ethereum/isoltest-alignment-output
[isoltest] Proper output of alignment in obtained test results
2020-01-20 12:38:12 +01:00
Bhargava Shastry
9befb4bdf0 yul proto fuzzer: Do not generate infinite for loops and limit total
number of for loops per test program to two
2020-01-20 16:27:01 +05:30
chriseth
470c19eb8c
Merge pull request #8165 from imapp-pl/yulopti-missing-step
yulopti: Add missing ConditionalUnsimplifier step
2020-01-20 11:45:29 +01:00
Alex Beregszaszi
004f01a388 Add test case for gas metering of exp(n, 0) 2020-01-17 14:24:55 +01:00
cameel
bf5e62931d fixup! [yulopti] Fix typo: (f)flatten -> (f)latten 2020-01-17 12:38:45 +01:00
cameel
49ca1f8534 [yulopti] Add missing ConditionalUnsimplifier to the list of available optimizations 2020-01-17 08:01:39 +01:00
cameel
4262eebdc4 [yulopti] Fix typo: (f)flatten -> (f)latten 2020-01-17 08:01:31 +01:00
Daniel Kirchner
ee5ff4df4e Clean up visibility via contract name and fix ICE on calling unimplemented base function. 2020-01-16 19:13:04 +01:00
Alex Beregszaszi
4d8758fcc3 Remove operator~ from FixedHash 2020-01-16 17:18:03 +00:00
Alex Beregszaszi
3c88d295b3 Remove FixedHash(unsigned) constructor 2020-01-16 16:18:08 +00:00
Erik Kundt
ae67cbde7d Fixes missing alignment output in isoltest. 2020-01-15 18:18:16 +01:00
chriseth
c017072bac
Merge pull request #8013 from ethereum/warnings
Enable more warnings in the build system
2020-01-15 18:00:14 +01:00
chriseth
5fb8e76931
Merge pull request #8136 from imapp-pl/polyfill-mstore8
mstore8 polyfill
2020-01-15 17:02:40 +01:00
Alex Beregszaszi
eafcb42be7 Enable more compiler warnings in the build system
"-pedantic -Wno-unknown-pragmas -Wimplicit-fallthrough"
2020-01-15 14:33:27 +00:00
chriseth
6ab8802601
Merge pull request #8132 from ethereum/drop-lll
Remove the LLL compiler
2020-01-15 15:15:22 +01:00
Alex Beregszaszi
9c19b93c37 Remove LLL specific features from libevmasm 2020-01-15 13:27:51 +00:00
chriseth
ed87b08911
Merge pull request #8066 from ethereum/removeAsmFlavour
Remove asm flavour
2020-01-15 14:21:54 +01:00
Alex Beregszaszi
1ee4b9dc3b Remove the LLL compiler 2020-01-15 13:18:18 +00:00
rodiazet
3760e90582 [WASM] mstore8 function implementation added. 2020-01-15 14:06:43 +01:00
chriseth
9d9a7ebe25
Merge pull request #7765 from ethereum/fix-7626
yul proto fuzzer: permit variable declarations inside for-init block
2020-01-15 11:21:23 +01:00
chriseth
0149220e0d
Merge pull request #8140 from nventuro/patch-1
Fix error message suggestion for receive
2020-01-14 23:36:09 +01:00
Nicolás Venturo
9649c92e12 Fix error message suggestion for receive 2020-01-14 23:24:27 +01:00
Mathias Baumann
21611f6b6f Add test for incorrect evm version when importing an ast tree 2020-01-14 18:42:43 +01:00
chriseth
b3fe84a6ea
Merge pull request #7153 from djudjuu/newImportAST
import ast from JSON
2020-01-14 17:56:53 +01:00
chriseth
0f014144c8 Test for true/false in inline assembly. 2020-01-14 17:16:09 +01:00
chriseth
123ea0a250 Remove asm flavour. 2020-01-14 17:16:09 +01:00
djudjuu
e8556fa1b2 Ast-Import from standard-json 2020-01-14 17:15:53 +01:00
Mathias Baumann
adc4774d4a ASTJSON: Export evm version 2020-01-14 12:51:21 +01:00
Christian Parpart
abb9f1eed7 CMake: Renaming devcore static library to solutil (to match source code paths) 2020-01-13 15:52:46 +01:00
Bhargava Shastry
49a05b5935 Permit variable declarations inside for init block 2020-01-13 16:17:33 +05:30
chriseth
a4e34b378a
Merge pull request #8105 from ethereum/functionTypeRefactor
Add a new Function Type referring to FunctionDefinition's without calling context and use it to allow selector lookup.
2020-01-09 17:15:46 +01:00
Daniel Kirchner
9535c0f520 Introduce FunctionKind::Declaration and allow accessing function signatures via contract name. 2020-01-09 15:40:41 +01:00
Daniel Kirchner
b845595cbd Ignore empty options to (i)soltest 2020-01-09 14:49:11 +01:00
chriseth
5ca3abd7cb
Merge pull request #8106 from random-internet-cat/move-contract-kind
Move ContractKind from ContractDefinition to file-scope
2020-01-08 13:06:26 +01:00
chriseth
e81e73345e
Merge pull request #8112 from ethereum/fixIndent
[tiny PR] Fix indentation in test/tools/CMakeLists.txt
2020-01-08 11:44:06 +01:00
Daniel Kirchner
61652366ab Fix indentation 2020-01-08 10:42:19 +01:00
chriseth
b5bd4787af
Merge pull request #7801 from ethereum/tuneRemat
Tune rematerializer
2020-01-08 10:41:32 +01:00
rodiazet
b8c59c56e0 [WASM] Add keccak256, balance, extcodecopy, blockhash, coinbase, log's, call, callcode, delegatecall, staticcall 2020-01-08 10:08:36 +01:00
chriseth
40c0602b5c Do not rematerialize in loops. 2020-01-08 09:56:08 +01:00
chriseth
25d3f27c11 Tune Rematerializer 2020-01-08 09:56:08 +01:00
chriseth
d1a7ff0fbc
Merge pull request #8008 from ethereum/large-code
Issue warning if codesize exceeds EIP-170 limits
2020-01-08 09:48:59 +01:00
Daniel Kirchner
70a2902714
Merge pull request #8100 from ethereum/deadTestArguments
Disallow dead positional arguments for (i)soltest
2020-01-07 16:56:10 +01:00
Daniel Kirchner
be0775da49
Merge pull request #8075 from ethereum/refactor-namespaces
Refactor namespaces
2020-01-07 16:52:20 +01:00
Mathias L. Baumann
a2141d3be2
Merge pull request #7869 from fulldecent/fix-kill
Reduce usage of word kill
2020-01-07 16:01:04 +01:00
Christian Parpart
345f9928ab Library libdevcore renamed to libsolutil. 2020-01-07 15:51:50 +01:00
Christian Parpart
8ac6258d31 lll: Adapted to namespace changes. 2020-01-07 15:51:50 +01:00
Christian Parpart
ed45b000d1 Adapt tests directory to C++ namespace changes. 2020-01-07 15:51:50 +01:00
Christian Parpart
6b23412fae C++ namespace cleanup (except tests). 2020-01-07 15:51:50 +01:00
Jason Cobb
529405deb6
Move ContractKind from ContractDefinition to file-scope 2020-01-07 09:11:29 -05:00
William Entriken
6d068b6331 Reduce usage of the word "kill" 2020-01-07 11:18:10 +01:00
Bhargava Shastry
49aec64caf abiv2 proto converter: Do not resize dynamic storage arrays by writing to the length field as it is now read only 2020-01-06 17:44:42 +01:00
Daniel Kirchner
3e714913a0 Disallow positional arguments for (i)soltest instead of ignoring 2020-01-06 15:28:20 +01:00
Leonardo Alt
d972a10b4f Review 1 2020-01-02 12:43:56 +01:00
chriseth
3994c9135f Tests. 2019-12-29 15:53:47 +01:00
Alex Beregszaszi
4d791b2679 Issue warning if codesize exceeds EIP-170 limits 2019-12-25 19:51:35 +01:00
Alex Beregszaszi
9c27e98b83 Rename EWasmBuiltinInterpreter to EwasmBuiltinInterpreter 2019-12-19 11:36:08 +00:00
Alex Beregszaszi
65e59ecd06 Rename EWasm/ewasm/eWasm to Ewasm 2019-12-19 11:36:08 +00:00
Alex Beregszaszi
8511012e95
Merge pull request #8060 from ethereum/yul-interp-fix
Fix getExternalCodeSize in the Yul Ewasm interpreter
2019-12-18 23:14:48 +00:00
Alex Beregszaszi
4cebe66f8c
Merge pull request #8059 from ethereum/dialectForOpt
Dialect setting for yul optimizer tests.
2019-12-18 22:56:35 +00:00
Alex Beregszaszi
47a8e5fbd1 Fix getExternalCodeSize in the Yul Ewasm interpreter 2019-12-18 22:54:34 +00:00
chriseth
1e59c19166 Dialect setting for yul optimizer tests. 2019-12-18 21:54:30 +01:00
rodiazet
d867f5339b [WASM] add i64.clz and i64.store8 to Wasm dialect and EWasm interpreter.
dsads
2019-12-18 19:51:27 +01:00
Alex Beregszaszi
7effc94f24 Rename EVMToEWasmTranslator to EVMToEwasmTranslator 2019-12-18 16:57:45 +00:00
Alex Beregszaszi
7d3ccee921 Fix implementation of getCodeSize in Ewasm 2019-12-18 14:58:28 +00:00
Alex Beregszaszi
b3caf35e88 Change writeU256/writeU128/writeAddress not to return anything in Yul Ewasm interpreter 2019-12-18 14:58:28 +00:00
Alex Beregszaszi
9f1e8086bb Fix returning code size in Yul Ewasm interpreter 2019-12-18 14:58:28 +00:00
chriseth
b74f357c5e
Merge pull request #8051 from ethereum/yul-interp-log
Fix tracing LOG instruction in the Yul Ewasm interpreter
2019-12-18 15:08:06 +01:00
Alex Beregszaszi
7d60cc1729 Fix tracing LOG instruction in the Yul Ewasm interpreter 2019-12-18 13:35:05 +00:00
rodiazet
7d8c4c24ee Add arithmetic test cases for most of EVM->Ewasm translator 2019-12-18 13:58:03 +01:00
chriseth
4b026fa633 Update gas costs. 2019-12-18 01:41:32 +01:00
chriseth
b6fc703a27 Merge remote-tracking branch 'origin/release' into HEAD 2019-12-17 19:47:59 +01:00
chriseth
85a503725c
Merge pull request #8015 from ethereum/yul-trace-unreachable
Add trace for unreachable in Yul Ewasm translation tests
2019-12-17 17:42:44 +01:00
chriseth
244b011a30 More test cases. 2019-12-17 17:08:27 +01:00