aboutsummaryrefslogtreecommitdiffstats
path: root/libyul
Commit message (Collapse)AuthorAgeFilesLines
* Stabilize SSAReverser.Daniel Kirchner2019-01-185-5/+49
|
* Undo second SSA transformation and add more tests.Daniel Kirchner2019-01-182-29/+74
|
* Add SSAReverser to the yul optimiser.Daniel Kirchner2019-01-184-3/+137
|
* libyul: changing some AST members from shared_ptr<> to unique_ptr<>Christian Parpart2019-01-1611-50/+68
| | | | | * Some spaces look a little more verbose now, but that shouln't be a problem as it also should raise readability, too. * This makes some use of return-value-optimizations also.
* Add equivalent function combiner as Yul optimizer step.Daniel Kirchner2019-01-1610-48/+441
|
* Disallow mismatching types in switch cases and detect duplicates by value ↵Daniel Kirchner2019-01-1513-26/+148
| | | | for number literals.
* Avoid explicit conversion from Block to Statement in CodeSize visit.Daniel Kirchner2019-01-111-1/+1
|
* Adjust inlining thresholds.chriseth2019-01-092-6/+10
|
* Variables are free with regards to code size.chriseth2019-01-092-3/+22
|
* Use the block flattener.chriseth2019-01-081-0/+8
|
* Make function grouper idempotent.chriseth2019-01-082-0/+18
|
* Take special functions that require literals into account.chriseth2019-01-0810-10/+51
|
* Make the dialect available everywhere.chriseth2019-01-0724-80/+151
|
* Use rematerializer if variable is unreferenced or value is "cheap".chriseth2019-01-075-4/+124
|
* make use of C++ `= default` constructor declarations as well as more ↵Christian Parpart2018-12-197-12/+12
| | | | non-static member initialization syntax.
* Merge pull request #5665 from ethereum/cmakeHeaderschriseth2018-12-181-0/+50
|\ | | | | Add headers to targets in CMakeLists.txt.
| * Add headers to targets in CMakeLists.txt.Daniel Kirchner2018-12-171-0/+50
| |
* | Merge pull request #5613 from ethereum/yulStringLiteralschriseth2018-12-177-10/+15
|\ \ | |/ |/| [Yul] Use C++ user-defined literals for creating YulString constants.
| * Use C++ user-defined literals for creating YulString constants.Daniel Kirchner2018-12-137-10/+15
| |
* | Remove VarDeclPropagator.chriseth2018-12-134-194/+0
| |
* | Do not create unassigned variables.chriseth2018-12-131-0/+4
| |
* | Add variable declaration initializer.chriseth2018-12-134-0/+97
| |
* | Consider return variables to be zero initially.chriseth2018-12-133-2/+15
| |
* | Merge pull request #5644 from ethereum/noInlineIntoLargechriseth2018-12-134-10/+31
|\ \ | | | | | | [Yul] Do not inline into already big functions.
| * | Do not inline into already big functions.chriseth2018-12-134-10/+31
| | |
* | | AsmPrinter functions should be const.chriseth2018-12-132-30/+30
|/ /
* | Merge pull request #5641 from ethereum/supportUnassignedchriseth2018-12-134-7/+15
|\ \ | |/ |/| [Yul] Support unassigned variables in the SSA value tracker and the data flow analyzer.
| * Support unassigned variables in the SSA value tracker and the data flow ↵chriseth2018-12-134-7/+15
| | | | | | | | analyzer.
* | Add missing header guardsAlex Beregszaszi2018-12-122-0/+3
|/
* Fix compilation for certain combinations of boost and gcc.Daniel Kirchner2018-12-121-1/+1
|
* Codegen for object access.chriseth2018-12-1214-146/+328
|
* Provide Dialect to EVMCodeTransform.chriseth2018-12-124-14/+15
|
* Reuse stack slots in Yul to EVM code generation.liangdzou2018-12-107-48/+302
|
* Merge pull request #5607 from enumatech/fix-makefileschriseth2018-12-071-1/+1
|\ | | | | WIP: Fix makefiles to silence linker errors
| * Fix makefilesLionello Lunesu2018-12-071-1/+1
| |
* | Add structural simplifier as optimization step for Yul.Daniel Kirchner2018-12-077-4/+205
| |
* | Merge pull request #5587 from ethereum/yulCodeBuiltinschriseth2018-12-063-0/+78
|\ \ | | | | | | Builtin functions to access Yul objects.
| * | Provide Yul Object builtins.chriseth2018-12-043-0/+78
| | |
* | | Analyze and compile sub-objects.chriseth2018-12-063-0/+99
| | |
* | | Extend abstract assembly to be able to handle sub-objects.chriseth2018-12-063-0/+35
| | |
* | | SSAValueTracker should only use nullptr for default valuesMathias Baumann2018-12-062-1/+3
| | |
* | | Merge pull request #5593 from ethereum/issue-5384chriseth2018-12-061-1/+2
|\ \ \ | | | | | | | | Fix expression simplifier asserting on default values
| * | | Fix expression simplifier asserting on default valuesMathias Baumann2018-12-051-1/+2
| | | |
* | | | Merge pull request #5594 from ethereum/fullInlinerNoHoisterchriseth2018-12-052-13/+23
|\ \ \ \ | | | | | | | | | | [Yul] Relax dependency of FullInliner on FunctionHoister.
| * | | | Relax dependency of FullInliner on FunctionHoister.Daniel Kirchner2018-12-052-13/+23
| |/ / /
* / / / Relax assertion about jumps in loose modeMathias Baumann2018-12-051-1/+3
|/ / /
* | | Merge pull request #5586 from ethereum/refactorEVMAssemblychriseth2018-12-043-218/+0
|\ \ \ | |/ / |/| | Refactor evm assembly
| * | Move AsmCodeGen.chriseth2018-12-043-218/+0
| | |
* | | Builtin functions for yul analysis.chriseth2018-12-041-1/+7
| | |
* | | Use builtin functions in the yul parser.chriseth2018-12-041-4/+12
|/ /
* | Merge pull request #5573 from ethereum/builtinschriseth2018-12-048-41/+120
|\ \ | | | | | | [Yul] Introduce the concept of builtin functions.
| * | Introduce the concept of builtin functions.chriseth2018-12-048-41/+120
| | |
* | | Properly recurse in ForLoopInitRewriterDaniel Kirchner2018-12-041-2/+9
|/ /
* | Improve yul error messages around number of arguments and variables.chriseth2018-12-041-9/+20
| |
* | Use YulString also in expectAsmIdentifier.chriseth2018-12-042-16/+16
|/
* liblangutil: SourceLocation: adds (shared) pointer to underlying CharStream ↵Christian Parpart2018-12-011-3/+3
| | | | | | source, eliminating sourceName Also, adapted affecting code to those changes.
* Yul objects.chriseth2018-11-275-0/+353
|
* Remove superfluous libyul/ASTDataForward.h and include libyul/AsmDataForward ↵Christian Parpart2018-11-2322-46/+21
| | | | directly instead.
* Isolating libyul library API into its own namespace `yul`.Christian Parpart2018-11-2385-452/+248
|
* CMake: Isolate libyul into its own static libraryChristian Parpart2018-11-231-0/+43
|
* Reorder some include files and group <libyul/>'s together (as much as possible)Christian Parpart2018-11-2329-35/+7
|
* Rewrite header paths to adapt to recent `git mv` of libsolidity/inlineasm to ↵Christian Parpart2018-11-2351-70/+70
| | | | libyul
* Moving files from libsolidity/inlineasm/*.{cpp,h} to libyul/.Christian Parpart2018-11-2316-0/+2726
|
* Introduce namespace `langutil` in liblangutil directory.Christian Parpart2018-11-227-4/+17
| | | | | | | Also: - Use {}-style list initialisation for SourceLocation construction - Introduce new system includes - Changes the API of the Scanner to take source as value (with move) as opposed to as a reference
* Isolating files shared between Yul- and Solidity language frontend.Christian Parpart2018-11-223-3/+3
|
* Merge pull request #5444 from Mordax/issue-5168-rmvirtualAlex Beregszaszi2018-11-2116-73/+73
|\ | | | | Removing redundant virtual from override function declaration
| * Removing redundant virtual from override function declarationmordax2018-11-2116-73/+73
| | | | | | | | | | | | Remove trailing whitespace Remove changelog change
* | [Yul] Implements a pass to rewrite for-loop's pre block into the parent's Block.Christian Parpart2018-11-163-0/+84
|/
* Merge pull request #5333 from ethereum/joinPerformancechriseth2018-11-132-20/+64
|\ | | | | [Yul] Use map join algorithm for performance.
| * Remove variables that go out of scope from data structure.chriseth2018-11-132-10/+29
| |
| * Use map join algorithm for performance.chriseth2018-11-132-10/+35
| |
* | Deterministic YulStringRepository using string hashes.Daniel Kirchner2018-11-131-32/+61
|/
* Reset yul string repository.chriseth2018-11-091-2/+10
|
* Remove side-effect-free statements.chriseth2018-11-093-4/+14
|
* Merge pull request #5325 from ethereum/fixDataFlowchriseth2018-11-081-0/+13
|\ | | | | [Yul] Fix data flow analyzer for function definitions.
| * Fix data flow analyzer for function definitions.chriseth2018-11-081-0/+13
| |
* | Merge pull request #5365 from ethereum/improveNameDispenserchriseth2018-11-082-3/+3
|\ \ | | | | | | [Yul] Use single counter for name dispenser for performance reasons.
| * | Use single counter for name dispenser for performance reasons.chriseth2018-11-082-3/+3
| |/
* / Add VarDeclPropagator to full suite and interactive optimizer.chriseth2018-11-081-0/+7
|/
* Performance: Replace string by special single-copy YulString class.chriseth2018-11-0847-175/+271
|
* Eliminate `byte`-typedef and use `uint8_t` in all their places instead.Christian Parpart2018-11-072-10/+10
| | | | | | | | | | | This change is made to (easily) be forward compatible with future C++ standards, in order to allow compiling the code with newer standards at some point in the future. * Removed the `using byte = uint8_t;` line from Common.h * Mechanically change all uses of `byte` to `uint8_t`. Tested with GCC 7.3 in C++11/14/17 modes :-)
* Merge pull request #5247 from ethereum/yul-vardecl-propagationchriseth2018-10-293-0/+197
|\ | | | | Yul: Implements empty-var-decl-propagation
| * Yul: Implements empty-var-decl-propagationChristian Parpart2018-10-263-0/+197
| |
* | [Yul] ExpressionJoiner: code cleanupChristian Parpart2018-10-262-36/+20
|/ | | | | | | | | * ensure public API is only containing `run(Block&)`, all the rest is private API / implementation details * adding some comments to class data members to quicker understand their meaning * eliminate unnecessary `operator()(If&)` as it's not changing default behaviour of `ASTModifier` * simplify readability of `visit(Expression&)`'s impl, also moving assert's into "isLatestStatementVarDeclOf", as this one is already ensuring exactly that. * ctor impl's use of ReferenceCounter use shortened. * renamed and improved `isLatestStatementVarDeclOf` to better match its meaning (especially since it's only used once)
* Merge pull request #5242 from ethereum/someCheckschriseth2018-10-251-0/+1
|\ | | | | Some well-formedness checks for the Yul AST.
| * Some well-formedness checks for the Yul AST.chriseth2018-10-221-0/+1
| |
* | Full suite tests.chriseth2018-10-252-0/+168
| |
* | Redundant assign eliminator.chriseth2018-10-242-0/+378
|/
* Merge pull request #5267 from ethereum/ssatransformchriseth2018-10-192-0/+228
|\ | | | | SSA transform - first step.
| * SSA transform - first step.chriseth2018-10-192-0/+228
| |
* | Merge pull request #5270 from ethereum/inlineFlexiblechriseth2018-10-192-12/+11
|\ \ | | | | | | Make full inliner more flexible.
| * | Make full inliner more flexible.chriseth2018-10-182-12/+11
| |/
* / Fix a bug in CSE where a variable that was already out of scope was used.chriseth2018-10-184-23/+34
|/
* Merge pull request #5240 from ethereum/limitDispenserSizechriseth2018-10-185-19/+57
|\ | | | | [Yul] Limit name length created by dispenser
| * Limit size of generated names and add convenience constructors.chriseth2018-10-175-19/+57
| |
* | Merge pull request #5232 from ethereum/inlineHeuristicchriseth2018-10-174-8/+73
|\ \ | |/ |/| [Yul] Add simple inlining heuristic
| * Use metrics in the full inliner.chriseth2018-10-174-8/+73
| |
* | Handle externally supplied variables correctly in disambiguator.chriseth2018-10-172-3/+12
| |
* | Prevent externally used functions from being removed.chriseth2018-10-172-5/+7
|/
* Inline each function separately.chriseth2018-10-162-28/+13
|
* New full inliner.chriseth2018-10-162-197/+102
|
* New simplifier via broken expressions.chriseth2018-10-164-15/+73
|
* SSA value tracker.chriseth2018-10-162-0/+111
|
* Yul: Introduces a block flattening pass + testsChristian Parpart2018-10-162-0/+75
|
* Some renaming leftovers.chriseth2018-10-152-3/+3
|
* Renaming namespace dev::julia to dev::yul.Christian Parpart2018-10-1555-60/+60
|
* Renaming libjulia to libyulChristian Parpart2018-10-1556-0/+5418