69 Commits
Author SHA1 Message Date
chriseth 791fde953d First simplify switch with known constant expression. 2019-03-06 21:32:55 +01:00
chriseth 21115f8050 Fix visitation order bug for structural simplifier. 2019-03-06 19:34:07 +01:00
Mathias Baumann 21322dae29 YulOpt: Remove empty cases 2019-03-06 19:02:23 +01:00
Mathias Baumann 3ce7069766 YulOpt: Remove empty cases 2019-03-06 18:39:44 +01:00
Mathias Baumann f6e09d6368 YulOpt: Extend StructuralSimplifier to work with all types 2019-03-05 18:39:27 +01:00
chriseth 3f784d6e00 Do not prepend function name to all variables when inlining. 2019-03-04 18:07:00 +01:00
Christian Parpart 609855546e Yul: Adds optimizer pass to make variable names suffix-canonical. 2019-03-04 17:26:56 +01:00
Mathias Baumann c686a65876 Yul Optimizer: reduce switches with const arguments 2019-02-28 15:43:10 +01:00
chriseth 477c53a46f Fix expression simplifying by moving from SSAValueTracker to DataFlowAnalyzer as a base. 2019-02-27 16:14:39 +01:00
chriseth 83083d2208 Stack compressor. 2019-02-11 15:48:29 +01:00
chriseth 5a34743d88 Allow optimizer steps to run on FunctionDefinition and group suite. 2019-02-11 15:48:29 +01:00
chriseth 12e2187661 Some tuning. 2019-01-24 23:06:01 +01:00
Daniel Kirchner 29f66b2674 Stabilize SSAReverser. 2019-01-17 21:05:32 +01:00
Daniel Kirchner fd16585724 Undo second SSA transformation and add more tests. 2019-01-17 20:37:43 +01:00
Daniel Kirchner 6de2d92f20 Add SSAReverser to the yul optimiser. 2019-01-17 20:37:43 +01:00
Daniel Kirchner 81f24f24e6 Add equivalent function combiner as Yul optimizer step. 2019-01-15 17:21:03 +01:00
chriseth b7ef850955 Update tests. 2019-01-09 16:57:33 +01:00
chriseth 9244b8ea5a More code for optimizer tuning. 2019-01-08 18:07:14 +01:00
chriseth 5b8b016fae Use the block flattener. 2019-01-08 16:02:14 +01:00
chriseth 884d51c1f2 Merge pull request #5759 from ethereum/anotherBigTest
Another ABI test case for the optimizer.
2019-01-08 16:01:41 +01:00
chriseth 2d19903d1a Another ABI test case for the optimizer. 2019-01-08 15:14:45 +01:00
chriseth f5b24a38b8 Make function grouper idempotent. 2019-01-08 15:05:09 +01:00
chriseth 6414d63906 Merge pull request #5716 from ethereum/fixDataSizeOffset
Fix data size offset and properly provide builtins.
2019-01-08 00:07:42 +01:00
chriseth ace601b8f6 Tests. 2019-01-07 17:23:38 +01:00
chriseth b604b87272 Add AZTEK code as test. 2019-01-07 16:23:35 +01:00
chriseth 2e9c70add0 Use rematerializer if variable is unreferenced or value is "cheap". 2019-01-07 14:03:32 +01:00
chriseth bc22a25a60 Remove VarDeclPropagator. 2018-12-13 16:51:10 +01:00
chriseth 6c6a53a439 Do not create unassigned variables. 2018-12-13 16:51:10 +01:00
chriseth 11209ec48a Add variable declaration initializer. 2018-12-13 16:49:04 +01:00
chriseth b11d413720 Consider return variables to be zero initially. 2018-12-13 16:02:30 +01:00
chriseth 60a368244a Do not inline into already big functions. 2018-12-13 12:12:54 +01:00
chriseth 9557dd7e74 Support unassigned variables in the SSA value tracker and the data flow analyzer. 2018-12-12 18:06:28 +01:00
Daniel Kirchner 1eb60cbb39 Add structural simplifier as optimization step for Yul. 2018-12-06 18:37:35 +01:00
Mathias Baumann f4e9c70ecc Tests for SSAValueTracker ignoring function call on rhs 2018-12-05 18:01:41 +01:00
Mathias Baumann 5d31ad2daf Test for unhandled default values in expression simplifier 2018-12-05 11:43:02 +01:00
Daniel Kirchner 1b8a013d4a Properly recurse in ForLoopInitRewriter 2018-12-04 13:36:25 +01:00
Christian Parpart f705a45d43 [Yul] Implements a pass to rewrite for-loop's pre block into the parent's Block. 2018-11-16 13:15:41 +01:00
chriseth 2e025cf917 Update tests. 2018-11-13 13:33:33 +01:00
chriseth 9c6048b0b8 Merge pull request #5333 from ethereum/joinPerformance
[Yul] Use map join algorithm for performance.
2018-11-13 12:15:11 +01:00
Daniel Kirchner 74557ceb0e Deterministic YulStringRepository using string hashes. 2018-11-12 23:43:16 +01:00
chriseth b1454433b2 Remove variables that go out of scope from data structure. 2018-11-12 23:00:37 +01:00
chriseth faa7b61d76 Use map join algorithm for performance. 2018-11-12 23:00:37 +01:00
chriseth af65bac737 Remove trailing whitespace. 2018-11-12 09:15:22 +01:00
chriseth 5ea514213a Test case that shows that break/unbreak are more or less inverse. 2018-11-09 15:36:52 +01:00
chriseth fa44d20721 Remove side-effect-free statements. 2018-11-08 18:14:36 +01:00
chriseth cd11f7cfac Merge pull request #5325 from ethereum/fixDataFlow
[Yul] Fix data flow analyzer for function definitions.
2018-11-08 12:52:51 +01:00
chriseth 845899e305 Use single counter for name dispenser for performance reasons. 2018-11-07 23:09:33 +01:00
chriseth b2b11eaa00 Fix data flow analyzer for function definitions. 2018-11-07 20:32:55 +01:00
Christian Parpart f08ab77249 Yul: Implements empty-var-decl-propagation 2018-10-26 13:13:57 +02:00
chriseth 60f1d52f59 Full suite tests. 2018-10-24 18:02:08 +02:00