Commit Graph

4017 Commits

Author SHA1 Message Date
Daniel Kirchner
b10f12a395
Merge pull request #8413 from mijovic/depratateValueCalls
Deprecated warning for .value() and .gas() on function and constructr…
2020-03-04 14:43:06 +01:00
Daniel Kirchner
919888ddbc Use yul function for calldata tail access, fix checks and add additional revert reason. 2020-03-04 14:39:36 +01:00
Christian Parpart
a3bc752e53
Merge pull request #8415 from ethereum/tests-ExecutionFramework-reset
[test] Fixes ExecutionFramework providing different contract addresse…
2020-03-04 14:17:11 +01:00
Djordje Mijovic
58c6b90705 Deprecated warning for .value() and .gas() on function and constructror calls 2020-03-04 12:51:49 +01:00
Christian Parpart
495abee769 [test] Fixes ExecutionFramework providing different contract addresses when running test cases for both, old and new yul codegen. 2020-03-03 16:36:12 +01:00
Leonardo
32ca1a5e26
Merge pull request #8311 from ethereum/smt_split_2
[SMTChecker] Change CHC encoding from explicit CFG to function forests
2020-03-03 13:16:14 +01:00
Leonardo Alt
3bee348525 Change CHC encoding to functions forest instead of explicit CFG 2020-03-03 12:12:26 +01:00
Leonardo Alt
96a230af50 [SMTChecker] Fix ICEs with tuples 2020-03-03 11:35:58 +01:00
chriseth
f10c6500b2 Immutable is not reserved anymore. 2020-03-02 14:20:17 +01:00
Bhargava Shastry
ed02aae1d9 Update solidity fuzzing dictionary with >0.6.0 keywords 2020-02-28 15:46:21 +01:00
Erik Kundt
d1b6a4a649 Fixes raw bytes warning in semantic test framework. 2020-02-26 21:37:52 +01:00
chriseth
426c4a2e38
Merge pull request #8327 from imapp-pl/yul-phaser-random-algorithm
[yul-phaser] Random algorithm
2020-02-26 14:44:24 +01:00
Leonardo
6930e0c2e0
Merge pull request #8384 from ethereum/fixRePrintingValue
Fix re-printing value expectations.
2020-02-26 09:57:30 +01:00
chriseth
bb09787bd0
Merge pull request #8378 from mijovic/yulSourceLocations
Adding source location support to AssemblyStack
2020-02-25 22:34:57 +01:00
Djordje Mijovic
ec083c4878 Adding source location support to AssemblyStack and thus debugging Yul sources 2020-02-25 22:19:03 +01:00
chriseth
c5a0a434e2
Merge pull request #8374 from ethereum/writeAccessToSlot
Allow access to ``_slot`` for local storage pointer variables.
2020-02-25 22:11:13 +01:00
chriseth
40cae442d5 Fix re-printing value expectations. 2020-02-25 22:10:35 +01:00
Kamil Śliwak
e1b8b64f05 [yul-phaser] Population: Remove no longer used methods for running algorithm steps
- They have been superseded by objects from GeneticAlgorithms.h
2020-02-25 16:06:16 +01:00
cameel
67fbafab8f [yul-phaser] Add RandomAlgorithm 2020-02-25 16:06:16 +01:00
cameel
4665b7a7e4 [yul-phaser] Population: Add select() method 2020-02-25 15:25:16 +01:00
cameel
83b8ab8012 [yul-phaser] Add RangeSelection, MosaicSelection and RandomSelection classes 2020-02-25 15:25:16 +01:00
cameel
11bdf358df [yul-phaser] Base class for genetic algorithms 2020-02-25 15:25:16 +01:00
Kamil Śliwak
26bae6b459 [yul-phaser] Common: Add countSubstringOccurrences() 2020-02-25 15:25:16 +01:00
chriseth
45041e5d3a Allow access to `_slot` for local storage pointer variables. 2020-02-25 14:28:04 +01:00
Djordje Mijovic
8524e3f48d Standard-JSON-Interface: Fix a bug (#8371) related to empty filenames and imports. 2020-02-25 01:07:36 +01:00
Leonardo
44bcff42f5
Merge pull request #8161 from ethereum/yulTypeChecking
Yul type checking
2020-02-24 16:05:04 -03:00
Djordje Mijovic
c891597204 Adding ssa type check and test for that one 2020-02-24 15:05:19 +01:00
Djordje Mijovic
2efda4129b Adding test for multi return values including bool in evmTyped dialect. Calling zeroLiteralForType from inliner 2020-02-24 15:05:19 +01:00
chriseth
bddbcbe6a4 Use bool type in word size transform. 2020-02-24 15:05:19 +01:00
chriseth
a52305d3bd Use bool type in conditional simplifier and for loop condition into body. 2020-02-24 15:05:19 +01:00
Djordje Mijovic
a52c9af5b9 Adding vardecl optimization for boolean types 2020-02-24 15:05:19 +01:00
chriseth
b9b36cd89e Properly assign types in ExpressionSplitter. 2020-02-24 15:05:19 +01:00
chriseth
2ee748b7f5 Add tests 2020-02-24 15:05:19 +01:00
chriseth
9140bc52c4 Tests for invalid types. 2020-02-24 15:05:18 +01:00
chriseth
6eec968365 Test updates. 2020-02-24 15:05:18 +01:00
chriseth
449a8533ce
Merge pull request #8340 from mijovic/value-keyword-wei
TestFileParser: Adding keyword wei for expressing function call value
2020-02-24 15:01:15 +01:00
Djordje Mijovic
dd9009eba6 TestFileParser: Adding new keyword wei for expressing function value 2020-02-21 11:39:37 +01:00
cameel
2291cf78ac [yul-phaser] Population: Add constructors to Individual to simplify initialization 2020-02-19 17:26:34 +01:00
cameel
cef01c961a [yul-phaser] Population: Keep the individuals always sorted 2020-02-19 17:26:34 +01:00
cameel
76842ac3fd [yul-phaser] Population: Evaluate fitness immediately when an individual is added or modified
- This removes the explicit evaluation phase.
- Fitness is no longer optional in Individual
2020-02-19 17:26:34 +01:00
cameel
66fdc1c374 [yul-phaser] Population: Store fitness metric rather than program directly
- In the console app use ProgramSize metric when creating the population.
2020-02-19 17:03:35 +01:00
Kamil Śliwak
930a9918a6 [yul-phaser] ProgramSize: Add an option to repeat the optimisation sequence several times 2020-02-19 16:36:14 +01:00
Kamil Śliwak
751caf0ed3 [yul-phaser] Common: Add ChromosomeLengthMetric 2020-02-19 16:36:14 +01:00
cameel
2238919c76 [yul-phaser] Add ProgramSize metric 2020-02-19 16:36:14 +01:00
cameel
096129fbc4 [yul-phaser] Base class for fitness metrics 2020-02-19 16:36:14 +01:00
chriseth
357c936243
Merge pull request #8325 from imapp-pl/yul-phaser-population-tweaks
[yul-phaser] Miscellaneous Population tweaks and improvements
2020-02-19 12:35:10 +01:00
chriseth
8f2c5fc081
Merge pull request #8287 from a3d4/cmdlinetests-mingw
Adapted cmdlineTests.sh for MinGW
2020-02-19 11:50:24 +01:00
a3d4
4a29726f76 Adjusted solc path and fixed remapping tests in cmdlineTests.sh under mingw64. 2020-02-19 06:05:11 +01:00
cameel
d9c5e2dc9f [yul-phaser] Population: Add operator+() 2020-02-18 19:40:37 +01:00
Kamil Śliwak
ecb30c670f [yul-phaser] Population: Make ordering of individuals with same fitness deterministic and prioritise shorter chromosomes
- Before this change the order of chromosomes with the same fitness in a population depended on the initial order set when the population was first created. Now it only depends on the individual.
- The length comparison is not strictly necessary (lexicographical order covers that) but it makes the intention clear and the comparison slightly faster when chromosomes have different lengths.
2020-02-18 19:40:37 +01:00
Kamil Śliwak
40a6669538 [yul-phaser] Population: Extract a function for comparing fitness of individuals
- Mostly for readability and convenience. This significantly shortens calls to sort().
- I could define it as Individual::operator< instead but it would be inconsistent with operator== because it does not compare the chromosomes, only fitness. It could result in an unintuitive situation where (a <= b <= a) does not necessarily imply (a == b).
2020-02-18 19:40:37 +01:00
Kamil Śliwak
823e715902 [yul-phaser] Population+Chromosome: Better tests for makeRandom() 2020-02-18 19:40:37 +01:00
Kamil Śliwak
806891f494 [yul-phaser] Population: Customizable chromosome length in makeRandom() 2020-02-18 19:40:37 +01:00
Kamil Śliwak
e771f00971 [yul-phaser] Population: Extract Program construction in tests into a fixture 2020-02-18 19:38:55 +01:00
Kamil Śliwak
d22c59aa0e [yul-phaser] Chromosome: Add a constructor that reads steps from an abbreviation string 2020-02-18 19:38:55 +01:00
Kamil Śliwak
38f79a1761 [yul-phaser] Common: Add chromosomeLengths() 2020-02-18 19:38:55 +01:00
Kamil Śliwak
837ea96da7 [yul-phaser] Move stripWhitespace() from Program tests to Common 2020-02-18 19:38:55 +01:00
chriseth
c2e22d4cab
Merge pull request #8221 from ethereum/structured-docs-error-locations
[parser] Source locations for structured documentation errors
2020-02-18 14:57:28 +01:00
chriseth
64f9dc351e
Merge pull request #8337 from mijovic/assembly-multifile
Assembly: Added missing source field to legacy assembly json output
2020-02-18 12:47:19 +01:00
Djordje Mijovic
18dea6b69c Assembly: Added missing source field to legacy assembly json output to complete the source reference 2020-02-18 10:22:34 +01:00
Jason Cobb
6db0d50094
Don't use identifiers starting with an underscore followed by an uppercase letter 2020-02-17 12:44:39 -05:00
chriseth
2d1c4b770f
Merge pull request #8321 from ethereum/removeStackFromAsmAnalysis
Remove stack counting from Asm Analysis.
2020-02-17 14:32:17 +01:00
chriseth
c50631d4e2 Update tests. 2020-02-17 12:58:06 +01:00
chriseth
29e5cd89be Remove stack counting from Asm Analysis. 2020-02-17 12:58:05 +01:00
Kamil Śliwak
f29d3655f7 [yul-phaser] SimulationRNG: Add bernoulliTrial() 2020-02-16 02:18:21 +01:00
Kamil Śliwak
a8fa332a9c [yul-phaser] SimulationRNG: Rewrite uniformInt() and binomialInt() tests to rely on variance and expected value 2020-02-16 02:18:21 +01:00
Kamil Śliwak
db140a667a [yul-phaser] SimulationRNG: Use a single, shared and seedable generator 2020-02-16 02:18:21 +01:00
Kamil Śliwak
342a4e5dee [yul-phaser] Rename Random to SimulationRNG (fix references) 2020-02-16 02:18:21 +01:00
Kamil Śliwak
0d28d5a287 [yul-phaser] Rename Random to SimulationRNG (file move) 2020-02-16 02:18:21 +01:00
Kamil Śliwak
b01766c4db [yul-phaser] Gather functions from Random into SimulationRNG class 2020-02-16 02:18:21 +01:00
Kamil Śliwak
4ee9174454 [yul-phaser] Chromosome: Make randomOptimisationStep() public
- And add tests now that it's public.
2020-02-16 02:18:21 +01:00
Kamil Śliwak
46d69d0941 [yul-phaser] Common: Add enumerateOptimisationSteps() 2020-02-16 02:18:21 +01:00
Kamil Śliwak
957ca00588 [yul-phaser] Common: Add mean() and meanSquaredError() 2020-02-15 22:21:20 +01:00
Kamil Śliwak
94538efc0e [yul-phaser] Add a file for small utilities used in yul-phaser's tests 2020-02-15 22:21:20 +01:00
Kamil Śliwak
40b086774a [yul-phaser] Random: Fix tests allocating more counters than necessary
- The tests weren't broken, just less efficient.
2020-02-15 22:21:20 +01:00
Erik Kundt
017d33cfbe Fix typos in filenames within docstring syntax tests. 2020-02-14 15:53:39 +01:00
Erik Kundt
1d2e1c4f0a Adds command line test for structured doc errors. 2020-02-14 15:53:39 +01:00
Erik Kundt
85fc0b597b Adjusts tests to source locations for structured documentation errors. 2020-02-14 15:53:39 +01:00
chriseth
99f88742d6
Merge pull request #8263 from ethereum/functionSelectorPure
Mark function selectors accessed via declaration as pure.
2020-02-14 12:34:39 +01:00
Daniel Kirchner
9f094d59b9 Mark function selector accesses as pure for pure expressions and mark function accesses via contract name as pure. 2020-02-14 12:33:33 +01:00
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
Mathias L. Baumann
c635377450
Merge pull request #8313 from ethereum/checkFunctionsExistInIsoltest
Make type error fatal to prevent assert failure at later point
2020-02-13 16:08:13 +01:00
Mathias Baumann
8911b58a6d Make type error fatal to prevent assert failure at later point 2020-02-13 15:16:28 +01:00
Daniel Kirchner
7af581df1f
Merge pull request #8309 from ethereum/checkFunctionsExistInIsoltest
Check that functions exist in isoltest.
2020-02-13 14:29:58 +01:00
chriseth
9aed40ab19 Check that functions exist in isoltest. 2020-02-13 13:22:53 +01:00
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