Commit Graph
100 Commits
Author SHA1 Message Date
Daniel Kirchner 3d26d47d46 Merge pull request #11525 from ethereum/yulControlFlowGraph
Yul control flow graph (OptimizedEVMCodeTransform Step 1)
2021-07-15 16:03:39 +02:00
Daniel Kirchner f3707f2ab0 Control flow graph for Yul. 2021-07-15 15:24:12 +02:00
Daniel Kirchner 0a6fc89da2 Fix negation function name collision. 2021-07-08 10:47:29 +02:00
Daniel Kirchner c341445f8e Maintain disambiguation when generating new functions in StackToMemoryMover. 2021-06-28 18:11:57 +02:00
Daniel Kirchner 17d69e2b99 Changelog entries. 2021-06-28 18:11:57 +02:00
Daniel Kirchner bc288aacf5 Have the stack optimization in the code transform only reuse slots that are reachable and fix argument slot reuse on functions without return variables. 2021-06-28 18:11:57 +02:00
Daniel Kirchner dfce7b667d Move function arguments and return values. 2021-06-28 18:11:57 +02:00
Daniel Kirchner cc0169ad68 Function definition collector. 2021-06-28 18:11:57 +02:00
Daniel Kirchner 98e7b61a37 Merge pull request #11510 from ethereum/removeNondeterministicTest
Remove potentially non-deterministic test case.
2021-06-09 15:42:08 +02:00
Daniel Kirchner 284e8a103f Remove potentially non-deterministic test case. 2021-06-09 14:42:16 +02:00
Daniel Kirchner 1638b21072 Merge pull request #11485 from ethereum/changelogForMod
Changelog entry for modifier fix.
2021-06-03 23:25:56 +02:00
Daniel Kirchner 9be57546db Merge pull request #11470 from ethereum/cacheVirtualLookup
Cache functions by name.
2021-06-03 11:51:08 +02:00
Daniel Kirchner 324caef53c Merge pull request #11286 from ethereum/evmc8
Upgrade to EVMC 8.0.0 + evmone 0.7.0
2021-05-13 18:32:01 +02:00
Daniel Kirchner 3494476abd Merge pull request #11372 from ethereum/evmc8DockerImages
Update evmone and boost download links in docker images.
2021-05-13 18:31:52 +02:00
Daniel Kirchner 7073198adb Update docker image hashes in CircleCI config. 2021-05-12 16:56:23 +02:00
Daniel Kirchner 98e2b4e5ed Merge pull request #11374 from ethereum/semanticTestVMLoadingAndFailures
Change loading of VMs and error messages during test.
2021-05-12 16:47:16 +02:00
Daniel Kirchner 06a9199967 Change loading of VMs and error messages during test. 2021-05-12 14:48:37 +02:00
Daniel Kirchner c7f321c12d Update evmone and boost download links in docker images. 2021-05-10 13:25:39 +02:00
Daniel Kirchner 5e8abec3e9 Merge pull request #11370 from ethereum/fixWindowsBuilds
Change windows boost binary download URL.
2021-05-10 12:20:40 +02:00
Daniel Kirchner 452c17c15e Change windows boost binary download URL. 2021-05-10 11:30:11 +02:00
Daniel Kirchner 5d070c5bc2 Merge pull request #11357 from ethereum/rangesImport
Remove more imports of ranges namespace.
2021-05-07 16:21:20 +02:00
Daniel Kirchner 6104ac1cdf Remove more imports of ranges namespace. 2021-05-07 15:42:17 +02:00
Daniel Kirchner c69add1682 Remove import of ranges namespace. 2021-05-07 13:44:14 +02:00
Daniel Kirchner f9b23ca845 Merge pull request #11247 from ethereum/setValueForCurrentScopeHelper
Add SetValueForCurrentScope helper.
2021-04-16 12:42:25 +02:00
Daniel Kirchner afae46dcb5 Add ScopedSaveAndRestore helper. 2021-04-16 10:56:56 +02:00
Daniel Kirchner cb85285ac6 Merge pull request #11258 from ethereum/less-verbose-bytecode-comparison-output-in-ci
Less verbose bytecode comparison output in CI
2021-04-16 10:22:51 +02:00
Daniel Kirchner 5bebbca273 Extract VariableReferenceCounter and StackTooDeep error from EVMCodeTransform. 2021-04-13 10:41:16 +02:00
Daniel Kirchner 6fdfd8b62b Fix import path grammar and grammar testing details. 2021-04-12 14:54:36 +02:00
Daniel Kirchner 96c8123b6b Use unbounded allocation before returning. 2021-04-08 18:37:24 +02:00
Daniel Kirchner 6fc4b04d1d Update test expectations. 2021-04-06 13:41:26 +02:00
Daniel Kirchner 35c2eeab68 Restrict to only popping, but not reusing argument slots, as well as only freeing up until the return slots are allocated. 2021-04-06 13:38:06 +02:00
Daniel Kirchner 4b0f8383a6 Reuse function argument slots and defer allocation of return variable slots in EVMCodeTransform. 2021-04-06 13:38:05 +02:00
Daniel Kirchner 04a051d380 Add test cases for return slot allocation. 2021-04-06 13:31:22 +02:00
Daniel Kirchner 8b3095920a Inline ordinary jumps to small blocks and jumps to terminating control flow. 2021-03-24 13:50:24 +01:00
Daniel Kirchner 7170c8ac60 Merge pull request #11109 from ethereum/inlinerHeuristicsFix
Fix small bug in inliner heuristics.
2021-03-16 14:09:26 +01:00
Daniel Kirchner d5281877cc Fix inliner heuristics. 2021-03-15 20:31:56 +01:00
Daniel Kirchner 8f56c6ad5c Add missing header to Algorithms.h. 2021-03-15 13:50:24 +01:00
Daniel Kirchner 1265b39904 Merge pull request #11095 from ethereum/fixGcc8
Fix compilation error with GCC 8.
2021-03-12 13:25:25 +01:00
Daniel Kirchner 6d19a25705 Fix compilation error with GCC 8. 2021-03-12 12:28:18 +01:00
Daniel Kirchner a75424eec4 Drop support for evm15 and eip-615. 2021-03-09 15:56:03 +01:00
Daniel Kirchner e99da7e015 Extract StackReuseCodegen tests. 2021-03-09 15:47:24 +01:00
Daniel Kirchner acd3084076 Fuzzer for stack optimiser/code generator. 2021-03-04 17:35:56 +01:00
Daniel Kirchner 5a59fde073 Documentation of the inliner in the old optimizer. 2021-02-10 09:14:05 +01:00
Daniel Kirchner cb74a45fd6 Add inlining for old optimizer. 2021-02-09 19:08:58 +01:00
Daniel Kirchner 8a414d3fab Merge pull request #10838 from ethereum/solc-bin-bytecode-comparison-pr-check-scripts
Bytecode comparison PR scripts for solc-bin
2021-02-04 11:40:56 +01:00
Daniel Kirchner 5faefdea65 Merge pull request #10893 from ethereum/string2BytesSol2Yul
[Sol->Yul] Fixing string calldata to bytes calldata conversion.
2021-02-04 10:33:40 +01:00
Daniel Kirchner 9bf88d5459 Merge pull request #10791 from ethereum/committer-date-in-prerelease-txt-on-windows
Use committer date in CI build version strings on Windows
2021-01-15 20:12:04 +01:00
Daniel Kirchner cee8ae75c8 Set default build type, if none was specified. 2021-01-14 10:22:50 +01:00
Daniel Kirchner f34d7120a2 Add and use mapTuple helper. 2021-01-13 17:23:27 +01:00
Daniel Kirchner b5bb802a93 Fix undefined behaviour on 32-bit platforms in swarm hash. 2021-01-13 15:52:58 +01:00
Daniel Kirchner 91cdb606a5 Some style review suggestions. 2021-01-13 12:43:38 +01:00
Daniel Kirchner 804bd8f6dd Switch to new emscripten docker image. 2021-01-13 02:22:09 +01:00
Daniel Kirchner 10c742ed0a Update emscripten build to be compatible with new docker image. 2021-01-13 01:09:34 +01:00
Daniel Kirchner d0c8c79888 Update emscripten docker image to be based on emscripten 2.0.12 and boost 1.75.0. 2021-01-13 00:33:03 +01:00
Daniel Kirchner 4505889481 Replace ranges::all_of wrapper by range-v3. 2021-01-12 21:44:42 +01:00
Daniel Kirchner 75bed10be5 Check for scopes in LoadResolver. 2021-01-12 21:41:51 +01:00
Daniel Kirchner eb035147d2 Rephrase erasure condition in DataFlowAnalyzer. 2021-01-12 21:40:52 +01:00
Daniel Kirchner 3ed55613ba Add and use cxx20::ranges::all_of. 2021-01-12 21:40:52 +01:00
Daniel Kirchner 970e8064bb Clear variables, but not backreferences in popScope. 2021-01-12 21:40:52 +01:00
Daniel Kirchner 7fe03cbab0 Implement cxx20 polyfill and replace InvertibleMap entirely. 2021-01-12 21:40:40 +01:00
Daniel Kirchner 625d402dbb Various optimizations for the DataFlowAnalyzer. 2021-01-12 21:39:20 +01:00
Daniel Kirchner 162b1508da Merge pull request #10744 from ethereum/useDropEx
Use drop_exactly.
2021-01-12 17:11:54 +01:00
Daniel Kirchner f5adaa8bbb Add valueOrNullptr and valueOrDefault utilities. 2021-01-12 13:13:03 +01:00
Daniel Kirchner eac2bcf72f Add range-v3. 2021-01-11 18:44:55 +01:00
Daniel Kirchner 308549f950 Simplify test and add Changelog entry. 2021-01-06 11:33:08 +01:00
Daniel Kirchner 0a923f02f6 Allow /build to be a symlink in .gitignore. 2021-01-06 10:34:18 +01:00
Daniel Kirchner bac07612bf Extend .gitignore to all CLion build directory names. 2021-01-06 10:29:32 +01:00
Daniel Kirchner 1afdfc2c84 Build solidity-upgrade and yul-phaser statically on static PPA builds. 2020-12-17 16:09:23 +01:00
Daniel Kirchner dc5f7a7405 Merge pull request #10448 from ethereum/fixedhash
Add comprehensive tests for FixedHash
2020-12-11 15:31:20 +01:00
Daniel Kirchner 8db2cad45c Merge pull request #10555 from ethereum/address-code
[BREAKING] Introduce address(...).code
2020-12-11 12:34:20 +01:00
Daniel Kirchner 90c693be09 Merge pull request #10568 from ethereum/oldClangFixes
Deal with old clang compilers.
2020-12-10 20:03:51 +01:00
Daniel Kirchner 4cb9a42d9a Verify minimal clang version in cmake. 2020-12-10 17:40:29 +01:00
Daniel Kirchner c400c61fc3 Fix incorrect behaviour on clang 6. 2020-12-10 17:20:30 +01:00
Daniel Kirchner 7308abc084 Allow loading Z3 dynamically at runtime. 2020-12-10 16:47:47 +01:00
Daniel Kirchner 2e31a6bdbf Switch CI runs from EOL'ed eoan to focal. 2020-12-10 11:09:55 +01:00
Daniel Kirchner 588535566f Mark chainid as view. 2020-12-09 16:55:51 +01:00
Daniel Kirchner e691b7402a Move standard-json "modelCheckerSettings" key to "settings.modelChecker". 2020-12-09 15:53:32 +01:00
Daniel Kirchner 4368a3b3eb Merge pull request #10462 from ethereum/scanner-old-escapes
[BREAKING] Remove the \b, \f, \v escape sequences from the Scanner
2020-12-07 23:40:21 +01:00
Daniel Kirchner 2e6693c849 Update version checks in cmake to match debian stable and remove some workarounds. 2020-12-07 18:26:51 +01:00
Daniel Kirchner 1b88a8c845 Update compiler version requirements in the docs. 2020-12-07 18:26:51 +01:00
Daniel Kirchner a3a5d93b34 Drop direct support for Ubuntu 18.04 and switch to static PPA releases for it. 2020-12-07 18:18:41 +01:00
Daniel Kirchner 6c70208d5f Merge pull request #10359 from ethereum/extra-semi
Enable the -Wextra-semi warning
2020-12-07 14:35:30 +01:00
Daniel Kirchner c996d74041 Merge pull request #10503 from ethereum/irBreakingChangesMinorFix
Rephrase detail in ir breaking changes docs.
2020-12-07 12:35:41 +01:00
Daniel Kirchner 804e98a136 Rephrase. 2020-12-07 11:29:09 +01:00
Daniel Kirchner c39a5e2b7a Fix accidental repetition in ir breaking changes docs. 2020-12-07 11:24:13 +01:00
Daniel Kirchner f456d939af Merge pull request #10501 from ethereum/bytecode-comparison-on-nodejs-14
Upgrade bytecode comparison container to node.js 14
2020-12-07 10:40:04 +01:00
Daniel Kirchner 06bca65222 Merge pull request #10321 from ethereum/reimplementConstantEvaluator
Reimplement constant evaluator.
2020-12-04 16:31:31 +01:00
Daniel Kirchner cb72d76aaf Add const ref to prevent segfaults. 2020-12-04 14:57:46 +01:00
Daniel Kirchner 96a50b52e2 Add storage load/store functions to Yul dialect. 2020-12-03 19:10:05 +01:00
Daniel Kirchner 6aae7caec8 Merge pull request #10051 from ethereum/contractArrayTypeStatement
Allow arrays of contract types as type expressions e.g. for abi.decode.
2020-10-18 15:32:57 +02:00
Daniel Kirchner 79d9a1ca81 Tests for abi.encode. 2020-10-16 20:24:43 +02:00
Daniel Kirchner e06d4303fb Semantic tests. 2020-10-16 19:40:41 +02:00
Daniel Kirchner 909ce9164a Allow arrays of contract types as type expressions e.g. for abi.decode. 2020-10-16 19:40:41 +02:00
Daniel Kirchner db4dd51739 Merge pull request #10055 from ethereum/userDefinedLibraryTypes
Disallow invalid use of library names as type names.
2020-10-16 18:55:42 +02:00
Daniel Kirchner 3f14c904b0 Disallow invalid use of library names as type names. 2020-10-16 18:25:08 +02:00
Daniel Kirchner 23314fc96c Merge pull request #10054 from ethereum/windowsBuilds
Fix windows builds.
2020-10-16 12:33:20 +02:00
Daniel Kirchner 8e42015dd3 Fix windows builds. 2020-10-16 11:48:50 +02:00
Daniel Kirchner 9aafb62e52 Merge pull request #10050 from ethereum/circleWinTestResults
Store test results on CircleCI's t_win for proper reporting.
2020-10-15 20:40:37 +02:00
Daniel Kirchner e91baeef37 Store test results on CircleCI's t_win for proper reporting. 2020-10-15 19:11:17 +02:00
Daniel Kirchner 41000fea31 Merge pull request #10031 from ethereum/setImmutableArgument
Add another argument to setimmutable and the AssignImmutable opcode, allowing to modify code at any memory offset.
2020-10-15 18:37:21 +02:00